• BPnet
  • ビジネス
  • IT
  • テクノロジー
  • 医療
  • 建設・不動産
  • TRENDY
  • WOMAN
  • ショッピング
  • 転職
  • ナショジオ
  • 日経電子版
  • PR

  • PR

  • PR

  • PR

  • PR

記者の眼

スクリプト言語の盛り上がりに期待すること

道本健二 2004/12/02 ITpro

 この欄を読んでおられる方々なら,Lightweight Language(以下,LL)という言葉をご存じの方は多いだろう。軽量プログラミング言語といった意味で,Perl,Ruby,Python,PHPなどの比較的容易に扱えるスクリプト系言語を総称する用語である(2001年ごろから頻繁に使われるようになった)。新しい呼び名が生まれてきたことからわかるように,最近こうしたスクリプト言語がにぎやかになってきた。

 もともとPerlやRubyなどは世界中で利用されている言語だが,最近では,Groovy(Java VMで動作するスクリプト言語)やSqueak(Alan Kay氏が中心となって開発しているオブジェクト指向言語/環境)などの比較的新しい言語もLLの一つとして注目を集めている。

 実際には,LLにはきちんとした定義はないようだ。Rubyの開発者であるまつもとゆきひろ氏は,LLは“より少ない「脳力」でプログラミングできる言語”という定義を提案している。脳力とはまつもと氏らしい言い方だが,言わんとすることはなんとなくわかる。Java,C/C++,COBOLなどのHeavyweight?な言語に比べて,“より少ないストレスでプログラミングでき,生産性を向上できる言語”といった意味だ。

 具体的には,PerlやPythonなどこれまでスクリプト言語やインタプリタ型言語と呼ばれたもののほかに,RubyやSqueak(Smalltalk)などのオブジェクト指向言語や,古くからある配列処理言語Lispや関数型言語HaskelなどもLLと呼ばれているようだ。

 もっともここでLLの定義について論じたいわけではない。ジャンル名や定義がどうであれ,身近なスクリプト言語にスポットがあたり,マイナーな言語が見直され,新しい言語も続々と登場する現状を個人的にはとてもいい傾向だと思っている。そして,そうした傾向は,プログラミング入門者/初級者にとって“追い風”であり,好機であると申し上げたい。

 私が所属する日経ソフトウエアの最新号(2005年1月号)では,「まるごと大特集!フリーの開発ソフト」として,フリーで使える言語や開発ツール50本をCD-ROM(2枚組)付きで紹介している。この企画は2004年1月号で行った際に好評を得たものだ。弊誌が主な対象としているプログラミング入門者/初級者にとっては,「必要なツールはご自分でダウンロードしてください」と言うより,CD-ROMに収録して付属する方が喜んでいただけるようだ。

 今回の特集企画を行うに当たって,どの言語やツールを採用すべきかをいろいろと検討した。Java 2 SDKや .NET Framework SDKなどあって当たり前と思われるものや,Eclipse,Apache,MySQLなどの定番ツールはやはりはずせない。一方で,前年に紹介できなかったソフトもいくつか加えた。

 例えば,前述のGroovyのほか,J(APLの後継として開発された配列処理言語),Helium(関数型言語Haskellの学習ソフト),Lua(ブラジル生まれのスクリプト言語),P#(.NET Frameworkで動作するProlog処理系),ひまわり(山本峰章氏が開発した日本語プログラム言語)──などである。Squeakは残念ながらCD-ROMには収録できなかったが,ページを割いてSqueak eToys(Squeakに標準で組み込まれているビジュアル・プログラミング環境)を解説している。興味がある方はご覧いただきたい。

