コンピュータ

Webプログラミング史

Published by:

このドキュメントについて

Webプログラミングの歴史はせいぜい10数年と浅く、古くはPerlを使ったCGIやJavaアプレット、最近ではHTML5やスマートフォン向けのアプリ開発などに話題が集まっています。
Webの進化の歴史は、2000年ごろに検索サービスを開始したGoogle検索の歴史とも重なるため、キーワード検索を使って過去の文献を探すこともできますが、時系列に沿ってWebの進化をまとめた資料というものは意外に多くありません。
そこで、1999年ごろからWeb開発に興味を持ち続けている当事者の観点からWeb開発の歴史を残しておくことは、多少なりとも意味のある試みと思い、この度「Webプログラミング史」としてまとめることにしました。

Webプログラミング史

黎明期(~1999年)

私自身がWebプログラミングをはじめた1999年より以前については、正直多くを語ることができませんが、Perlを使ったCGI(アクセスカウンタ、掲示板)や、JavaScriptを使ったページのにぎやかし程度だったように思います。

当時はWebプログラミングよりは、OSインストール型のソフトウェアがほとんどで、お気に入りのソフトをインストールしては、ローカルPC上で利用するという考え方が一般的でした。

開発環境や実行環境も整備されていなかったため、数多くのバッドノウハウが生まれ、Perl職人、JavaScript職人といったある種の特殊技能として見られることが多い時期でした。

検索エンジンシステム大流行の巻(2000年~2002年)

Google以前はどうやって情報を検索していたのでしょうか。

コンピュータを2000年以降に使い始めた方には考えられないかもしれませんが、Google登場以前は、「キーワード検索」という概念が実質ありませんでした。
現在でいうアルファブロガーのような方たちが、有用なサイトのURLを集めて、リンク集を作成し、そこからツリー上にたどっていく方法が一般的でした。
Yahoo!はそこに商機を見出し、各Webサイトオーナーに有料でリンクを販売し、カテゴリ別にあらゆるサイトへのリンク集を用意することで、一大ポータルサイトの座を獲得するにいたりました

キーワード検索機能を提供するWebサービスもあるにはありましたが、精度は低く、対象サイトも少なく、一回の検索に5~10秒近くかかるような代物だったため、一般的なサービスとしては認識されていませんでした。

Googleが登場したのは、まさにそんな状況だったのです。
あらゆる情報をコンマ数秒で表示してくれるGoogleに世界は熱狂し、検索エンジンブームが到来。猫も杓子も検索エンジンを作成する時期が続きます。
コンピュータ雑誌では検索エンジンの作り方を特集し、特に日本ではNamazu(当時最先端の日本語全文検索システム)を使えないとモグリ的な風潮が広まりました。

サーバーサイド・プログラミング大流行の巻(2003年~2004年)

このころには、動的なコンテンツを表示するためのWeb用言語として、PHP、Perl、Java Servletが出揃い、それぞれが猛烈な勢いで進化していきました。

PerlではCPANサイトの利用が活発化し、PHPはユーザープログラマの要望にこたえてありとあらゆる機能が組み込み関数化され、Java Servletではデザインパターンを駆使した開発スタイルが大流行しました。

それらの開発言語とは別に、データ構造としてのXMLや、分析・設計言語のUML、HTMLにデザインを適用するCSSなど、関連技術が毎月のように登場し、発展し続けたため、開発関係者はとにかく勉強しまくって、エンジニア30代限界説などがまことしやかにささやかされ始めたのもこのころです。

サーバーサイド・プログラミング洗練期(2004年~2005年)

開発言語としてRuby on Railsの採用が増え始め、PHPはPearやZend Frameworkといったフレームワークの利用が一般的になり、データベースへのアクセスはO/Rマッピングで行うといった、一から全部を作らず、これまで培われてきた技術や方法論を集約し、誰でも同じようにコーディングするような開発スタイルが定着してきました。

