C/S システムの技術動向について思うところ

この件 に関して、自分も同じように疑問を感じており、酔っ払った勢いで以下のような一連のコメントを Twitter に先日投下していた。

(尚、酔っ払いが故にリッチクライアントの略語を RA としている点をご容赦くださ)

しかしそろそろ android なり iphone なりのアプリやれないとエンジニアとして危うい気はしている


HTTP は Hypertext を Transfer するだけのプロトコルでは既になく、汎用的なテキスト送受信プロトコルになってるわけで


HTTP の上に乗っかるプロトコルとして SOAP とか XMLRPC とか REST があると理解している


SOAP, XMLRPC の場合ペイロードXML になって REST の場合は大体なんでもいいんかな。判ってないけれど


SOAP/XMLRPC の値の中にさらに YAML とか JSON 入れてるなら大分無駄な気がするけれどまぁいいや。そういうのも開発効率と処理効率が許せばありか


ここまで言って HTML はプロトコルではないしペイロードの一種か。HTTPの。


んで HTML/CSS/JavaScript のセットがクライアントとそのUIを形成するとして、まぁリモートクライアントとしての機能を有するならサーバとやり取りするのはプロトコルとしての HTML/XMLRPC/REST/SOAP あたりを使えば良い


ペイロードはお好みにするとして


ってなると HTML/CSS/JS のセットっていうのは HTTP/SOAP/XMLRPC/REST なりを喋れるクライアントというだけだから、そこだけ見たらHTMLである必然性はない


というのが RA 周りの話なのかな


まぁRA単品で考えるとこんな HTML の議論とかしないでもいいのかもしれんが。ただまぁ「HTTPの上に乗れる」技術が発達したのは RA 作る上で優位にはなったか


そこまでなら Ajax いいよね、とか Flash いいよね、で終わるのかもしれないけれど、そこで Chrome OSAndroid, iPhone の台頭なわけで


無線ブロードバンドが十分使い物になる状態で RA の作り易さが発達したうえ、過去に見られたウェアラブルコンピュータの夢を体現するそれらが結合したときどうなるのかなーとか、そんとき技術者としての立ち位置はどこにあるのかなーとか。Web やってらしばらく大丈夫ではあると思うのだけれど。


ただ古き良き HTML + CSSJavaScript はおまけに使って画面遷移多発というものばかり作っていたら発想が時代においてかれると思う。


画面遷移しないことが重要なんではなくて、クライアントアプリを作れるかどうかが問題


あれ。そうなるとサーバアプリどうなるんだ。

でまぁ、自分の認識ではこの流れって世代交代レベルだと思っている。10年ひと昔って言うけれど、ちょうど10年前あたりが PHP + RDB が流行りだしたあたりだった。OSI参照モデルの上の方がもう少し再分化されるイメージでいる。

サーバアプリ作る側はよりエンタープライズ寄りの技法を持っていくことになるし、クライアント寄りの人は HTTP の理解とクライアント向けインターフェースのスキルを磨いていくことになるんだろう*1は。ただこれが日本の、特にマネジメント側で意識されていくかっていうと微妙で、あまりあっち側の人たちには区別がつかず、区別つく人は少数だと思う*2

ポイントとしては XML を始めとする汎用的なデータ表現形式(テキスト)が規格化・整理整頓されてきたが故に HTTP がテキストベースの汎用プロトコルとして成り立ってきており、HTTP の上にプロトコルを構築できるようになった(SOAP/REST 等)*3。それらがあるから Ajax という非同期・シームレスな技術が確立し得た。もちろん JavaScript も外せない要素だけど、JavaScript である必要はないし、現在の”Webブラウザ”が HTTP(とその下位のプロトコル)を利用したアプリを開発する上での現在の最適解ではあるにせよ、それが他のプラットフォームあってもよい。

そのうえで iphone/android の台頭って言うのは俺的にかなり外せない動向であって、ああいったポータブルかつ操作方法の異なるな情報端末が主流に載ってくると必要な技術やスキル、UIの構成方法など大分代わってきて、技術マップが地殻変動を起こす可能性が気になっているにょろ。

まぁ5年後にはそれなりに技術の風景が変わっていて世代交代も進みだし、僕らがかつて目にした”レガシーなシステムしか扱えない人”が次々にドロップアウトしていった人の風景が繰り返されそうな気がするので、追いついていける程度には勉強していこうかなと思う次第。

後ろ向きな言い方でいえば、カラム数500個あるテーブルを僕らは笑っているけれど、追いついておかないと将来の若い連中から見たら同等のことをやってしまうかもしれない。前向きな方でいえば、技術屋なのだから時代に必要とされる技術や時代を引っ張るような技術を求めていきたいもんです。

*1:また重要な点として、Webサービスっつー要素もある。この後書いている”クライアント”と Webサービス上の”クライアント”は段々区別がつかなくなっていくと思うんだよねー

*2:このあたりどうしていったらいいかは、まだノーアイディア

*3:細かい事を言い出すと HTTP が実装してる Content-Type の充実とか Base64 とかのエンコード技法もある