PHPカンファレンス2008レポート(後編)
PHPユーザーは本当にほかの言語を知らないのか?
岡田大助
@IT編集部
2008/7/31
PHPの次に学ぶ言語は?
「PHPの次に学ぶ言語」というテーマは、先の質問と逆順に答えていくことになった。
まず、id:amachang氏がさまざまな理由を挙げながらJavaScriptを推す。
一番大きな理由は、Webブラウザというプラットフォームで動く唯一の言語なので、さまざまな言語の人がJavaScriptをやらざるを得ない状況にあることです。その結果、JavaScriptの使い方が関数言語的であったり、オブジェクト指向的であったり、手続き指向的であったり、クラスっぽく使うには、プロトタイプっぽく使うにはというさまざまな情報が、どれが正しいというわけでなく多くのブログで取り上げられています。だから、さまざま言語に触れることができ、JavaScriptはすべての言語のハブになっていると思います
言語設計的にも、関数がファーストクラスオブジェクトで、純粋な値として使えるので、関数指向の言語でも使えるし、クラス指向にも対応できます。プロトタイプというクラスを使わない言語でもあるので、オブジェクトの抽象的な概念をまとめるものもオブジェクトとなり、抽象的な概念を表す仕組みがクラスよりももっと小さい。だから、ほかの言語を広く見渡せるのではないかと思います
次いで、ひが氏がActionScriptを推す。
何か新しい言語を学ぶときに、全員が趣味でやっているわけではないと思います。何らかの形で仕事に結び付く言語をやりたいと思うこともあるのではないでしょうか。ActionScriptは、RIAというリッチなクライアントを作るうえでデファクトスタンダードになっているFlashをコントロールするのに非常に適しています。だから、今後の仕事に役に立つでしょう
また、ActionScriptは言語的にも面白いと思います。ActionScript3は、ECMAscriptのアドビ側実装になっていて、実行エンジンTamarinがMozillaへ贈られました。将来的にはJavaScript 2.0の実行エンジンと一緒になって、両方の言語で使われるようになるでしょう。今後、Webの世界のデファクトスタンダードになるのは、ActionScriptとJavaScriptが結びついたものになる可能性が高いので、前準備としてActionScriptを学ぶことはいいことではないでしょうか
柴田氏は、やはりPythonを推した。
Pythonを学んでください。硬いイメージがあって難しい、とっつきにくいと思われていますが、実は非常に学びやすい言語なのです。if、elseなどの予約語の数が30程度とほかの言語よりも少ないし、記号を使わない。インデントでブロックを表記するため、ブラケットも使わない。だから、覚えることが少なくてよい言語です
また、Pythonもオブジェクトのつくりが単純で、オブジェクト指向なんだけどもプロトタイプ指向なので、オブジェクトの学習もすんなりいくと思います。さらに名前空間も明確でハマるところがない。Pythonは、少ないルールを覚えるだけで使いこなせるようになる言語です
高橋氏は明確な言語を挙げなかった。その理由は以下のとおり。
言語を学ぶときに、それが中長期的な視点であれば何の言語を選んでもかまわないと思います。しかし、プログラマがプログラミング言語を学ぶメリットは何かを考えた場合、それは自動化ができるようになるということではないでしょうか
PHPはWebアプリケーションの開発には非常に向いていると思います。しかし、それ以外の自動化には向いていないとも思います。例えば、PHPの開発ではバージョンごとの互換性が気になることが多々あります。そのため、案件ごとにそれに合わせたPHPのバージョンを開発環境として用意しなければならない。ApacheとPHPのインストールを繰り返すのを手動でやるのは面倒でしょう。そこでRubyのビルドツール『Rake』を使えば、コマンド一発でできるようになります
このようなことは、プログラマであればちょっとしたプログラムを書けばできること。しかし、それがPHPでやるのは大変なので、コマンドラインで使いやすいほかの言語を覚えていた方がいいでしょう。それが、遠い将来ではなく、いまのPHPでの開発にメリットをもたらすと思います
最後にマイクを持った竹迫氏は、言語の文化論を展開する。
なぜ言語を学ぶのでしょうか。日本語の次に学んだ自然言語を考えてみると、それは知的好奇心だったり、その言語の持つ文化に触れたいからではないでしょうか
プログラミング言語にも文化があって、PHP以外の言語に触れると異文化を知ることができます。例えば、Perlの文化としてCPANというのがあります。さまざまなモジュールが世界中から登録されていて、『moning musume』で検索すると外国人も何かのモジュールを登録している。モジュールを外部記憶装置として使う文化はPHPのPEARにはないんじゃないでしょうか
これが、文化です。Perlの文化は『人を成長させる文化』といえます。CPANはさまざまな人が書いたモジュールをフラットに受け入れて、使う人が用途によって最適なものを選びます。だから、CPANオーサーにもなりやすい。すると、『選択肢が多いと初心者の迷いが多くなる』という問題が出てくることでしょう。しかし、多くの選択肢の中から自分がどういう選択をするかという迷いは、自分自身が賢くなるきっかけになるのです
フレームワークと異文化論
この後、ディスカッションは「言語の文化」という当初の予定になかった議論へと進んだ。まず、高橋氏がPHPとRuby(Rails)の関係を取り上げる。
PHPからRailsへという流れがあります。PHPの文化は見えづらいのですがちゃんとあって、Railsには確固とした文化があります。その中で、Railsのいいものを抜き出してPHPにもってこようとしてもうまくいかないのではないでしょうか。逆に、PHPのベストプラクティスをRailsに持っていてもダメだと思います。それぞれの良さを足して2で割ったら良いものが残るのかというと疑問です。これは、文化に起因しているものだからです
ここで竹迫氏がスクリーンにRailsのイメージ画像を映し出す。「Rubyの人にとってRailsって一本道のイメージなんでしょうか。これにそって作ればWebアプリケーションが不安定にならずに完成するんでしょうか」という疑問を提示するためだ。
そして、「私にとって“レイルズ”のイメージはこれなんです」といいながら、東京近郊の複雑な路線図を大写しにすると、会場は大爆笑に包まれた。
この会場に来るためにどの路線を使ったら良いのかを考えたときに、さまざまな選択肢があったと思います。JavaもPHPもPerlもいろいろなフレームワークがあって、そこから選んで、あるいはフレームワークを使わずに歩いていくという人もいるでしょう。そんなにレイルに縛られなくてもいいんじゃないでしょうか
この発言を受けて、ひが氏が「ある言語の特徴とは、その言語に意味があるから存在しています。いろいろな言語の特徴を混ぜてしまうと、その言語は徐々にダメな言語になってしまう」と意味深な発言をする。
モダンな言語はほかの言語の良いところを学びつつ、結果として焦点がボケてしまっています。Javaも最初はシンプルに書けることを特徴としていたのに、ほかの言語からつまみ食いしてきたことでごちゃごちゃしてしまいました。
私の考えでは、ほかの言語から何かを持ってくる必要はなく、その言語が持つ特徴に特化する方向で、むしろ余分な機能は削るくらいでいいんじゃないでしょうか。フレームワークもその言語のもつ良さを際立たせる方向に振った方がいいと思います
結果的に、このパネルディスカッションでは「PHPの次に学ぶ言語」は決まらなかった。また、一方的にPHPを非難する方向にもならず、異なる言語に触れることによって、自分が使っている言語の良いところ、悪いところを意識できるようになるということで落ち着いたようだ。
会場は超満員。白熱する議論を真剣に聞いていた (写真提供:月宮 紀柳氏) |
2/2 |
Coding Edgeフォーラム トップページ |
PHP関連記事 |
例外処理の実装を把握する PHP5で広がる! 開発環境(1) PHP4のサポートが終了し、いよいよPHP5への移行を視野に入れる時期が来た。PHP5の機能を生かした開発のポイントを紹介 |
|
クライアントPCに言語環境を入れる理由 Mac OS X+PHPでオールインワン環境(準備編) Webアプリ開発者に人気のMac OS X。効率的な開発のために複数バージョンのPHPを実行する環境を構築してみよう |
|
PHPに押し寄せるリスクと国際化の波 PHPカンファレンス2008レポート(前編) PHP4のサポートが完全に終了する。多くの新機能が投入されるPHP5.3へ移行か、国際化対応で開発が遅れるPHP6を待つか |
|
PHPによる大規模商用サービスの裏側 PHPカンファレンス2008レポート(中編) 企業のWebアプリケーション開発現場で利用されるPHP。開発現場の裏側にはさまざまなドラマが隠されている |
|
PHPユーザーは本当にほかの言語を知らないのか? PHPカンファレンス2008レポート(後編) PHPは本当にダメな言語なのだろうか。Perl、Ruby、Python、Java、JavaScriptの使い手が白熱した議論を行った |
|
- プログラムの実行はどのようにして行われるのか、Linuxカーネルのコードから探る (2017/7/20)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。最終回は、Linuxカーネルの中では、プログラムの起動時にはどのような処理が行われているのかを探る - エンジニアならC言語プログラムの終わりに呼び出されるexit()の中身分かってますよね? (2017/7/13)
C言語の「Hello World!」プログラムで使われる、「printf()」「main()」関数の中身を、デバッガによる解析と逆アセンブル、ソースコード読解などのさまざまな側面から探る連載。今回は、プログラムの終わりに呼び出されるexit()の中身を探る - VBAにおけるFileDialog操作の基本&ドライブの空き容量、ファイルのサイズやタイムスタンプの取得方法 (2017/7/10)
指定したドライブの空き容量、ファイルのタイムスタンプや属性を取得する方法、FileDialog/エクスプローラー操作の基本を紹介します - さらば残業! 面倒くさいエクセル業務を楽にする「Excel VBA」とは (2017/7/6)
日頃発生する“面倒くさい業務”。簡単なプログラミングで効率化できる可能性がある。本稿では、業務で使うことが多い「Microsoft Excel」で使えるVBAを紹介する。※ショートカットキー、アクセスキーの解説あり
|
|