Javaの開発においても、アスペクト指向やDI(依存性の注入)という画期的な「発明」により、これまでに蓄積されたServlet開発の問題点を一掃することに成功しました。

Web開発の未来としては、プログラミングの自動化やメタ言語・メタメタ言語による設計など、より抽象的な方向に進むかのように思われていました。

Ajaxの台頭(2005年~2006年)

2000年にWebの世界を一変させたGoogleが、今度はWebの進化の方向を、誰も考えていなかった分野へ切り替えてしまいました。
それが、Googleマップのリリースです。

Googleマップのリリース日以降、開発者たちは新種の珍獣でも見つけたかのように、GoogleマップのHTMLソースを調べまくりました。
そこにFlashのswfファイルが読み込まれておらず、JavaScriptによって作られていることを発見してからは、オンライン・オフラインを問わずいたるところでGoogleマップ勉強会が催され、「Ajax」という用語が作られてからはすさまじい勢いで関連サービスが生まれました。

JavaScriptは90年代からJavaScript職人によって利用されていたものの、ブラウザ間の仕様の不統一がたたって、ほとんど黙殺され続けてきた不遇の言語ですが、Googleマップ以降は2011年現在にいたるまで、重要言語としての地位を保ち続けています。
ただ、ブラウザ間のJavaScriptエンジンの実装の差異は大きく、統一的にコーディングを行うためのフレームワークの登場が望まれ続け、この時期開発されたPrototype.jsが最初のデファクトスタンダードとなりました。

Web2.0という用語が新聞に載り始めたのもこのころで、新たな商機を見出した企業が作って作って作りまくりました。

Webの進化が止まった?(2007年~2008年)

Web2.0という用語が大衆化し、サーバーサイド・プログラムの画期的な進化も現れず、クライアント・プログラム用のライブラリとしてはPrototype.jsに代わってjQueryの一人勝ちが見え始めてきたこのころ、「もう新しいWebサービスは生まれないのではないか」という問いかけがちらほらと聞かれるようになりました。

ゼロベースから新サービスを立ち上げるのではなく、GoogleやAmazonなどが提供するAPIを呼び出して、それらのAPIから受け取った情報を組み合わせたマッシュアップサービスこそが新しいWeb開発のスタイルかのように喧伝されました。
Web開発者も、APIが生まれるたびに使い方を学ぶ羽目になるという状況が続きました。

クラウドという用語が生まれたのもこの時期で、Web開発そのものがブラックボックス化している様子をうまく表していると感じられました。

つぶやきを中心に世界が回る(2009年~2011年)

2006年にサービスが開始したTwitterの可能性を、マッシュアップに明け暮れていた企業は見逃し続けていましたが、「ツイート」の魔力は2009年ごろにはもう抵抗できないくらいの勢いになっていました。

世界中のありとあらゆる情報が140文字のトークンとなり、すべてTwitterというブラックホールに吸い込まれていきました。
その影響もあってか、ブログなどでのまとまった形のコンテンツが相対的に減少したように、個人的には感じています。

さらに、TwitterやiPhoneの登場に呼応して、Webアプリという市場が形成され始めました。
Apple社のApp Storeという名称には、商標登録無効を訴える騒ぎが持ち上がるほどに、「アプリ」というキーワードがWeb開発のトレンドになっています。

これまではスケーラビリティー(拡張性、発展性)というキーワードの元に拡大・発展を続けてきたWebが、Twitterやアプリなどのように縮小を始めてきているのは何を示しているのでしょう。
これは未来になってみないと誰にも分からない問いなのかもしれません。

to be continued..

過去Webの歩き方

発行・更新年を意識した検索方法

この文書で見てきたように、Webの開発は二順も三順もしています。
2005年くらいまではキーワードだけによる検索も有効でしたが、サーバーサイド開発が盛り上がった2005年以前の情報は玉石混淆で、本当に現在使うべき方法を見つけることはなかなか難しいものです(クライアントサイド開発に関しては現在がその状況です)。

