技術経営ろぐ

大学院で学んだことを書いていきます

プログラミング言語Rubyにみるイノベーションのコンセプト

東京理科大学大学院 イノベーション研究科 技術経営専攻を受験するにあたって、同大学院の伊丹教授、宮永教授の書籍「技術を武器にする経営」の内容をテーマにエッセイを提出するという課題があった。どこかに提出するようなエッセイを書くのは初めての事だったのでとりあえず書籍を読んで、3000字くらいで書いてみたのがコレ。

結局、何度か読みなおすと技術経営に関するエッセイとしてはしっくりこない感じがしたのでボツにした。せっかく書いたのに日の目を見ないのはもったいなのでここで晒しておく。


技術経営に関する議論は、企業が技術的な取り組みをどのように価値に繋げるか、という観点で論じられるものであるが、それらの論点は特定の企業が主体とならないオープンソース・ソフトウェアの開発と普及の過程においても有効だと考えられる。

「技術を武器にする経営」第8章では、技術経営におけるイノベーションの創出の要点として、以下の3つの条件を満たすいいコンセプトが必要であると述べられている。

  1. 聞いて驚き、使って驚くという伝染効果があること
  2. 驚くだけの技術と仕組みの裏打ちがあること
  3. 許容範囲内の価格設定であること

 プログラム言語Rubyは、松本行弘氏によって開発されたオープンソース・ソフトウェアである。オープンソース・ソフトウェアは特定の企業の意図によるものではなく、そのソフトウェアの開発に興味関心のある人々の貢献によって開発されている。

 Rubyの設計コンセプトにおける特長は「人間本位」ということである。Rubyの言語仕様は、人間のためのインターフェースとして、人間にとってわかりやすいものであることを非常に重視して設計されている。つまり、プログラム・コードが、コンピュータにとって解釈しやすいかどうかということよりも、それを利用する人間にとって記述しやすく、また記述されたプログラムの意図が他者に伝わりやすいかというアプローチである。  松本行弘氏は、このRubyの特長を「プログラミングを楽しくする言語」と表現している。プログラマーの生産性は、プログラマーのモチベーションに大きく依存するので、プログラミングという作業そのものが楽しいということが非常に重要な要素であると述べているのである。

 このコンセプトは、いいコンセプトがもつべき3つの条件を満たしている。

 第一の条件は、Rubyの場合、プログラム言語の利用者であるプログラマーにとって、言語仕様が自分たちのために使いやすく設計されプログラマーの思考の流れを阻むことが少ないということが実感できること、使いやすく、気持よく作業ができるという評判がプログラマーの間で伝染効果があることである。プログラマーは、自身の生産性を向上させるために、さまざまなツールを試しており「使いやすい」という評判はプログラマーの心を強くひきつける。また、実際に使ってみると単に使いやすいというだけでなく、自分の思い通りにプログラムを作ることができて楽しいということが、他のプログラマーにもこのプログラム言語の良さを伝えたいという伝染効果につながっている。

 第二の条件は、人間の思考の流れを妨げすに、やりたいと思ったことを実際に実現するための高度な技術が作りこまれていることである。実際、Rubyによって記述されたプログラムを、コンピュータに解釈させ実行させるためのRuby自身の内部構造は極めて複雑である。とくに、記述されたプログラムを構文木という内部構造に置換する部分の仕掛けは、他のプログラム言語に比して複雑であると知られている。また、オープンクラスという動的にプログラムの構造や内部処理を書き換えることができる仕組みを実現するための機構と、それを現実的な速度でコンピュータに実行させるためのエンジンの部分には、その分野の専門家の手によって現在も改良が加えられている。

 第三の条件については、Rubyそのものはオープンソース・ソフトウェアなので無料で手に入れることが可能であるが、実際にRubyを使えるようになるための学習コストが少なくてすむということに対応付けられる。新しい技術を修得することは、ときに苦痛を伴うものであるが、Rubyの場合はもともとの言語仕様が人にわかりやすく配慮してつくられていること、学習を進めるにつれてRubyがもつ多彩な表現をつかいこなせるようになり、できることが増えていくことで、学習を楽しく進められるということが学習コストの低減につながっている。

 Rubyのコンセプトは世界中のプログラマーに支持され、とくに、2005年に発表された、ウェブサービスフレームワークRuby on Rails」によって爆発的に普及し、現在では世界中で数百万の利用者を獲得している。


オープンクラス」とすべきところを「ダックタイピング」と書いていたので訂正した。言い訳すると最初はダックタイピングについて簡潔に説明しようと思ったけどうまく書けなくて、オープンクラスの説明にしたんだけど、直すのを忘れてた。