アーカイブ

2009年4月 のアーカイブ

青梅丘陵トレイル

かくも辛く困難な人生がこの先これだけ残っているのならばいっそ今ここで終わらせてしまいたい、などと絶望し、この世に生をうけたことへの怨念をつのらせたことくらいは誰しもあるでしょう。あるですか?ありますですよね。はじめて私がそんな絶望感を抱いたのは小学生のときのマラソン大会。苦しい、苦しいのになぜ走るのか、走らないといけないのか、もうやめちゃえよ、歩けばいいじゃん、いやでもやめちゃうのか?それは逃げじゃないのか?と自問自答で悶々としつつ、ふらつきながらも交互に片足を前に出して行く。そうしているうちに「あと○km」とかいう看板が眼に入り絶望のドンゾコにたたき落とされるわけでありますよ。誰を責めるわけでもなく、何かのせいにするわけでもなく、ただ我が身の運命を呪い、この世界において自分が絶対的に無力な存在であることを受け入れるしかないわけであります。

そんなトラウマを抱えながら、払拭されぬまま今まで生きてきました私ですよ、はい。

昨今、ハイキングなるものをはじめてから知ったのですが、この世には山を走るトレイルランナーなる変態が若干ながら存在するらしいと。変態とは何か、それは尋常ならざる性的志向の持ち主であります。一般人にはただただ苦行でしかない行為に快楽を覚えるトレイルランナーなるものは変態以外の何ものでもないわけであります。

と、いままでは我が脳内辞書からトレイルランなるワードは削除して例外扱いしてきたのですが、やはり否定するからにはそれがどんなものか知っておかねばなるまいと。いやむしろ、もしかしたら万が一、幼少のトラウマを払拭して新たな快楽への目覚めをもたらしてくれるのではなかろうか、いずれはハセツネなるものに出場してRoadmanをぶっちぎって優勝することだって僕にもありうるのではなかろうか、などというかすかな期待も交えつつ、

前置きが長くなりましたが行ってきましたトレイルラン。

今仕事でおつきあいのある方が実はランナーで、地元の走る会の方々と一緒に水曜日に高水山にトレイルランに行くというのでついていってみました。青梅駅から丘陵コースを抜けて高水山まで上がるルート。

朝4時に起き、青梅駅についたのは7時前。眠い、眠いっす。早起きは体に悪いと思うのは僕だけだろうか。とにかく早朝スタートで走り出します。グループはかなり年配の方々が中心で15名。なるべく一塊になって走るという方針だからか、わりとゆっくりめのスピードだったのでなんとか後ろのほうにくっついていきます。

最初はかなり息苦しく、ゼハゼハ言いながらなんとかついていきましたよ。でも1-2km走るとなんか楽にペースを維持できるようになってきた気がします。!!これはセカンドウィンド!?僕にはアスリートとしての隠された才能が眠っていたのか!?などと妄想しつつ、でも徐々に登りがでてきてこれはかなりきつくペースを落とします。みなさん登りではゆっくりになるのでそれに合わせる。

天気良く景色良好なので、止まって木陰で寝っころがったり、ゆっくり歩きたいなぁという誘惑にかられつつ、でも集団なのでついていきます。たぶん一人だったら走り続けることは困難でしょう。

何kmくらいだったのだろうか、雷電山のあたりで左足がぴりっとつりそうになり、高水山への入り口の水飲み場の手前で今度は右足がぴりっとしたところで本日は終了。そのまま軍畑駅までエスケープしました。総距離は?10kmくらいはあったのでしょうか?

水飲み場でみなさんを見送る。あぁいい天気だ。

IMG_0006.JPG

結論としては、うーむ。楽しい気はしないでもないかもしれないようなこともなきにしもあらず。

しかし体を作っていくための練習コストがバカにならないうえにおそらく一人では走り続けようとする鋼の意思はたぶん持ちえないんじゃないかと。

まぁまずは一日体験終了ということで。

買い物しすぎると怒られるので最近は寄り付かなくなったアウトドアショップ、この日は帰りにODBOXに行って見てきましたよNeoAir。買うならRegularだろと思ってましたけどね、手にもって見るとやはり重量感あります。Shortはさすがに軽い!でもわりと厚みのあるマットで足や頭が出ると寝苦しい気もするし、だったら今のものでもいいじゃんという気がする。どこか寝転がれるサンプルを置いてあるところはないですかねぇ。

カテゴリー:Outdoor, run タグ:,

