分12345PHPはひどいコードを動かすのが驚くほど得意ラスマス:英語にはまるで整合性がありませんが,誰でも多少は分かりますし,それはいいことです。すごく下手にしか話せなくても,たいていの場合,意思疎通の役には立つ。英語をほとんど話せない者同士でもなんとかやりとりはできるのです。PHPは,ひどいコードを動かすのが驚くほど得意です。世界最悪のコードを書いたとしても,PHPならまだ動くし,実際速度も出るし,スケーリングも可能です。シェアード・ナッシング・アーキテクチャなので,スケーリング対応は最初から組み込まれているようなものです。世界最遅のコードを書いたとしても,サーバを余分に投入すればいい話です。サーバを買うのはすこしも難しくない。追加のEC2インスタンスをスピンアップすればいいだけです。あとは資金源があって,それを注ぎ込む気さえあれば――たとえばアクセスが増えるとお金が儲かる仕組みがあれば――さらにインスタンスを投入できます。それで資金を作れれば,頭の切れる開発者を何人か雇って元のPHPコードを直してもらうこともできます。他のこともできるでしょう。PHPは確かにひどい言語といわれることもあります。いい言語がある,たとえばHaskellはすばらしい,すべてHaskellに書き換えるべきだと。やればいいじゃないですか。誰かが市場を見つけてソリューションを作らなければ仕事にはならないのです。PHPが今なお人気を保ちつづけている理由はそれかもしれません。あとは一種の慣性ですね。WordPressとかそういうものの勢いが大いに残っていると思います。この10年,20年でハードウェアは大きく変化しました。シンクレアと今日のマシンはずいぶん違います。プログラミング言語やプログラミング自体にはどんな変化が起きたと思いますか。できれば,これから10年間についての予想もお願いします。ラスマス:分かりました。この20年間でハードウェアに起きた大きな変化の一つは,使えるコアが増えたことです。昔は2コアあるだけですごいことでした。今では8コア,16コア,32コアのマシンがありますし,Intelを信じるなら5年か10年先には数千コアのマシンも実現するでしょう。一つひとつは超高速というほどでなくても,それが2,048個集まれば......そういう意味では,時代はマルチコアプログラミングの方向に動いていると思います。PHPにとって,これはいささか興味深い事態です。いうのも,PHPは非常にシングルスレッド的な言語ですが,Webで使われることがほとんどです。Webアプリケーションを単一コンカレントリクエスト前提で書く人はいません。世界のどこかにはそういう変わり者のイントラネットシステムも存在するかもしれませんが,一般的にWebでは大量のコンカレントリクエストを扱うものです。コア数が増えてもPHPのアプローチはほとんど変わりませんでした。多くのコンカレントリクエストを処理できるようになっただけです。ApacheでいえばMaxClientsを引き上げられるようになったのです。昔は20コンカレントリクエストぐらいが精一杯でしたが,今なら32コアのマシンを使えばたぶん80ぐらいまで上げられるでしょう。それを処理できるだけのCPUがあるからです。アーキテクチャの面ではコア数が増えるほど一台のマシンでスケールアウトできる幅が大きくなります。同じトラフィック量をさばくのに,昔なら10台必要だったところが,今では4台で足りるわけです。考えると,コア数の増加は今後もPHPのアプローチに影響を与えることはないでしょう。他の,Web以外の部分については,数千コアのCPUを活用できるように設計された新しいコンパイラや言語が出てくるでしょうね。Web用途については......。ラスマス:そう,Web用途については,Webは本質的にコンカレントだという,うまい言い訳があるので,シングルリクエスト内で処理する必要を感じません。要はレイテンシーの問題です。1リクエストで物事を30個ぐらい同時にやらせようとすると,リクエストが複雑になりすぎます。いうときはすこしモジュール化すべきです。複数リクエストを受けつけるようにすればいいのです。HTTP/2では複数リクエストの受信の仕方が改善されてますから。エンドポイントをもっと小さくして,各エンドポイントの処理を特化させるべきです。将来は数千コア使えるようになるとすれば――たとえばあるページが2,000のHTTP/2リクエストで構成されているとしましょう。2,000リクエストはPHPレベルで2,000エンドポイントを叩いた後,その数千コアに分散します。それぞれのリクエストが小分けにされていれば,テストも簡単だし,スケールアウトもしやすいし,スケーリングする上で粒度が高まる。一部のエンドポイントへの負荷が高まった場合に分散しやすくなります。あるタイプのエンドポイントにつきサーバファームを一つ,別のタイプのエンドポイントにもサーバファームを一つ,という使い方ができる。いう意味で,PHPはアーキテクチャ的にはうまくいっていると思います。整合性を考慮すべきなのはPHPより上のレベルです。大きな変更を行う必要は,少なくとも近い未来にはないでしょう。私の予想が完全に間違っている可能性はありますよ。したら今後コンピュータの世界にまったく新しい概念が入ってくるかもしれません。私にとって,将来解決されてほしいのはコンパイラの問題ですね。ロジックを記述してCPUで動くコードに変える決定的な手段が必要です。ラスマスさんから見て,過去20年間でいちばん顕著なトレンドを一つ挙げるとすれば,何だと思いますか?ラスマス:それは難しい質問ですね。いくつか候補はありますが――たとえばSSDの登場はデータベースへのアプローチをかなり変えましたね。5年前ぐらいから,モバイルのネイティブアプリが出てきて何もかもが変わりました。ここ2,3年はどの携帯電話も画面が昔よりずっと高解像度になって,フルブラウザも使えるようになっている。ChromeもFirefoxも携帯で完全に動きますよね。今ではモバイルはデスクトップと張りあえる。事実上ほとんど同じレベルです。私はiPadを持っていますが,大きな画面がついているのにモバイルサイトが表示されてしまうので,たびたびわずらわしい思いをしています。そのたびにいちいちボタンをタップして,いいからデスクトップサイトを見せてくれ,フルブラウザで操作させてくれ,携帯電話用のちまちました簡易サイトなんて必要ないんだ,と伝えなければならないぐらいです。この2年でいえば,モバイルWebがいちばんの大きな変化でしょうね。将来的にはモバイルWebが主流になればいいなと思います。ネイティブアプリは危険です。壁で囲われた庭のようなものです。昔でいえばAOLです。Webエクスペリエンスというものは,すべてがシンボリックリンクやハードリンクで相互接続された巨大な集合体のようなものであるべきで,ネイティブアプリの中から他のサービスをほとんど意識せずに使えることが望ましい。ユーザーをアプリ内に囲い込んでしまって,AOLみたいにその中でできることしかさせないというのは,一つの方法ではあると思いますが,Webにとっては良くないことだと思うのです。ネイティブアプリに依存しないでやっていけるようになれば,もっと快適になるでしょう。PHPのよりよい未来のために,私たち開発者ができることはなんですか?ラスマス:今すぐできることでいえば,PHP7のテストに協力してください。今はリリース準備を整えていて,いろいろなコードを使ってテストしてくれる人が一人でも多く必要です。PHP7に移行する予定がなくても,テストだけはやってくれると助かります。動かないところがあれば,どうぞ私たちに知らせてください。その際は,できる範囲で問題を特定してくださるようにお願いします。「自分のコードが動かない」と言われても対処できません。コードを見て,どの部分が動かないのかを絞り込んでみてください。動かないのか分からないときは,バグとして報告してください。バグでなければなぜ動かないのか説明しますし,そうでなければ「やあ,これはバグですね。報告ありがとうございます,直しておきますよ」と言います。PHP7がリリースされるときには,あなたのコードはちゃんと動くはずです。私たちに協力すれば,あなたの利益にもなるのです。ご協力をお願いします。難しいことではありません。PHP7を動かす方法はいくらでもあります。PHP7をテストすることですね。ラスマス:皆さんが作ったものをPHP7「で」テストしてください。何か貢献したいというお気持ちがあれば,バグの修正,ドキュメントの編纂,新機能に関するRFCの作成,手伝っていただけることはたくさんあります。追加してほしい機能があれば,PHPのWikiからRFCを提出してください。バグの修正を手伝っていただけると助かります。いま関わっている人々の大部分はバグ修正から入ってきたのです。実のところ,自分で報告したバグを自分で直そうとしたという場合がほとんどです。バグを見つけて報告したのに,6か月経っても誰も反応しない。くそっ,俺のバグ直せよ......とまあ,そんなふうに入ってきた人がほとんどで,別に特別な人たちではないのです。私たちは毎日PHPを使います。バグに困っていないとき,私は暇を見てときどきバグデータベースを通して眺めるときもありますが......PHP開発に関わる人々はみなPHPユーザーでもあって,自分で使っていて出たバグに集中する傾向があります。バグに行き当たったら,自分で直してバグデータベースのバグをクローズすれば,あなたもPHPコード開発者です。やってバグの半分をクローズしたら,あなたはもう立派なPHPのコア開発者です。@php.netのEメールアドレスをさしあげます。これで,あなたも私と同じように人々からバグを直せとせっついてもらえますよ(笑)さて,今日は話を聞いてくださってありがとう。長時間本当にありがとうございました。興味深いお話をうかがえて,うれしく思います。2019」を開催しました。DAY1・DAY2の様子を注目セッションとともにお伝えします。LINEのエンジニア3名がイベントに先駆けて見どころを紹介します。コードの安全性・安定性を高める開発サイクル~テスト管理の効率を上げ,脆弱性診断を自動で行う~本連載では,連載「業務を改善する情報共有の仕掛け」を受けつつ,安全性・安定性を加えた開発サイクルについて考えていきます。若者世代から圧倒的な人気を誇るライブ配信&動画投稿コミュニティアプリ「MixChannel」(ミクチャ)の裏側(レコメンドシステムやサーバサイド開発など)について解説していきます。その他の連載CSS3アニメーションでつくるインターフェイス表現CSS3によるアニメーション表現を紹介していきます。その中でも,幅広い読者に応用してもらえるだろうインターフェイスを主なお題とします。MySQL道普請便り本連載では,MySQLを使ったアプリ開発・運用に関するノウハウをご紹介していきます。RecipeUbuntuの強力なデスクトップ機能を活用するための,いろいろなレシピをお届けします。JavaScriptセキュリティの基礎知識JavaScriptに関するセキュリティ上の問題はどこで発生し,どうすれば防ぐことができるのか?について解説していきます。〜システムをきちんと運用するための基礎知識システムは「作って終わり」ではなく,運用の中でさまざまな問題が発生します。問題の発生に備えて事前にどのような対応をしておくべきなのか,問題発生時に何をしなければならないのか,ポイントを解説していきます。きたみりゅうじの聞かせて珍プレーソフトウェア開発の現場で体験したトホホな失敗,思わずうなる珍プレーをきたみりゅうじ氏が四コママンガで紹介。Linuxのメンテナンスの傍ら,Linuxやオープンソースソフトと日々を過ごす著者が,その魅力とつきあい方を,エッセイ風味でお届けします。PRESS特別編集部員,さわやか笑顔のスーパーハカーはまちちゃんとネット大好き14歳わかばちゃんが,毎号,読者の皆さんから寄せられたおたよりを紹介します。皆さんの日頃の悩みにも答えちゃいますよ。]メールでのお知らせメールで次の案内をお送りしております。メールの配信を希望する方は,利用したい項目をチェックしてメールアドレスを入力し,[登録]ボタンをクリックしてください。UPDATES[ほぼ週間に1回]新刊メールマガジン[ほぼ週間に1回]電脳会議の各号案内[ほぼ1ヵ月半に1回]※変更する場合や停止する場合は,登録情報変更ページをご覧ください。※登録いただいたメールアドレスには,そのお知らせ以外,配信いたしません。Ltd.ページ内容の全部あるいは一部を無断で利用することを禁止します。個別にライセンスが設定されている記事等はそのライセンスに従います。