インストール

CD-ROM で起動して、デスクトップのアイコンをダブルクリックすると、インストールが始まる。
設定項目は、ごく少数であり、インストール自体も短時間で終わる。

なお、私のマシンでは、以下のトラブルがあった。

  • そもそも CD-ROM 起動しなかった。 => デフォルトの X の設定では動かなかった
  • HDD は IDE のはずが、何故か /dev/sda で認識。=> SCSI じゃないのに、そう見えるのは Linux では良くあることなので気にはしない。

人=地域資源?

http://www.rubyist.net/~matz/20070325.html#p01 で面白いエントリを見つけた。最初はネタとしか思えなかった。本気の発言だとは、ちょっと思えない。

たぶん言いたかったことは、下記のような気がする。

(原文) ルビーの開発者は松江市に在住しており、本件の大切な地域資源の一つであると考えている。
(意訳) ルビーの開発者が松江市に在住しているという事実は、本件の大切な地域資源の一つになると考えている。

つまり、これから戦略的に「情報産業の育成」をするにあたり、Ruby の開発者が松江に住んでいるという事実は(宣伝として?)使える、と言いたいのではないか。

そう考えたが、根拠は薄い。もしかしたら、開発者が地域に居ることが何らかのメリットになると信じているのかも知れない。やり方次第だろう。

Windows PowerShell 導入

とりあえず、以下のページを読む。

@IT の紹介記事
http://www.atmarkit.co.jp/fdotnet/special/powershell01/powershell01_01.html
oka326 さんのまとめサイト
http://www.globe.to/~oka326/?PowerShell
むたぐちさんのまとめサイト
http://www.roy.hi-ho.ne.jp/mutaguchi/powershell/

むたぐちさんはわんくま同盟にも加入されている。私が PowerShell の勉強を始めたのは、勉強会の話題で PowerShell が出たからである。なお、わんくま同盟大阪勉強会#4 で、むたぐちさんが PowerShell について話すらしい。非常に楽しみだ。

はるのあしおと

ふと、テレビの CM で聞いた歌。「春よ届け、空を追い越せ」。文字で書くと平凡な歌詞だが、「そ、ら、を」の部分のリズム感が抜群だった。そして、何よりも「そ、ら、を」に合わせて、空に向かって開かれる傘の躍動感!
映像と音楽のコラボレーションとしては、単なるゲームの CM としては秀逸すぎると思った。

興味を持ったので、調べてみた。ゲームのタイトルは『はるのあしおと』。詳細な情報は Web で調べればすぐに分かるが、育成→恋愛→ビジュアルノベルと続いてきた、いわゆる "恋愛SLG" と言われるジャンルのゲームである。ゲームの公式サイトでは、"インタラクティブ・ノベル" となっている。

たぶん CM に使われているのは、ゲームのオープニングムービーだろうと見当をつけて調べると、新海誠という人が作ったということが分かった。『ほしのこえ』で、業界では知らない人は居ないだろうというレベルで、有名になった人である。

元々、この映像は、Windows PC 版(オリジナル)のオープニングだったらしい。個人サイトには、この映像のメイキング資料も掲載されている。また、テレビ CM で見たシーンが収録されている PS2 版オープニングムービーも、製作・販売元である Archemist のページからダウンロードできる。内容は、ぱっと見た感じでは、同じである。

関連リンクを、いかに掲載しておく。

新海誠
http://ja.wikipedia.org/wiki/%E6%96%B0%E6%B5%B7%E8%AA%A0
PS2 版オープニングムービー
http://www.alchemist-net.co.jp/products/haruoto/dl.html
メイキング資料
http://www2.odn.ne.jp/~ccs50140/works/minori_haru/index.html

実際に、ムービーを通しで見た結果、やはり演出が秀逸だと感じた。ここで多くは語らない。あえて言うなら、何故このゲームとこの歌で、あの「傘を開く」演出を思いつけるのか。本人に聞いてみたい気がする。映像は思ったより動いていない。全体としては動いているのだが、不規則な動きをしているシーンが少ない。そのあたりは演出の一環として、カメラワークで補っているように見える。

未見の人は、ぜひ一度映像を見てから、メイキング資料に目を通すことをお勧めする。作品について製作者が何かを語ることについては、色々と意見もあるかもしれないが、少なくとも勉強にはなる。

オブジェクト制約言語 (OCL)

「オブジェクト制約言語」というキーワードで Google 日本語検索をかけると、2006-06-20 14:30 の時点で 465 件だった。
オブジェクト制約言語 - Google 検索
OCL の日本での普及率を考えると、この程度なのかも知れない。その中で、参考になりそうなエントリを選んでみた。

さて、OCL について議論するためのキーワードは「厳密さ」である。モデルを記述する上で、厳密さに拘るとどうなるのか。

  1. 情報の伝達が正確になる (メリット)
    1. モデル作成者の意図が正確に表現できる
    2. 自動でコード生成が行える
  2. 言語の習得に余計な時間がかかる (デメリット)
    1. 概要を理解するのが容易ではない
    2. 開発/保守工数が増大する

理想論として OCL というアプローチが正しいのは分かる。しかし、日本でのソフトウェア開発の現場という「現実」に即しているかどうかは、また別の話になる。