ひとりデスマーチ

懸案のiPhoneアプリの制作は、プログラム部分は8割ほど完成しつつもコンテンツとデザイン周りの整備がだいぶ残っててその作業はまだ骨が折れそう。ていうかAppStoreに登録する手続きがまた大変だとかなんだとか。いずれにしろSDK3.0ベースだからリリースできるのは6月以降なのでまぁぼちぼち進めてるんだけど、そうこうしているうちにGWはすっかり何の予定もなく、いくつかお誘いがありつつも、どうしようかなぁと・・・。ていうか孤高のソロハイカー(笑)のつもりだったんですけど今年はパーティー志向に転向かもしれない。

お休みに遊びにいくためにも、どうすれば効率的にソフトウェアを作れるのかが今の最大の関心事。ていうか基本の骨組み部分は本来は一夜のうちに作ってしまいたい。

そもそもプログラミングがソフトウェアの品質にとって重要になるのは、パフォーマンスチューニングしたり独自のアルゴリズムを実装したりとかしなければいけないときだけで、そうでなければあまりプログラミング自体に手間をかけずサクッと作れることが理想なんだよなぁと。むしろインターフェースや導線の設計、ユーザビリティ、コンテンツの精査なんかのほうがよっぽど重要でそっちに力を入れたい。ていうかプログラミングの腕ではそもそも勝負できないからそういうものは作らないし。

以下、いくつか疑問点。

・ウォーターフォールか?プロトタイピングか?

頭のなかで実現したい方向性は見えていて、でも細かい仕様は漠然としてるんだけど、だいたいのイメージを持ってから作りはじめる。で、大抵は何度も一から作り直すはめになるorz。実際に画面に表示して操作してみるとやっぱりこうすればいいじゃんとか、ここは不自然だなとか、いろいろ出てくる。データモデルもテストデータの段階で想定していたものから違ってくることも多いし、技術上のハードルなんかも想定していなかったものがボロボロ出てきたり、そうこうしているうちにコードが荒れてきて全面的に土台部分から設計見直しを余儀なくされると。

じゃあ最初からかっちり仕様を固めて、細部の画面設計まで落としてから作り始めるか?というとそんなヒマがあったらコードを書いてプロトタイプ動かしながらあれこれ悩んだ方が早いわというか、どうせ一人なんだしとかって思ってしまう。

じゃあ仕様の不確実性を見越して、最初からかなり抽象度の高い設計にしておけばいいんじゃね?とかやってると、コードが複雑になって可読性も悪くなり、扱うファイルもどんどん増えていって手に負えなくなる。ひとりデスマーチなんかしゃれにならんわけで。

・抽象化か?ハードコーディングか?

あらゆるものはオブジェクトであるとかなんとかいってクラス作りまくってサブクラスのサブクラスとかどんどん増えていくクラスバブルに陥るのは愚行だとして、じゃあ一つの汎用的なクラスでif文で分岐させてグリグリとハードコーディングしていくべきなのかというとそれも醜いわけで。どこで抽象化の断を下すのか、それもある程度進んでみないとわからない。やはり最初は手っ取り早くハードコーディングしてまずはモノを動かしつつ、ある程度仕様が固まってきた段階で全面的にリファクタリングをかけてデザインパターンを整備していくんだけど、なんだかムダというか面倒だというか、最初からDRYなコードを書ければ手間も減るんじゃないかとか。

イメージが漠然とした段階から一発で最適なクラス設計ができればいいんだけど、とはいえそうすると最初から設計が構造化されてコードが分散してプロトタイプを初動するまでのコーディング量が増えるからいきなり連結テスト?みたいなことになって崩壊してしまうんじゃないかと。モジュールごとに単体テストしながらとかできればいいんだけどGUI型のイベント駆動のアプリケーションってそういうのどうやるの?ていうかテスト駆動でモジュールごとにちまちま作っていくのが苛立たしいというか性に合わないというか、画面にバーンと表示してくれないとモチベーションが上がらないというか、やはりエンジニアじゃないので、バラバラのモジュールからボトムアップしていく思考体系というよりかは最終的なのUIから発想していく作り方にならざるをえないんだよなぁと。で、一足飛びにUIに到達するにはハードコーディングせざるをえないというジレンマ。

・マイライブラリをどこまで作る?

