こぶたのラッパ » Blog Archives

Tag Archives: ソフトウェア

コンピュータ

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に転身。

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

ソフトウェアidea

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

Published by:

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

Desert Motion from XNcreative on Vimeo.

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

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

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

ソフトウェア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人月

ソフトウェアidea

idea#8: ガラス越しのタッチパネル操作

Published by:

touchwall

タッチパネルのPCやタブレットではなくても、後付けでタッチパネル化出来る製品が幾つかあります。
透明なシート状になっており、ディスプレイに貼るような製品です。

↓こういうの

今日見たニュースでは、

普通の液晶モニターがマルチタッチディスプレイになるパネルが登場、マウス無しで操作可能に(via Gigazine)

ディスプレイをタッチするだけで操作できる機能がスマートフォンやタブレット端末などを中心に人気を博していますが、「普通の液晶モニターがマルチタッチディスプレイになる」というパネルが登場しました。

画面にタッチするだけでマウスを使わずとも操作できるようになるため、より直感的な操作が可能となるかもしれません。

もちろん普通のPCにこれをつけても良いとは思いますが、商店などでの店頭設置PC用にも使えるのかなと思いました。
例えば、不動産屋さんが不動産情報検索ができるパソコンを店頭に設置した場合、PCはお店の中に置いたまま、シートだけをガラスの外に貼り付けることが出来れば、PCを外に設置することのリスクをかけずに、見込み客が自由にパソコンを操作できるかもしれません。

タッチパネル・ディスプレイ(amazonの商品一覧)

ソフトウェアidea

idea#7: イラストの3D化アプリ

Published by:

すでにありそうですが・・・。特にマンガを対象とした3D化アプリ。
構成としてはコアツールと、作者(もしくは画風)ごとに用意したプラグイン形式。ジョジョプラグインとか、こち亀プラグインとか。

ソフトウェア名称・・・Manga-Raising
工数見積もり・・・2.0人月

ソフトウェアidea

idea#6: FamLinesの機能追加2

Published by:

まだ基本の機能ばかりのFamLinesですが、これ作んないとというものを書いておきます。
要するにTODOリストです・・・ってそういえば一回書いたなこれ。

  • ゲストモード・・・誰でもログインなしにフル機能を使えるモード。ゲストアカウントは好きにつくって、みんなで共有できる。
  • スクロールバーを左に切り替えスイッチ・・・マウスがないときに便利。

ソフトウェア名称・・・FamLines
工数見積もり・・・1.5人日

ソフトウェアidea

idea#5: ブラウザを使ったテレビ電話

Published by:

famtalk

実家と「簡単に」テレビ電話ができたらいいなあとふと考えていろいろ調べたところ、jQuery webcam pluginというウェブカム制御ができるjQueryプラグインがありました。
これとred5(オープンソースのストリーミングサーバー)を組み合わせれば意外に簡単にできるかも?と思い、レンタルVPNサーバーにred5をインストールしてみたのですが、メモリ不足(?)で起動しない。

でここで頓挫したわけですが、多分red5を動かすために使うJVM(OpenJava)の設定の見直しでうまくいきそう・・・というところです。

ビデオチャットそのものはGmailにもついているし、Facebookでもサービス提供されそうだということらしいですが、実家の母親に使ってもらうには敷居が高すぎるんですよね。。

Skypeでいいじゃんという人もいるでしょうが、私はブラウザが好きなので、是非ともブラウザでやりたいわけです。

ソフトウェア名・・・famtalk(仮)
工数見積もり・・・10人日

ソフトウェアidea

idea#4: デジカメ撮影後、既存のシステムへ自動取り込み

Published by:

WirePhoto

クライアントさんからの要望でこういうの欲しいと言われていたのですが、ハードウェア面と画像解析部分で頓挫。いつか作りたいと思っています。

デジカメというよりは、クロネコヤマトの人が持っている端末のイメージで、まず該当する商品を選び、それから撮影し、最後にシステムに取り込むという流れで使いたいのです。

単にデジカメ撮影して取り込むだけだと、自分で写真をより分けないとだめですよね?
そこを効率化したいのです。

一応クライアントさんへの提案として、事前に商品のQRコード一覧を印刷しておいて、まず該当商品のQRコードを印刷してもらい、続いて商品を印刷すれば、システムへの取り込みができますということを伝えてみたのですが、最初のQRコードの印刷が面倒だと。確かにそうかも知れない。

ドラゴンレーダー作成でLCDを多少扱えるようになったので、「Arduino+LCD+CMOSセンサ+無線LANシールド+SDカード」でいけるのでは・・・?と企んでいますが、まだ構想段階です。

そういえばこれ、ソフトウェアじゃないぞ。まあいいや。

ソフトウェア名・・・WirePhoto(仮)
工数見積もり・・・20人日