1.1. について。曖昧さが残る自然言語を捨てて、厳密な人造言語で情報伝達を行うのは、仕様の伝達に関わるコミュニケーション・コストの削減として、有効なアプローチである。外国語よりも習得が容易であるのも、日本人にとって魅力である。
1.2. について。OCL4Java というツールが、既にある。実際にトライアル以上の価値があるかどうかは不明だが、トライすることだけでも価値がある。

2.1. について。厳密性に拘るということは、どうしても短く書けないということである。仕様に関する厳密な定義ではなく、概要情報が欲しいだけの場合、OCL を読み解くのに自然言語以上のコストがかかるとするなら、時間の無駄だと考えられる。OCL には、そのためにコメントという別解が用意されているが、そうするとコメントの保守のコストも考慮する必要が生じる。
2.2. について。開発と保守のありとあらゆる状況で、色々な立場の人に読まれることを想定すると、OCL はそのような用途には向いていない。習得のコストは自然言語より遥かに小さいが、開発現場において、無視できるほど小さくは無い。OCL の構文は、プログラムに近い形なので、現場の技術者ほど読み書きにかかるコストが低いと想定される。

結局、他のどんな技術とも同じで、以下のどれかを満たさないと、OCL の普及速度は上がらないだろう。

  • メリットがコストを (大きく) 上回る
  • 初期コストが、無視できるほど小さい
  • クールな技術だという評判が広まる

現時点では、どの条件も満たしていないように思えた。今後しばらくは、この状況が続くだろう。

ソフトウェア設計

先日、第一回わんくま同盟大阪勉強会に参加させていただいたので、論じてみる。「ソフトウェア設計」とわざわざ断っているのは、単に「設計」と書いた場合に誤解を招く危険があるのと、ここで扱いたい問題が SWEBOK で言う「ソフトウェア設計」だからである。

さて、ソフトウェア設計を定義してみると、以下のようになる。

ソフトウェア要求仕様の実現手段を検討し、ソフトウェア構築作業の入力成果物を作ること

これは、正確な SWEBOK からの引用ではない。私的な定義である。

一般的に、ソフトウェア開発は、上流工程で作成された成果物を入力として、下流工程の成果物を作る、という行為からなる。よって、上流工程である「要求」の成果物を入力とし、下流工程である「構築」のために成果物を作成するのが、「設計」だと考えられる。

しかし、少し現場に立ってみたら分かることだが、このような定義を行っても、実作業においては、本当に何の役にも立たない。定義はあくまでも定義である。実際にソフトウェア設計作業を行う場合には、実作業を行う上で決定しないといけない基準を決めておく必要がある。

基準とは、例えば、以下のようなものである。

  • ソフトウェア設計工程では、(具体的に) 何を決めるのか
  • ソフトウェア設計工程では、(具体的に) 何を作るのか

この回答に対して、さらに「具体的に」を積み重ねていくと、例えば、以下のようになる。

  • モデリングツールを用いて UML でクラスを描く。
  • クラスはクラス名, 属性, 操作を定義する。
  • 操作には、戻り値とパラメータがあり、それぞれに型が必要になる。
  • パラメータには、仮引数名がある。仮引数名は a または an で始まる。

どう考えても、キリが無い。しかし、これを決めないと、ソフトウェア設計作業はできない。一人や二人で行っているならともかくとして、個人の能力に依存しないプロジェクトを運営するなら、上記を決めるしかない。

さて、既にお気づきの方もいらっしゃるだろうが、上記の決定は、具体的な「システム」や「プロジェクト」に依存する。決定事項の一つ一つだけではなく、そもそも、何をどこまで決定しないといけないのかを決めるのも、その時の状況に依存する。

よって、ソフトウェア設計で、具体的なことを語ろうとすると、一つの壁にぶつかるだろう。その壁は、ソフトウェアエンジニアリングの世界が、未だに確固としたプロセスを定義できない現実そのものである。

勉強会で語るには、あまりにも難しいテーマであると、私は感じた。

媛星

舞-HiME』というアニメがある。その主題曲と言える曲が『媛星』である。

この曲を聴くと想起される風景がいくつかある。灰色の雲をたなびかせた夕焼け空は、寂しくリリカルなメロディからの連想。ゆっくりと等速で落下する無数の雪は、淡々と刻まれるギターのリズムから。雨に煙る車窓からの田園は、これを聞きながら新幹線から見ている景色がそうだったから。

そんなとき、音楽は、それだけで "世界" を表現しているのだ、と考える。何かの物語のワンシーンかも知れないが、そこに人間は居ない。ただ、世界だけは凛然と、ある。

「世界は美しくない。しかし、それ故に美しい」と『キノの旅』で時雨沢恵一が言っているが、私は、このフレーズに違和感を覚える。この作品で表現されている世界は、キノを観察者とした、社会であり人の営みでしか無いように思うからだ。私にとっての世界は『媛星』から想起される風景であり、『キノの旅』で表現されている寓話ではない。

音楽の方が思考に対して自由であり、想像の余地を残している。音には、意思が無い。逆に、言葉は思考を縛って、それだからこそ、強固なイメージを思考に対して与えることができる。

もし、あなたが『媛星』を聞く機会があるなら、目を瞑って聞くといい。あなたの美しい世界が、見えてくると思う。