言語やフレームワークの仕様に絶望して、マイライブラリなんかで拡張整備しはじめると泥沼にハマっていくというか。しかも自分で作ったライブラリの仕様は翌日には忘れてるわけで二度と再利用されなかったり、ドキュメントなんかも残さないし。でもとはいえObjective-Cはあんまりだというか、配列扱うのにfor文を何度も何度もぐりぐり書かないといけないのは耐えられないので、NSArrayにRubyで言うところのfind、map、select、reverse、uniqなんかのメソッドは追加してみたりして、これでループは8割方削減されたのは良しとして、これに味をしめてライブラリ作りに精を出しはじめたりするともう二度と戻って来れなくなるアワワ恐ろしや。。。

・言語とフレームワークの仕様はどこまで把握すべきか?

これを全て把握しておけば早くはなると思うけど、それはどだいムリというもの。そんなものに分けてやる脳内スペースはない!もうここに関してはいかに素早く調査するかという能力が重要というか。でもとはいえある程度は知っておけば有用だとか言って、ポインタのポインタとは何ぞやとか、関数型マクロがどうとか、C言語教書を読みふけりはじめると本来の目的を忘れて心神喪失への道をまっしぐらなわけで。

・名付けの問題

クラスやメソッドに最適な名前をつけるのが本当に難しい。Javaあたりでよく見かけるような冗長な名前付けは本当にカンベンして欲しくて、なるべく手短かで的確かつ整合性のとれた名前をつけたい。そしていったん名付けてしまうと、そのクラスのあり方やふるまいは名前に支配されてしまうようになる。むしろ的確な名前がつけられればコードを付け足すのは雑作もないこと、とか。なんかもう、かなりの思考が名前を考える事に費やされてるような気がする。自動名付けツールみたいなものってないかしら?

プログラミングの素人が一夜にして素晴らしいソフトウェアを書ける画期的な開発手法について知っている方がいればぜし教えてくださいm(_ _)m。

アジャイルはしょせんアジャイルでしかないというか、もっとすごい銀の弾丸をよこせと。

結局はRailsのような完全無欠のフレームワークを待ち望むしかないのかとか、環境構築まで含めて15分でWebアプリを作れるという。

あ、InterfaceBuilder使えばいいんじゃね?とか今思いついた。

カテゴリー:Hacks

Objective-C雑感

外遊びにかまけてここ半年ほど放置してきたiPhoneアプリ開発を再開、すっかりハマってインドアな日々を送っていますよ。

連日明け方までコードと取っ組み合いをして、昼間の仕事は居眠り。一度やりはじめると手を離してもしばらくは頭の中をソースコードがぐるぐるしてそれ以外考えられなくなるので他のことに手が付かない。よって外遊びもブログもおろそかになっていますよ。このままだとGWも投入しかねない勢いであります。

めざすリリースは6月を予定。これを新たな財源として来シーズンの買物をするのだ!というのはさておき、本格的に操るのはほぼはじめてのObjective-Cについて。

iPhoneの開発言語であるObjective-Cは、C言語の土台の上にオブジェクト指向の上物を被せたハイブリッド言語なので、Cのソースがそのまま動くとか。しかしCを使わない僕にはまったくありがたさが分からない。以下ダメなところ。

[ x ] ヘッダーファイルとかいちいち用意するのはめんどくさすぎ。全体的にメソッド名とかも冗長すぎる。同じ動的型言語のRubyと比べるとかなり書き込まないといけない印象。

空の配列を作るだけでこれだけ書き込まないといけない。なんてこった!

NSMutableArray* arr = [ NSMutableArray arrayWithObjects: nil ];

Rubyならこれだけ。行末のセミコロンがいらないのもポイント。

arr = []

オブジェクトを作るときも

SampleObject *obj = [ [ [ SampleObject alloc ] init ] autorelease ];

Rubyなら

obj = SampleObject.new

[ x ] ポインタとは何なのか、そんなことみじんも考えたくもない。頼むからエラーでそういう用語を表示しないでほしい。ちょっと*をつけ忘れただけじゃない。

[ x ] 最大のハードルはメモリ管理!release、retain、autorelease。いつそれらのメソッドを呼ぶべきなのかそれを判断できるようになるまでかなりの悪戦苦闘を強いられる。そのうえメモリの状況はブラックボックスなので、最後まで正しいのかどうなのか確信がもてない。property設定でretainになっていないインスタンス変数に代入するときとかハマった。

