パソコンの未来 自分がパソコンに求める物

chrome OSなどが出てきて、想像が膨らむパソコンの未来。
今回はWebのこっち側について考えてみる。

chrome OSは全てをWebのあっち側に持って行こうとしているとして、じゃあ、今こっち側に必要な物は何か。

まず、パソコンという箱があり、それがパソコンとして起動することは大前提だ。それにはwinは必要なくmacOSでもlinuxでも何でも良い。
パソコンが起動されて、次に必要な物はwebブラウザ。これは現状chrome一つでOKだと思う。
ブラウザ以外で今使用している自分のパソコンに入っているアプリケーションを見渡すと、サーバとのファイルのやりとりを行うftp系のツールだけは必要に感じた。それとプログラマとして開発環境はなくてはならない。

まずは、ftpによるサーバとのファイル操作について考えてみる。
私の場合、仕事でも趣味でもローカルのファイルをsftpでサーバにアップするという作業を頻繁に行う。ファイルというのは主にプログラミングのソースだ。また、ローカルのソースファイルは全てWeb上のSVNに上げている。これはバックアップというよりも、メインはSVNにあると思っている。つまりローカルにチェックアウトしたファイルは作業用の一時的な物で、いつ消えても構わない。
なので、環境が変わっても(違うパソコンからでも)常に同じ作業を行うことができる。

一度SVNからローカルにソースを落とし、修正しローカルで動作チェックを行い、サーバにアップして、SVNにも反映させる。
そんな作業になっている。
この一連の作業は、SVNから直接サービスを公開しているサーバにファイルをアップする事で改善できる。
具体的には、SVNにコミットした時点でWeb上にあるステージング環境へ自動反映させる。検証に問題がなければ、ステージングのファイル群を公開環境に反映させる。これはrsyncとかでカンタンに実現できる。

これによりローカルとwebとの接点は「SVN<−>ローカル」のみに絞られる。さらに細分化すると、SVNからのチェックアウト(若しくはアップデート)とSVNへのコミットの二つになる。
途中でsshなどによる作業も入るが、これは適当なスクリプトを作るだけでWebから行える。更にいえば、Webからssh接続を行うこともカンタンにできる。

これで一つ目のftpツールの問題は解決された。
続いて開発環境について考えてみたいと思う。

まず、自分の開発環境について定義をしておく。
私の場合、全てWebアプリケーションの開発だ。言語で言えば、php、html、cssjavascriptといった具合。たまにpythonとかperlも使うがここでは割愛。
プログラミングに使用するエディターはすべてeclipseになっている。たまに軽量なエディターも使用するが、なくてもいいのでこれまた省く事とする。
ローカルPC内にもサーバを立ち上げ動作検証を行うので、apacheやらphpやらMySQLなどその辺のものも一式入っている。
後は、動作検証用のブラウザ、コマンドラインからphpを動かしたりするときのターミナルが必要。
なくても良いが使っているものとし、DB設計にMySQLworkbenchなども上げられる。ほかの仕様書などのドキュメント系はほぼWebのプロジェクト管理ツール内にあるwikiで制作しているが、一応オフィスのexcelとwordも必要なツールとして数えておこう。

こんな感じの開発環境となっている。
さっそくこれらをWebに移行する事を考えてみる。

まずは消去法で。
ローカルのサーバ環境は全てあっち側に持って行ける。言うまでもないので細かい事は省略して、可能だということにしておく。
続いて、ブラウザも言うまでもなく、PCとして必要な物なのでパス。コマンドラインは前述したが、なんとでも代用がきく。
DB設計はなくてもいいし、WWW SQL Designerで代用もきく。
excelとwordもGoogleドキュメントで問題なし。もともとドキュメント系はweb上のwikiなので移行もスムーズだし、一元化できた方が能率的かつ管理も楽だ。
残るはエディターであるeclipse。エディターといっても、この中にはSVNやデバッガーも含まれる。Webに移行すると言うことでSVNは外してしまってもいいだろう。デバッガーはなくても何とかなる、、、はず。
なので、エディターとしての機能のみ考えていく。

php開発を行っている人で、エディターは秀丸だけ、とかvi系だけで行っている人もいるが、eclipseの補完機能とか、ホバーによる関数へのリンクとか、構文エラーの自動検知とか、絶対にあると作業効率が格段に増す機能はなくてはならない。使わない人の気が知れないぐらい依存している。
つまり、必要なのはweb上で使用でき、eclipse並みの高機能なエディターだ。むしろeclipseをweb上で使えることと言ってしまってもいいだろう。
残念ながら、今のところこれらのeclipseの機能はWeb上では無理だろう。作ることはできるとしても、動作が遅かったら意味がない。
不可能という言葉でこの問題解決は締めくくられてしまった。

