いつの間にか石田晴久氏が亡くなっていた。
http://internet.watch.impress.co.jp/cda/news/2009/03/09/22718.html
とても悲しい。


昨日は日記を書かなかったので、まずは昨日の分。しんどかったわけではない。Wiiのゲームにはまって遅くなったからさっさと寝たのだ。
朝5時くらいに目覚めて、6時まで布団の中で粘って起きた。最近3時に目が覚めて4時に起きる、というようなパターンが続いていたので、朝まで眠れるというのはとても素晴らしく思える。
会社に行って仕事。またしても紙ベースで運用されている申請書をブラウザから申請できるWebアプリの開発中。しかし今度は上長の承認印が必要な帳票を出力しないといけない。となるとHTMLの画面を印刷してください、でもいいのだが、表示する項目がけっこう多いし、ブラウザからの印刷だと環境に依存してしまうため、PDFファイルにすることにした。PDFJというモジュールを使ってそれは一昨日できたのだ。
そして今度は我々が使う管理側のインタフェースを開発中。う〜ん、開発は楽しい。小学生でBASICにはまってから、将来はプログラミングの仕事に就きたいな、と思っていたが本当にその通りになった。
そして定時でさっさと切り上げ、帰ってきたのであった。もう少し遅かったら豪雨に見舞われるところだった。帰ってきてからもゲーム三昧。いかん、もう少し本も読まなくては。
今日は7時頃起きたっけな。お休みだから目覚ましはセットせずに寝たが、自然にこれくらいに目が覚めるのなら、まあいいだろう。朝食を食べて、さっそくお勉強。昨日買った本はとりあえず置いておいて、まだ読みかけの「初めてのPerl」を読む。
どうもPerlという言語は曖昧さというか、いろんなところを省略したり別の書き方ができたり、いやそれは他の言語でも同じなのだが、「省略の美学」というのがあるらしく、Perlは特にすさまじい。この本を読んでいると、ひたすらプログラミングのタイプ数を減らせて速く作れるから、こういう書き方ができる、と書いてある。
しかしなあ、その「省略の美学」のせいで、ろくに勉強もしないまま他の人のプログラムを見よう見まねで作り始めた自分は???????の部分がいっぱいあって、実に困っていたのだった。
小学生のときにBASICから入って、アセンブリ言語、C言語、大学では情報工学科でFortran、PASCAL、再びアセンブラ、AWK、シェルスクリプト、LispやらPrologなどのAI系のものまでやらされた。就職してからはC言語を独自にオブジェクト指向に拡張した言語を使ってオブジェクト指向プログラミングもやっていたし、最近では趣味でPHPとか他のスクリプト言語もやったし、たいていの言語はソースを読んだらだいたい何をやっているかわかる自身はあったのだ。
しかし、幸か不幸か私はWeb系の仕事とは縁がなく、CGIを作ったりしたこともなく、Perlには手をつけたことがなかった。別にPerlはCGI専用の言語ではなく、強力なスクリプト言語なのだが、どうも「PerlでCGI」というのが一時期はやったせいか、Perlには縁がなかった。
会社でも使う場面はなった。ちょっとここの処理が簡単そうなので、勉強がてらPerlで書いてみたい、とリーダーに言ったことがあるが、みんなが知らない言語で書かれてもメンテができないからやめてくれ、と言われる始末。
CGIを作れる環境もなかった。自分のPCにApacheでもインストールしてActivePerlでもいれるか、Linux環境でも構築すればよかったのかもしれないが、それをやったのはつい最近のことだ。それもWebアプリはPHPでやっていた。
話はだいぶ遠回りしたが、要は、Perlは触ったことがなかったが、
「たいていの言語は読んだら何をやっているか想像できて、それを元に頭の中でリバースエンジニアリングをかけて文法を推測する」
ことができる自信があったのにPerlは全然わけわからん、という状態だったのだ。
とりあえず今日は「初めてのPerl」を読破しよう、と思っていたが、9時くらいにちょっと疲れを感じて横になったら、そのまま11時くらいまで寝てしまった。やっぱり疲れは溜まっていたんだな。
午後から勉強を再開するも、睡魔との戦い。いっそ寝た方がいいのか。でも昼間に寝たら、夜に眠れなくなるので、なんとか体をやすめつつ寝ないで頑張りたい。休憩を多く入れ、伸びをしたりストレッチをしたり深呼吸をしたりして本を読んでいった。私が理解できてなかった「省略されていたものたち」の正体がやっとわかってきた。
とりあえずWebアプリ用のフレームワークを用いての開発なので、ファイルシステム管理やプロセス管理は飛ばして、なんとか最後まで読んだ。明日は昨日買った「続・初めてのPerl」と、今日の朝に届いた「Effective Perl」をつまみ食いしながら読むことにしよう。「Effective Perl」はより実戦的な内容で、これも非常に参考になりそうだ。
う〜ん、いろいろ詰め込みすぎて頭がパンクしそうだが、いろいろ覚えられるということは、自分のスキルがあがるということだから、どんどん詰め込んでいこう。そして作って作って作るのだ。自分の作った物が、ソフトウェアというバーチャルな世界ではあるが目に見える形になって動いている、というのはとても楽しいことだからやめられない。
かなり強い台風のようだが、家の中に引きこもっている自分にはあまり関係はない。しかし、愛川に泊まりで校外学習に行っている姪が心配だ。
今日もCatalystのお勉強。先日買った本にあるサンプルプログラムを、自分の手で入力して動きを確かめてみよう、となんとか書いてあることを一生懸命読んで、わからないところを検索しまくり、ちょっとずつ理解しながら進めていった。おかげでだいぶわかってきた。
が、最後の方になってViewのデザインのところのソースが書いてない。CSSとHTMLのテンプレートで、テンプレートの中のキーワードの場所がPerlで処理した文字列に置換されて最終的にブラウザに表示される、という仕組みなのだが、そのCSSやHTMLは割愛されていた。結局本に書いてあるサイトからソースをダウンロードし、そのまま動かそうとした。
それから実際に動かすのに、ライブラリが足りなかったりといろいろ苦戦したが、なんとか動いた。単純なブックマーク管理画面で、テキストボックスにURLを入力すると、そのURLが実在するならそのページからタイトルを取ってきて登録し、一覧表示に追加する、というもの。編集画面でタイトルを編集したりコメントを追加したり、削除画面で削除もできる。
理解するのにはかなり苦労したが、実際にコーディングする量は、考えてみたら本当に少しである。もちろん複雑なWebアプリならもっと大変だろうが、確かにこれは使いこなせると生産性はとても高くなる。
そのためには、自分が作りたいアプリの「部品」、すなわちCatalystのモジュールやそれ以外のCPANのモジュールなどをいかに効率よく見つけてうまく使いこなすか、ということが大事だろう。実際にはこれが大変だろう。
それはそうと、portsupgrade をインストールしようとしたら、/usr/ports/sysutils/ の中にない。検索したら、どこを読んでもそのディレクトリにある、と書いてあるのに。検索しまくって、ようやくVer6台から portsupdate は /usr/ports/ports-mgmt に移動した、ということがわかった。findで探した方が早かったよ、とほほ。やはりバージョンの違いによる微妙な差というところでつまったりすることが多いこの業界である。
今日は午前中は雨降り。そろそろ梅雨に入りそうな時期ではあるが、今日の雨は梅雨の雨ではないらしい。ああ、またじめじめな季節がやってくるのか。日本で過ごしやすい季節って本当に少ない。
午後から晴れたので、妻と散歩がてら横浜まで歩いた。そして淀橋なる大きなでんきやへ行つて、うちにとっては大きなものを買つた。いや、大きいと言っても「のーとぱそこん」くらいの物だが、その「のーとぱそこん」くらいの大きさの物を買つてかへり、標準の「いちぎが」なる目盛なるものを「にぎが」にさしかえたりして、きどうした。
すると、今までみたこともない「びすた」なる画面がでてきたではないですか。まあなんてことでせう。しかし、なぜか目盛なるものは「いちぎが」しか認識されてないのでした。
これはおかしひ、と思ひてその何か「のーとぱそこん」くらいの大きさのものと格闘してしこうさくごしたあげく、「いちぎが」の目盛2まいのうち、1まいが「ふりょうひん」らしいということがわかったのであった。
あした淀橋へいって交換してもらわねばなるまい。
そしてけふはその「びすた」であそんでおわつたのであつた。