たとえば、Javaのプログラムでユーザーが入力した文字列の空白チェックをしたいと思います。
検索キーワード「java 空白 チェック」でGoogle検索すると、検索結果の1ページ目に出てくるのは、現在では不適切な情報ばかりだったりします。

代わりに、「java 空白 チェック 2011」と西暦を指定して検索すると、1ページ目の最初の10件のうち、3~4件は有用な情報を見つけることができるようになります。

西暦指定をしても、過去の情報が出てくる場合がありますので、かならずいつ書かれたドキュメントなのかを意識して参考にすることが肝心です。

Q&Aサイトは比較参考程度に

こと開発に関する情報ソースとして、Q&Aサイトで解決できることは稀です。
プロフェッショナルの回答者は少なく、「ググってコピペ」タイプの方が多いため、古い情報を転載していることが非常に多いためです。

アメリカでは専門家がアンサーしてくれるQuoraというWebサービスが2010年にに開始しましたが、上記のような問題を解決しうるのか注目されています。

著者略歴

smilkobuta
プログラミング大好きな九州男児。

最初に作ったプログラムは時間計算プログラム。自作音楽テープを作る際、A面・B面に無駄なく曲を詰め込むために作成した。
開発環境は、父のワープロにおまけでついていた表計算ソフト。

幼いころからの夢であったフランス料理のコックを目指して、調理師専門学校卒業後に渡仏。
その後、製菓の勉強のため上京するも、PCの楽しさに目覚めてSEに転身。

いろいろあって今にいたる。

日常

Gmailのパスワードの変更方法

Published by:

昨日、数百名分のGmailアカウントがハッキングされたというニュースがあり、フィッシング攻撃が原因ということらしいです。
が、フィッシングというのはそもそも利用者側で防がなければいけない問題で、メールのパスワードと同じパスワードを色んなWebサービスで同じにしているのがまずいのです。
xxxx@gmail.comというメールアドレスのパスワードが1234だとして、同じメールアドレスとパスワードの組み合わせで別のサービスを利用する危険性は分かりますよね?

というわけで、私のパートナーにも早速変えさせたのですが、どこで変えていいのか分からないという。
Gmailの画面を見ると、確かに設定の変更方法が分かりにくいんですよね。

他にもTwitterでどうしたらいいのでしょうか・・・・というお問い合わせを頂いたりしましたので、ここで一つまとめておきます。


1. 画面の右上のメールアドレスをクリック

 
画面の右上


2. 「アカウント設定」をクリック

 
「アカウント設定」をクリック


3. 「パスワードを変更する」をクリック

 
「パスワードを変更する」をクリック


です。
パスワードを同じにしている人は、一秒でも早く変更してください!!!

日常

日能研の電車広告の問題がすばらしかった

Published by:

ので、たっぷり10分以上かけて問題に取り組みました。
今なら淑徳与野中学校に入学できる自信があります。

2010年 淑徳与野中学校

最初全然分かる気がしなかったのですが、少しずつ少しずつ問題の意図が解けてきます。
最後の最後まで、自分で面積を計算できる気がしませんでしたが、理解できた勢いで電車の中で面積まで計算してしまいました(69π(パイ)。多分・・)。
どうやったらこんな問題が思いつくのかが知りたいです。

これを読んだ皆さまにも、10分間だけ今やっている作業を止めて、ぜひトライしてみてください。

解答はこちら

コンピュータ

Zabbixでログインできないとき

Published by:

ZabbixというのはLinux用のシステム管理ツールですが、MySQLのバージョンによっては変なエラーがたくさん出てログインすら ままなりません。

—-
Error in query [select u.* from users u where u.alias=’guest’ and (u.userid div 100000000000000) in (0) ] [You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ‘div 100000000000000) in (0)’ at line 1]
—-

こんな感じ。
うんざりしながらもパッチを作りましたので、ログインできなくてうんざりしている人はお試しください。