軽量言語でプログラミングを始めるメリット

 「マイナーな言語や,数年後には消えているかもしれないツールばかりを取り上げて喜んでいるようではダメだ」と言う方もいるかもしれない。確かに,言語の選択肢ばかりが増えて,本質的なプログラミング・スキルが向上しないのでは困る。しかし,新しい言語が生まれてこない状況は,コンピュータが高度に発達したか,まったく停滞しているかのどちらかであろう。現状は前者でないことは明らかであり,より生産性を高めようとする言語が次々に登場する方が未来に希望が持てるというものだ。

 もちろん読者に言語オタクになってほしいなどと思っているわけではない。C/C++やJavaなどのような“王道”の言語でなくても,プログラミングを楽しむ方法やツールはたくさんあることを紹介したいだけである。特に,これからプログラミングを始めようとする方には,文法的に容易なスクリプト言語などで手っ取り早くプログラミングの醍醐味を感じてもらいたいという思いもある。

 独学でプログラミングを覚える場合,きちんと動作するプログラムを一つでも多く作ることに加えて,他人が作った優れたプログラムのソースコードをよく読むことがスキル上達の近道になる。スクリプト言語で作ったプログラムは,ソースコードが公開されていることが多く,その点でも初級者に向いていると言えるだろう。

 もう一つ,RubyやSqueakなどのようにオブジェクト指向言語でプログラミングを始めれば,オブジェクト指向に対する抵抗感や壁を小さくするメリットもあるだろう。例えば,Squeak eToysは,主に子どもに使わせることを意識したツールであり,マウス操作だけでプログラムを作れるのが特徴だ。eToysを使ってみると,「可能な限りすべてをオブジェクトと,オブジェクトへのメッセージ伝達によって実現する」というオブジェクト指向の原則を,言葉ではなく感覚で理解できる。

 子どもや中高生向けという点で最近おもしろいと思ったのは,Rubyを搭載したゲーム作成ソフトだ。エンターブレインが開発/販売している「RPGツクール XP」がそれだ。RPGツクールは,その名の通り,ロールプレイング・ゲームを容易に作成できるソフトだ。マウス操作でマップ(フィールド,街,ダンジョンなど)を作り,ストーリーを表現するイベントと,キャラクタやモンスターのプロパティを設定することで,市販のゲーム・ソフトに匹敵するグラフィックスや機能を持つソフトが作れる。MSXやMS-DOSの時代から作り続けられている人気ソフトである。

 その最新版(2004年7月出荷開始)である「RPGツクール XP」は,Rubyをツクール用にカスタマイズしたスクリプティング環境RGSS(Ruby Game Scripting System)を搭載している。ユーザーはスクリプトを編集することで,ツクールの機能を変更したり,新しい機能を追加することが可能だ。本来,プログラミングをしなくてもゲームを作れることがウリだったのだが,あらかじめ用意されている素材や機能以上のものを作りたいヘビー・ユーザーには待望の機能だという。

 実際にRGSSを見てみると,ツクールの各機能がたくさんのクラスとして提供されているのがよくわかる。まさにRuby用のRPGクラス・ライブラリといった感じだ。専用のエディタ(ただし入力補完機能はない)も付いているので,既存クラスに少し手を加えて実行するといったことが簡単にできる。

 Excelを使っているうちにVBAプログラミングを学んだという人たちと同じように,ツクールのRubyでプログラミングを初体験するという若者たちも増えるだろう。彼らは,クラス,メソッド,インタフェース,継承といったオブジェクト指向の要素を実装から学んでいく。プロになるには,いずれ体系だった学習が必要になるかもしれないが,少なくとも“クラスのイメージが浮かばない”といったレベルでまごつくことはないはずだ。

 弊誌は,高校生や専門学校生のプログラミング教育にも関心を持っている。例えば,最新号では「全国高等専門学校 プログラミングコンテスト」を,2005年2月号では「パソコン甲子園2004」のプログラミング部門の様子をレポートする。このレポートも毎年恒例となっているが,参加する高専生,高校生たちのスキル,それはプログラミング技術だけでなく,プレゼンテーションや企画力までどんどん向上しているのがわかる。

 もちろん,これらのコンテストに参加する学生たちは,情報処理技術においてその世代のトップ・クラスである。一般の高校生がみなプログラミングをするわけではない。ただ,インターネットを使った情報収集やアプリケーション・ソフトの使い方などの授業に飽き足らず,プログラミングをしてみたいと思った若者が,次のステップに進むための情報やツールを提供していきたいと思う。筆者が年老いてじいさんになった時に,「私は日経ソフトウエアの付録でプログラミングを始めました」と言う天才プログラマに会える日を夢見て。

(道本 健二=日経ソフトウエア)

あなたにお薦め

連載新着

連載目次を見る

今のおすすめ記事

  • 【ニュース解説】

    物流ピンチを商機に、三井不動産がロボット倉庫

     三井不動産は2017年9月13日、倉庫業務を効率化するためのIT関連設備・機器、システムなどを紹介するショールームを千葉県船橋市の同社倉庫内に新設した。自動倉庫システムなど、ITを活用した16種類の設備や機器類を実演展示。コンサルティングも提供して物流業者や荷主企業の取り込みを図る考えだ。

ITpro SPECIALPR

What’s New!

経営

アプリケーション/DB/ミドルウエア

クラウド

運用管理

設計/開発

サーバー/ストレージ

ネットワーク/通信サービス

セキュリティ

もっと見る