cakephperの日記(CakePHP, Laravel, PHP)


継続的WebセキュリティテストサービスVAddyを始めました!

2015-01-20

村井純著インターネットを読んで自分の思考を形成してきたものを振り返る

1995年に出版された村井 純教授の「インターネット」という書籍を読みました。

古い本ですが、色々な気付きが多く楽しめました。書籍「Unixという考え方」と同じような感覚。


継続的セキュリティテストサービスVAddyのプロジェクトリーダになってから私の考え方をメンバーに共有することが多くなってきました。今のこの考え方は、この15年ぐらいの時代の流れをずっと見てきて、それらの蓄積から来てるんだなと自分で感じ、それらをもっとうまく言語化してメンバーと共有したいと思っていました。

その中で一番強い影響を与えたインターネットというものの本質や哲学をうまく書いてある書籍が読みたくなり、この書籍を購入してみました。

この書籍の面白いところは、インターネットの歴史を作ってきた人からそれが学べる点です。グローバル視点が少なかったボードメンバー達に、日本だけでなく英語圏以外の地域のことも考えて活動してきた点は読んでて興奮しました。この人がいなかったら日本のインターネットの普及は10年ぐらい遅れてたんじゃないかと思うほど、技術だけではなく政治的な活動にも精力的な方です。

それから20年、2015年の今読んでみても面白いのですが、1995年の時点から未来を予測して執筆している箇所はあまり興味がわきませんでした。何故かというと、その予想はだいたい的中して既に当たり前になってきているからです。それも凄い話ですよね。



インターネットの本質

  • いいかげんな技術の集合で、それがなんとなく動く、ことが重要
  • データはほとんど着くけど着かない場合もある、その時は着くまで再送すれば良い
  • 完璧なネットワークを構築するよりも、クオリティが低く不通になっても構わないとして、敷設しやすくしてネットワークを広げた。それらが複雑に絡み合って集合した時に強靭さを持つようにして、データの保証はその上のレイヤー(TCP)で制御して途中のネットワークはそれを意識しない。
  • プログラムを単純にして、小さなコンピュータでも動き、プログラミングがやさしいため開発者が増えた
  • どれだけの技術者がその技術を支えられるかを考える。支える人が少なければ普及して運用されることもないという考え
  • とりえず90%は作って動かしてしまって、あとの10%は後回しにして最後の詰めの膨大なコストを無くす

支える開発者にフォーカスしてる点が興味深いですね。

まずは動くもの使ってもらえるものを正義として考え、完璧さを求めすぎてコストだけが膨れるようなものにしないことが重要だったのですね。

2000年ごろからのWeb2.0の流れも、永遠のベータと呼んでまずは最低限動くものを出して利用者の反応をみながら改善していくものでした。最近のリーンスタートアップも同じ感じですね。

SOAPではなく、WebAPIを公開してJSON形式で扱うのが普及したのも、多くの開発者が簡単に扱えたからでしょう。


実際の想定ケースからのシミュレーション

P94.

多くの学者は、こんな仕組みがうまく動くわけがない、みんなが一斉に話し始めたらぶつかり合ってしまうから性能の悪い通信システムで実用にはならないのではないか、などと言われていました

P95.

いちばん大切な事は、全員が一斉に話したらたぶん動かないだろうが、実際に人間が使っていくようなコミュニケーションは、分散することが予想でき、それに基づけばある程度の性能が得られる。

それが十分薬に立つならいいだろうという考え方です。

このおかげで、イーサネットが普及して安価ネットワーク構築が出来るようになって、今や無線LANさえも当たり前になってます。

誰が使うのか、どのように使うのか、それらを想定してうまく動けば使いやすくて低コストで普及しやすい方法が良いということですね。


「みんなで使う」が重要

P146

コンピュータの世界だけでどんなにいいことを考えても、広い範囲で使われる可能性を作っていかないと、そのソフトウェアはよくならない、ということです。

ですから不整合でも何でも、まずみんなが使えるようにして、コンピュータに対する期待と可能性を高めていくのはきわめて大切な事です。

今日、技術と人間の関係で、いちばん大切なことだと言ってよいと思います。

マルチバイト文字をどう扱っていくかという議論の時に、自分たちの理想を掲げて進んで誰も使ってくれなくなってしまうのは避けたいという想いがあったようです。結局は役に立たなければ何にもならないのだから、現在動いているものにいかに合わせて動かせるかという方向で進んで行ったとのこと。

学術的にはこれはかなり苦しい決断だったようですが、それがあって今の多言語環境が快適に使えるようになっていると思うと頭が下がります。


まとめ

インターネットの歴史や仕組みを知っていたけれども、この本を読んで新しい気付きや歴史が分かったのは良かったです。

自分が学生の時に読んでおきたかった1冊ですね。何で読まなかったんだろう・・・

2013-05-17

「Unixという考え方」はやはり良い本でした

UNIXという考え方―その設計思想と哲学という本を読み終えました。

原著のタイトルはThe Unix Philosophyです。


これは1996年に出版された古い本ですが、Unixの考え方を通して、良いソフトウェアとは何かが分かる良書です。150ページほどしかないのですぐに読み終わります。

3月に大阪に行った時に、なんだか無性にこの本が読みたくなって、梅田の本屋で買って読んでました。


言っていることは、大体こんな感じ

  • 小さく、シンプルに保つ
  • 小さな機能を集めて、大きなシステムを構成する(柔軟さを持ったまま)
  • 出力はコンピュータが処理できるように
  • 最適化や速度よりも移植性

特に移植性の箇所が面白かったです。

"多少遅く動作しても、いつでも他の環境に乗り移るように移植性を持って作っておく方が良いこと"が印象的でした。

いま、遅くても次に新しいマシンができたら解決してしまう可能性が高いから。だからいつでも違うマシンに移れるように、今のマシン固有のハックをしないこと。


現在に受け継がれる思想

1つのことだけをうまくやる小さなプログラムを作り、それを自由に組み合わせられるようにしておくこと。そうすれば、大きな処理をしたい場合も、それらを組み合わせていけるし、柔軟性も上がる。重要なのはそれらが組み合わせできるように、ちゃんとプログラムが理解する出力をすること。

今でもWebでAPI公開して、マッシュアップして大きなものを作るってのにそのまま受け継がれてますよね。

あと、AmazonAWSのサービスは、個々のサービスはシンプルですが、色々な種類のものを提供して、CloudFormationやBeansTalkのような組み合わせを用意してPaaSのように見せる点など、この思想にかなり近いなと思いました。


完璧は死へのカウントダウン

最後に、「さらなる10のUnixの考え方」の章では、90%の解を目指すや、劣っているほうが優れているなど、なるほどねーという感じで読んでました。

特に、"Unixがあらゆる面で本当に良くなったら、今度は死滅の危険を覚悟しなければならない"という箇所。あらゆる面のニーズを受け入れてしまうと複雑になってしまい、Unixの思想と反するところが出てくるから。

完璧なものじゃなく、多少劣っていても、これらの思想を維持できていたからUnixは生き残ってきたのでしょう。