仕方ないので、秀丸程度の機能が使えるweb上のエディターで代用ができることに無理矢理考え方を変えて、考察を続行することにした。
とりあえず、あることはある。
http://phpanywhere.net/
http://0-oo.net/sbox/web-editor
このあたり。
あとは、emacs。これはプラグインがたくさんあるから大概の機能は揃うはず。使ったことないので、なんとも、、、
ただ間違いなくマウスが使えない事は自分にとって最大のデメリットになる。コマンドラインでは複数のファイルの編集もできないし。ターミナルを複数立ち上げるとか?何か違うそれは。
emacsを使う前提だと既存のWebブラウザでは少し厳しいのではと思う。専用のターミナルで、複数タブや画面分割、複数の画面を一つのウインドウに表示するなど、犠牲にしかねる機能がある。要はpoderosa並みの機能が欲しい。まぁ理想として置いておく。

開発環境に関してはかなり多くの妥協に次ぐ妥協を重ねた結果、Web上若しくはサーバ側で動きターミナルで操作できるツールで代用ができそうだと結果に。
エディターに関しては私と同じような考え方をする人の需要が増えてこれば、きっと私が納得できるアプリケーションが作られると思う。
漠然としたイメージだと、emacsの機能をブラウザ上でグラフィカルに表示できて、軽快さが保たれればいいのだから、可能性はいくらでもあると思う。まぁあくまでphpなどのWeb言語に限った話だが。

ローカルに一切のファイルを置かず、全てあっち側で管理する。どうしても実ファイルが必要な場合は、S3とかDropBoxとかクラウド系のサービスを使う。もっと言えば、自分専用のクラウドサーバを用意しその中に全部放り込む。管理はGoogleデスクトップとかでもインストールしておけばいろいろできると思われ。
基本的な作業で必要なファイルは、wikiGoogleドキュメント、Subversionで管理するのがベストだと思う。
開発に関しては、ソースはSubversionで管理。何か作るときはサーバ上でSubversionからチェックアウトし、サーバ上でブラウザやターミナルから作業を行う。このサーバにテスト環境も構築できていれば検証もここで完結することにもなる。チェックアウト先をそのままapacheの公開Dirとしておけばよい。(※セキュリティーの問題はIP指定とかで回避ということで)
作業が終わったファイルはSVNでコミットし、コミットされたファイルは自動的にステージング環境へrsyncでアップされる。
ステージング環境の変更を本番に反映するのもftpなど使わずにrsyncで同期する。
データのバックアップなども全てサーバ間で行う。

ファイルのダウンロードなどを行う時は、ローカルにダウンロードせず直接サーバにダウンロードというかアップロードを行うこともできるはず。
mobile me(iDisk)などのようにサーバにあるディレクトリをローカルにあるように見せることもできるし可能だろう。どういう仕組みかわからないが、iDiskはローカルに実ファイルはダウンロードされないのにとっても高速に接続できる。
DropBoxなどでも似たような事ができるかもしれない。
VNPとかで、サーバ上のsambaに接続するだけでも十分かもしれない。


かもしれない、とか〜だと思う、といた表現がやたら多くなったが、一応結論として現時点でもローカルのデータを全てweb上に移行することが可能だ。
ただし、それには多少の犠牲を伴うが、これは時とともに解決されて行くであろう問題で、理想の環境がより早く実現するために私はこれからクラウド化を率先して取り入れて行く事にする。


ここでもう一つ問題定義だけしておく。
クラウドが台頭してきた理由にネットワークの高速がある。
これに対し今後、記憶媒体の大容量化+安価化が想像だにしない速度で進んだ場合、今のクラウド化と正反対の現象が起きる可能性もあるのではないか。
極端な例を挙げると、web上の全ての情報をローカルのPCの中に保存する事が出来るようになるかもしれない。
更にパソコンやネットワークの高性能化が進んだ場合、サーバを必要としなくなる事も考えられる。
数日間充電する必要のない電池ができ、パソコンそのものの飛躍的な性能アップ、WiFiMaxのような無線技術の革新が起きるとする。
するとパソコンを一つ持ち歩くだけで、常に全ての情報を蓄積し、そのパソコンから常に自分の情報も発信する。こうなると余程の膨大なトラフィックがあるサイトで無い限り、サーバの必要性はなくなるかもしれない。

そんな未来も見てみたいものです。