情報処理の手順を記述するための言語がプログラミング言語であるが,言語である以上,その記述対象世界が想定されている.初期のプログラミング言語である機械語とアセンブラ語はコンピュータのハードウエアをその対象世界としていた.それを高度化した(当時の言葉でいえば)高水準言語はそれをより一般化して,「計算(数値計算と記号計算)」の世界を対象とした.それをさらに高度化し,実世界を記述の対象とする言語が本当は求められるのだが,残念ながら,1980年ころまでの素朴な人工知能ではこのことが強く意識されていたものの,いつの間にか,その志は薄れてしまったようだ.プログラミング言語界では,実世界記述志向時代の名残として「関数型」「論理型」「オブジェクト指向」の区分けがあるが,単なる計算の仕組み,つまり計算のパラダイムとしてのみ見られるようになった(たとえば,Bruce A. Tate著 "Seven Languages in Seven Weeks" 2010).求めるべきは,じつは実世界に対する世界観,すなわち本来の意味でのパラダイムのあり方である.
そのような状況の中で,2004年に出現したRuby on Railsは,この停滞を越える方向に強く踏み出した.現代情報システムの大半は事実上ウェブサイトシステムになりつつあるが,そのフルスタックのフレームワークであるRailsは,サイトの対象世界を一貫してOOP(オブジェクト指向パラダイム)で見る姿勢を貫き通すシステムである.Railsは,通常,強力かつ柔軟なフレームワークとして評価され,それによって多くの実用システムが作られ,もちろんその意味ですでに十分価値あるものになっているが,このようなプログラミングの高度化という方向性から見ても,高く評価されるべきだろう.
では,Railsはその役割をすでに果たし終えたのだろうか.つまり,さらなる高度化はもう必要ないのだろうか.私にはそうは思えない.単なる机上の議論からではなく,実際にシステムを構築する実践を通じて得た私の考えである.
世界は何かの集まりである.この「何か」を,オブジェクトobjectと呼んだり,実体entityと呼んだり,用語は様々であるが,「何か」は「何か」であって,要は,人は認識によって世界を分節する.分節しなければ世界は一色(つまり「空」)で認識にならないからである.この分節された「何か」によって世界が構成される,と我々は認識する.この「何か」をもとにして世界を見るというのがいわゆるOOPの出発点である.しかし,現在の情報処理技術におけるOOPが本質的に見落としている側面がある.
武田泰淳は次のようにいっている.
すべてのものは変化する
変化するものは
互いに関係しあって変化する
個人では生病老死,学校では学生の進級,会社では人事異動と組織変更,それが実世界である.そのような実世界を正確に,そして容易に記述できる仕組みが実用の情報処理システムにとって必需なのだ.にも拘わらず,現在のOOPでは,Railsを含め,「互いに関係し合って変化する」ものとしてのオブジェクトを十分に明晰にしていない.
私の開発したシステムでは,モデル部とコントローラ部それぞれに共通する機能を提供することによって,このような実世界を統一的に記述する仕組みを作っている.わずか数千行のRubyプログラムをRailsに追加するだけである.この体系を名付けてRunning Ruby on Railsと呼ぶことにする.Ruby on Railsをrun(実行)するということでは,もちろんない.
このブログでは,Running Ruby on Rails の考え方とその具体的技法について逐次紹介していく.
0 件のコメント:
コメントを投稿