—-
$ diff -ubB /usr/share/zabbix/include/db.inc.php.20110218 /usr/share/zabbix/include/db.inc.php
— /usr/share/zabbix/include/db.inc.php.20110218 2011-01-04 01:11:03.000000000 +0900
+++ /usr/share/zabbix/include/db.inc.php 2011-02-18 17:41:16.590757194 +0900
@@ -518,7 +518,7 @@
switch($DB_TYPE)
{
case “MYSQL”:
– $result = ‘(‘.$id_name.’ div 100000000000000)’;
+ $result = ‘round(‘.$id_name.’ / 100000000000000)’;
break;
case “ORACLE”:
$result = ‘round(‘.$id_name.’/100000000000000)’;
—-

日常

おしっこ太郎

Published by:

息子のために、自作のお話を聞かせることがあります。
桃太郎などの挿入歌を歌っているためか、息子はお話のことを「うた」と呼んでいます。

最初は「おむすびころころ」とか「桃太郎」ばかりでしたが、何となく自作のお話を聞かせていると、次の日もその話を聞きたがったりして、そうかそうかと喜んでおかしな話をしてあげています。

最近気に入っているのがこの「おしっこ太郎」。
夜になかなか寝なくてグズグズしているときに、この「おしっこのうた」で機嫌を取り繕いました。

—-
むか~しむかしある所に、おしっこ太郎という男の子がいました。
おしっこ太郎は、いつもしーっとおしっこをし続けていました。

「おしっこが止まらないよう」
おしっこ太郎はそう泣きながらしーっと走り回っていました。

そこへ、ブタの神様がふわふわっと下りてきて言いました。
「どうしたんだい、おしっこ太郎。何をそんなに騒いでいるんだい?」
「おしっこが止まらないんです。どうか止めてください。」そうおしっこ太郎が答えました。

ブタの神様は言いました。
「私はブタの神様だからおしっこは止められないなあ。知り合いのおしっこの神様を連れてきてやろう。」
そう言って、ブタの神様はふわふわっと上のほうへ行ってしまいました。

おしっこ太郎がおしっこをしーっとしながら待っていると、ブタの神様とキリンの神様がふわふわと降りてきました。
「おしっこの神様が今ちょっといなかったので、代わりにキリンの神様を連れてきたよ。」
そうブタの神様は言いました。

キリンの神様はおしっこ太郎を見て言いました。
「私はおしっこの神様ではないので、おしっこは止められないなあ。でも、君はちょっと首が短かするのではないのかね。首を長くしたらおしっこが止まるかもしれないよ。」

おしっこ太郎は首が長くなるのはイヤだったので、「いえ、いいです。」と答えました。

ブタの神様がまた言いました。
「もうそろそろおしっこの神様が帰ってきたかもしれない。またちょっと待っていなさい。」そう言って、キリンの神様と一緒にふわふわと上に行ってしまいました。

おしっこ太郎がまたおしっこをしながら待っていると、今度こそおしっこの神様が降りてきました。

おしっこの神様が言いました。
「おお、おしっこ太郎や。おしっこが止まらないのかい。それじゃあちょっとついて来なさい。」
そう言って、おしっこの神様はおしっこ太郎の手を引いて歩き始めました。

おしっこの神様が言いました。
「この扉を開いて、中のいすに座りなさい。」
おしっこ太郎は言われたとおり、扉を開けて中にあった小さないすに座りました。

そこはトイレだったのです。

「わ~。トイレでおしっこすると気持ちいいです。」
おしっこ太郎が喜んでしーっと思う存分おしっこをすると、ぴたりとおしっこが止まりましたとさ。

—-

いろいろすみません。
子供って下ネタ好きなんです。

ソフトウェアidea

idea#12 写真がリアルに動くフォトアルバム

Published by:

この動画、一見ヘリコプターから撮られているように見えますが、実は写真を合成したムービーです。

Desert Motion from XNcreative on Vimeo.

ここまでしっかり作りこまないにしても、動きを加えたフォトアルバムを作ってみたいです。

  • 上下左右に微妙に動く
  • フォーカスがあたっているものだけ前後に動く
  • 小さなアイテムを認識して動かす(ボールが転がったり)
  • 天気を認識してエフェクトを加える
  • 撮影スポットを認識してBGMを加える

ソフトウェア名称・・・写真入りこみアルバム
工数見積もり・・・多分ものすごい時間がかかります。

日常

Picasa3の人物スキャン機能

Published by:

PicasaとはGoogleが提供している写真管理ソフトですが、それの顔認識の仕組みが面白くて、デジカメから取り込むたびについつい名前をつけてあげてしまいます。

同じような顔を自動的にひとまとめにしてしまうため、たまに違う人が一つになってしまうこともありますが(たいてい子供)、精度は決して悪くないと思います。

一緒に写りこんだ他人も認識されますので、たまに「誰だよこれ!!」みたいに大ウケすることもあり、単純作業ながら飽きないんですよね。

↓ みたいに、人形も顔認識されます 😀

年賀状用に作った紙粘土人形

年賀状用に作った紙粘土人形

単純作業が全然苦にならないよって人におすすめのヒマつぶしです。

ソフトウェアidea

idea#11 旅行記録用のWordPressテーマもしくはWordPresssプラグイン

Published by:

旅行先の写真、日記、つぶやき、場所、時間、気温、天気、・・・諸々の情報を半自動、半手動で綺麗にまとめられるような、そんなシステムが欲しいと前々から思っていました。

昨晩パートナーにああだこうだと説明していたら、ふとWordPressのテーマとして作ればいいことに気が付きました。
ただ、現在のWordPress(3.0系)では、カテゴリごとのテーマを定義できないので、WordPresssプラグインの方がいいのかもしれません。

インターフェースのイメージとしてはQWiki ↓これ。

こうなると、抱えているすべての仕事をほったらかして作りたくなる衝動が・・・
まあ、そんな衝動をなだめるために、ここに書いているわけですが。。

ソフトウェア名称・・・LogTrip in WordPress
工数見積もり・・・10人日

ソフトウェアidea

idea#10 任意の位置、時間の過去お天気API

Published by:

自分のデジカメで撮影した動画をレンタルサーバーで見られるようなシステムを過去に作っているのですが(これ便利です。非公開だけど)、その動画を撮影した時点のお天気を表示したいと思い、このアイディアを思いつきました。

Youtubeなんかでも、動画のそばに地図と当時のお天気が表示されていたら面白く無いですか?

過去のお天気データはどこかで(ブックマークしてなかったけど)公開されており、意外に簡単にできるなと思っていたのですが、なんとなく頓挫しています。
だれか仕事で依頼してくれれば自分も使えて便利なんですけど。
どうでしょう。

ソフトウェア名称・・・タイムお天気(仮)
工数見積もり・・・10人日

ソフトウェアidea

idea#9: 日付と位置で写真検索

Published by:

これもちょっと前に途中まで取り組んでいて放り投げたプログラムです。
デジカメで撮影した写真には撮影日時などの情報(EXIF)が含まれており、プログラムでそれを解析することが出来ます。
また、GPSつきの携帯やデジカメで撮影した写真では、位置情報(緯度経度だけではなく、カメラの向きまでも!)も含まれており、これもプログラムで解析可能です。

なので、インターネット上のそれらの写真データをすべて解析し、「6月のパリ」とか、「クリスマスの全世界の様子」などを検索できるようにすれば面白いなと。
例えば、旅行代理店サイトでそれらの写真を一緒に表示できれば、旅行時期の現地の様子も分かって面白かろうと。

  1. インターネット上の画像を収集
  2. 写真のEXIFを取り込む
  3. インデックス化
  4. Web API作成
  5. 検索インターフェースも作成

上記2、3を作り、1で収集ロボットを作るところで時間がなくなり・・・今に至っています。

ソフトウェア名称・・・タイムアルバム(仮)
工数見積もり・・・1.5人月