[ x ] 動的型言語といいつつ、コンパイラはしっかり型チェックしてエラーはいてくるのはうざいのやらありがたいのやら、Rubyのような動的型の鮮やかさがないのはto_sとかto_iみたいな共通変換メソッドがないからか?そもそも変数の型を宣言しなきゃならんとは、idですらめんどくさいわけで。

[ x ] intとNSIntegerとか、Cのプリミティブな型とFoundationのオブジェクト型を行き来するのに変換が必要なのは最初意味分からんかった。もうFoundationを言語仕様に取込んじゃえばいいじゃん。

なんかそのハイブリッドさの恩恵に今のところあずかれていないばかりか、細やかなところでデメリットが多いので、Objective-CからC言語の要素を抜き取った純粋動的型オブジェクト指向言語が欲しい。意味ないかな?「Objective-X」とか。

カテゴリー:Hacks, Mac/iPhone

いいたいこと

航空予約端末(CRS)について、旅行代理店の担当の人とかが予約照会するときにパタパタ打ち込んでるアレ。えらく操作がとっつきにくいうえに、国際便の場合、日付や名前が一字違っていただけで大惨事になるという、発券するときの緊張感たるや初心者はもうちびりそうになるというが、毎日の業務に押し流されているとやがて神経を摩耗して不感症になっていくというシロモノ。

旅行代理店での予約ミスはけっこう頻発していて、それが最終的にお客さんの旅程にまで及ぶことも多いがそれは氷山の一角で、表沙汰になるまでに内部でなんとかやりくりネゴネゴして収めているケースが相当あるとかどうとか。だから代理店で予約したときは、CRSで出力される予約記録(PNR)をFAXで送ってもらって自分でチェックするのが一番よいという。

↓こういうやつね

200904012318.jpg

ふざけんなよ(笑)いつの時代のインターフェースだよ、と。

・貧弱なMS-DOSみたいな画面に呪文のようなコマンドを打ち込んで、暗号のような出力を読み取って、それらの様式がエアラインごとに違うとか、しかもヒューマンエラーを防ぐ仕組みが皆無なのはそろそろなんとかしろと。仕事で関わってる人もさることながら、不運にもトラブルに巻き込まれる客はたまったもんじゃない。

・”APR”と”MAR”はどっちが3月だったっけ?とか一瞬迷うときとかあるでしょ(ない?)。非英語圏には数字表記にしろと。

・混み合っている時期に必死に空席探そうとしていろいろ手繰っているうちに日付を間違えて照会してあぁ空席あるじゃん!とかって勘違い小躍りして思い込むと、もう無意識的に日付に目がいかなくなってセルフチェックが働かなくなる心理とかってあるんじゃないかと?担当者は一人で何百件の予約抱えて孤独な自己責任のなかで日々戦いつつも常に神経集中できるわけじゃないんだし。やっぱさ、予約スケジュールはカレンダーとかタイムラインとかでばびゅーんってかんじでグラフィカルに表示するとかどうよ。

・経路とか、空港の場所とかもさ、グーグルマップ上にプロットして表示できたらいいんじゃね?そいつをiPhoneみたいに指でタッチしてぎゅいーんとかって操作するとかどうよ。Wiiみたいなのでもいいよ。グーグルアースで地球儀ぐるぐる回して予約するのもいいね。

・航空各社がバラバラに予約端末を作って扱う方は大変でしょ。もうさ、グーグル様に完全統一バージョンを作ってもらおうよ。クラウドCRS!広告表示されたり、たまに落ちたりとか。

・電子パスポートサーバみたいなのを外務省が運営してAPIを公開してシステム接続するみたいなのもそろそろいかがかと。パスポートネームが一字違ってたり期限切れだったりで飛べなかったみたいなのやめようよ。外務省と国交省の争いが勃発しそうだけどね。ていうかグーグルがパスポートもビザも発給しろと。

・ていうかさ、JRの緑の窓口とかで使ってるやつはなんかタッチパネルだよね?ああいうふうにできんものかね。

・偉大なブロガーがこんな粗悪なシステムのせいで神経消耗してネットサーフィンする時間を奪われるなんて社会的損失は甚大だ。卵を押しつぶす壁とはこれのことか?あぁ壁は正しいさ、壁には従わなきゃいけないんだ、抗っても押しつぶされるだけだ、でもしょせん人が作ったものだよ。

・でも達人がビシバシ使いこなしてるのをハタから見てるとかっこいいなぁと思う。航空会社の受付のおねえさんとか!

カテゴリー:Lifelog