最新の技術トレンドをエンジニアの視点で捉え、
なるだけ簡単にわかりやすく紹介して行きます。
メジャーなものからマニアックなネタまで、
テクニカルオールラウンダーなナビゲータが幅広くお伝えします。

ナビゲータ:渡部克治(ワタナベカツハル)

2008年11月11日

仮想化on携帯電話

近頃流行中の「仮想化」。
以前はLinux(or Windows)上でWindows(or Linux)が動作する便利ソフト、
くらいの位置付けでしたが、IntelによるVTサポートをきっかけにパフォーマンスと信頼性が向上し、
安定したインフラとしてビジネスに使用されるようになってきました。

仮想化でメリットがある分野としてすぐに考えられるのは、
IDC(データセンター)とソフトウェア開発分野。
データセンターでの仮想化のメリットは、構築コストやサーバ移行コストを軽減できる事。
ソフトウェア開発でのメリットは、実環境を利用せずともソフトウェアの挙動をシミュレートできる事。

そんな中、以下のような話が。
ヴイエムウェア、携帯電話端末向けハイパーバイザを発表
http://www.computerworld.jp/topics/vt/126809.html

携帯電話のテスト環境として(シミュレータとして)の仮想環境ではなく、
携帯電話の中に仮想環境を入れ込むようです。

携帯機器のリッチ化がここまで来たか、という感想が先立ちますが、
用途やメリットは…ちょっと思い付きません。
(アプリの共通化などは、x86へのシフトから規定路線でしょうし…)

"仮想化on携帯電話"の詳細へ»

2008年11月04日

組み込み機器はどこへ向かう?

最近気になるものの一つにNetbookがあります。
これまたある意味クラウドコンピューティング的な(苦笑)定義が曖昧なものですが、
乱暴に言えば、「ノートPCより小さくてPDAより若干大きい、安いPC」。

IntelがAtomプロセッサを売りたいがために作ったマーケットと言って過言ではありません。
XScaleを手放して、x86ベースの省電力CPUであるAtomに注力していることから明らかです。
(手放したころにはIntel Atom量産のメドが立っていたのでしょう。)

Atomの狙いは、携帯電話やスマートフォンなどの組み込み機器。
最近は、これらはARMアーキテクチャベースのXScaleなどが使われるケースが多いのですが、
ここにきてNetbookのブレイクによって、Atomがそれにとって変わる可能性が大いにあります。

Atomが組み込み機器に搭載されるようになった場合、x86ベースであることが影響します。
つまり「普通のPCと同じプログラムが組み込み機器で動く」ということ。
Write Once Run Anywhereとかいうコンセプトのあった某言語も真っ青です。
PCも、サーバも、携帯機器も、ほぼx86一色になってしまいそうです。

最近では組み込み系開発もアセンブラではなくC言語などのいわゆる高級言語が主流ですが、
そのうちもっと高級な言語も使われるようになるでしょう。

エンジニアに必要とされるスキルセットも
コモディティ化によって、徐々に収束していくかもしれません。

"組み込み機器はどこへ向かう?"の詳細へ»

2008年10月30日

オープンソースでクラウド的コンピューティング

マイクロソフトもサービスを開始して、
にわかに盛り上がり始めたクラウドコンピューティングですが、
Azure Service Platform
http://www.microsoft.com/azure/default.mspx

マシンリソースがあれば、オープンソースでシステムを構築することもできそうです。
ただ、本格的にクラウドコンピューティングとして始めると、
圧倒的多数のサーバリソースが必要になりますが…。
(電力の問題以外に、日本ですと収納スペースの問題もあります…。)

分散ストレージなどでは以下が使われているようです。
Hadoop http://hadoop.apache.org/core/
hBase http://hadoop.apache.org/hbase/

以下のリストを見る限りでは、現時点でもかなりの実績があるようですね。
大きいところでは、Yahoo, IBM, Amazon, Facebookなどでしょうか。
http://wiki.apache.org/hadoop/PoweredBy

クラウド的に使用する以外に、ある程度のデータサイズをもつサービスであれば
分散ストレージとして採用するのもありかもしれませんね。

若干変わったアプローチですが、今ある「技術」「インフラ」から新しいビジネスを生み出す。
こういう視点も必要でしょう。

"オープンソースでクラウド的コンピューティング"の詳細へ»

2008年10月27日

グリッド+仮想化→クラウド?

昨今のバズワードの一つ、「クラウドコンピューティング」ですが、
それに代表されるサービスのAmazon EC2が、ついに正式版になりました。

クラウドコンピューティングの解説はWikipediaに任せますが、
その概念の背景は、私はグリッドコンピューティングにあると思っています。
グリッドは複数台のマシン、クラウドは極論一台もありえるため別物という論調がありますが、
実際問題として、スーパーコンピュータの世界でも複数台のクラスタが当り前の世の中です。
論点として若干ズレている気がします。

グリッドとクラウドの決定的な違いは、処理する場所にあります。
グリッドはローカルマシンを含む世の中のすべての計算機が分散、協調して処理をするのが理想ですが、
実際には他組織のコンピュータリソースを利用することは、セキュリティ上の問題がありました。

その点クラウドは同一組織のデータセンターなどに集約している点が現実的で、
ローカルマシンを含まない、ネットワーククラウド内で処理されます。
まさに「クラウド」ですね。(グリッドはクラウドを内包する概念かもしれません。)


さて、EC2ですが、スケーラビリティやリライアビリティに気をとられて、
これをただのレンタルサーバとしてとらえるのは考え物です。
ローカルサーバでは処理しきれないような重たい処理、膨大な処理を
代行させることが真髄のように思えます。いわばグリッドのように。

EC2では仮想化技術でXenが使用されています。
いうまでもなく仮想化はここ数年で急速に実用化されるようになりました。

この、熟れてきた技術に概念がマッチして生まれたのがクラウドコンピューティングであり、
グリッド(分散)コンピューティング+仮想化→クラウドコンピューティング
といえるのかもしれません。(矢印の逆は真ではなさそうですが…)

EC2ではインスタンス(実体、サーバイメージ)とストレージを分けているところも
仮想化技術をつかったレンタルサーバ(いわゆるVPS)とは違っているところです。

クラウドコンピューティングは、技術の現実と、概念の理想の折衷点に思えます。
ITシステムのパラダイムシフトがまた始まる予感がします。

"グリッド+仮想化→クラウド?"の詳細へ»

2008年10月13日

技術のコモディティ化と将来(2)

次回に続くと言いながら、続いてなかったエントリの続き。

オープンソースの恩恵はずっと続くのでしょうか。考えてみます。

一般に、オープンソースに限らず、ソフトウェアには3種類あるといいます。

第一のソフトウェア。
このソフトウェアは、今までに無い非常に画期的な技術で、パラダイムシフトとも言える代物です。
ただし代償として、まともに動作しない部分やバグも多かったりします。

第二のソフトウェア。
このソフトウェアは、第一のものが非常に安定して動作するようになったものです。
インターフェイスなども使い易く改善されて、万人が良いソフトだと言うようになります。

第三のソフトウェア。
このソフトウェアは、第二のものから進化して、もっと使い易くなったものです。
しかし、この頃になると旧式の技術となって古くさいソフトウェアとなってしまい、
そのうち多くの人に見向きもされなくなってしまいます。


これに当てはめて考えると、
今のメジャーなオープンソースプロダクトは第二になったと言えます。

# 余談ですが、今やオープンソースメジャーアプリの一つFirefox(Mozilla)や、OpenOffice.orgも、
# 始めのころは酷かったですね。今は非常に安定して動作してくれて助かっています。

どんなソフトウェアも、そのうち第三になります。
そして、そんな時、ヒットするのは第一のソフトウェア。

その第一から第三のサイクルがソフトウェアの生存サイクルと言えるでしょう。


今オープンソースソフトウェアには、色々な種類のものが出てきました。
サーバ、ワークステーション用ソフトウェア主体だったものが、
コンシューマー向けにも、エンタープライズ向けにもソフトウェアが揃っています。

今までなかったパイが埋まって、やっとオープンソースの「生態系」といえる中に
第一から第三を包括するソフトウェアが生まれるようになったと感じています。

オープンソースという仕組み(世界)の中で、
日々様々な種類の第一のソフトウェアが生まれ、第三となって死んでいく。
技術者や研究者に第一のソフトウェアをオープンソースとしてリリースする動機がある限り、
このサイクルは続くと私は考えます。そして、その動機は十分にあるようです。


前置きが長くなりましたが、オープンソースの恩恵は今と変わらず続くようです。
ただしこれはシステムを作る側の話。

作る事も重要ですが、システムは使うことも重要です。
技術のコモディティ化によって、作る側の障壁は下がりましたが、
これらの技術をうまく生かせるエンジニアは一握りで、
今も昔も、これからも、それは変わらないかもしれません。

"技術のコモディティ化と将来(2)"の詳細へ»

2008年10月07日

フレームワークはエンジニア殺し?

前々回、.Netの話をしましたが、今回はその「フレームワーク」について。

フレームワークとは、言わずもがな「枠組み」のことで、色々な場面で使われる言葉ですが、
ことエンジニアにとっては、開発フレームワークが最も馴染みのあるフレームワークでしょう。

フレームワークを使うメリットは、
開発効率の向上が見込める点、
複数人での開発において統一的なルールとして成り立つ点、
各個人間のスキルの上下を吸収して概ね均一化できる点、
汎用的なフレームワークであれば、それを使える人材を確保しやすい点、
などが挙げられます。

つまり端的に言えば、フレームワークの使い方を知っていれば、
すぐにでもチームに根ざした開発がしやすい(程度こそありますが…)という事です。

ただ、この点「フレームワーク」はただの道具です。
IT以外にも言えることですが、フレームワークに当てはめれば
比較的容易に「何かが出来上がる」だけのこと。

真のエンジニアになるには、
そのフレームワークにある「どうしてそういう仕組みなのか」という点を理解しなければなりません。
そして、そういった考え方は「設計」というフェーズにおいて、非常に重要なファクターになり得ます。

日々、ただAPIをたたいているだけで満足していませんか?
フレームワークにある思想を理解することで、一歩先に踏み出せるかもしれません。
そのためには色々なフレームワークを試してみると良いでしょう。


今回はちょっと抽象的な話でしたが、いかがでしょうか。
一部の用語を置き換えることで、アプリ開発に限らず、色々な分野に適用できる話です。

"フレームワークはエンジニア殺し?"の詳細へ»

2008年09月26日

技術のコモディティ化と将来(1)

「オープンソース」という言葉が広まって、久しく経ちます。
オープンソースとは純粋な目で見れば、テクノロジー(特にIT)の共通化、有効化であり、
技術論以外の聖域を排除することで無駄を省いた、エンジニアにとって効率的な世界です。

良いエンジニアはある意味、めんどくさがりです。
物事の無駄を省き、既にあるものは再利用なりで有効活用することで、作業効率を高めます。
(ただし、効率を高めるためには努力を惜しみません。)

良くないエンジニアは、働き者です。
手作業で細かいことに時間をかけたり、同じ作業を繰り返したりします。
(ただし、世の中、時間をかけた方がお金がたくさん貰えるようです。)


今やオープンソースによって技術のコモディティ化が進み、
数年前では考えられなかったようなシステムが使える時代です。
効率的な道具を知っているのと、知らないのとでは、本当に大きな差が出ます。

もちろん、知っているだけではダメで、実際に使わなければ意味がありません。
ただ使うだけでもダメで、どうすれば有効利用できるかも考えなくてはなりません。

さらに、それをビジネスとしても活用しようと考えると…、
他に色々考える必要がある事が数多くありますが、その点はまたの機会に。


オープンソースによって、エンジニアは全てをコントロールすることができます。
OS、ネットワーク、アプリ…全てを協調した効率的なシステムに仕立てることが可能です。
エンジニアの技量にも依りますが、これらの恩恵は全てのエンジニアに等しくあります。

では、この恩恵はずっと続くのでしょうか?
次回に続きます

"技術のコモディティ化と将来(1)"の詳細へ»

2008年09月02日

Web開発環境は何がベストか

今、Web系システムの開発でよく使われている言語は、
C#、Ruby、PHP、Javaあたりでしょうか。

C#は.Netフレームワークで使用するのにほぼメイン言語となっているようですし、
(未だVBで、というのもあるようですけれど…)、
Ruby on Railsのブームによって、Ruby人口もかなり増えました。
PHPは元々言語としての敷居が低いことや、フレームワークも揃ってきたことから
衰退する様子も見られませんし、その一方でJavaは元気が無くなってきたような気がします。
(熟れてきたとも言えます)

Struts(Java)やRails(Ruby)、Ethna(PHP)など、
特定の言語に依存するフレームワークがまだ多いですが、
これからの時代は.Netのように開発言語を選ばない形でのフレームワークが
増えるのかもしれないと私は思います。

そもそも.Netは、各言語のコンパイラによって中間コードが生成され、
それをフレームワークが最適化、実行する仕組みになっています。
そのため、C#やVisual Basicの他にも
Python(IronPython)やRuby(IronRuby)も使うことが出来ます。

MVCモデルだけではなく、インタプリタ言語の選択、コードの最適化・実行まで、個別に細分化され、
かつ統一化されたインターフェイスを持つフレームワークが
これからは求められるのかもしれません。

現に、MacOS X(Leopard)でもLLVM(Low Level Virtual Machine)という
コンパイル基盤が一部で採用され、言語やプラットフォームとは独立した最適化を行っているようです。


結局技術者にとって、開発言語というのは「道具」であり、フレームワークは「武器」です。
いかにして早く正確に要求を満たすものを作れるか、が真髄でしょう。

実は.Netはそれを体感するのに最も近い環境なのかもしれません。

"Web開発環境は何がベストか"の詳細へ»

2008年08月29日

脆弱なパスワード社会

パスワード。皆さんは幾つ管理していますか?
ちゃんと管理されているパスワードとはどんなものでしょう。
以下に列挙しておきます。

・他人に簡単に類推されるようなものは設定しない。
・8文字以上で数字とアルファベット(大文字を小文字混在させる)を含む。
・サイトやサービス毎に全て異なるものを設定する。
・紙などにメモしない。(語呂合わせなどで憶え易くし、記憶の中だけに留める)
・定期的にパスワードを変更する。

思い付くあたりで、この位でしょうか。
どうでしょう。ちゃんと全て大丈夫と言えますか?

おそらく大半の人がまともに管理されていないのではないでしょうか。


パスワード方式は原始的なセキュリティです。
私は、もはや今の時代には合っていない気がしています。

それでもなお、パスワードが今も使われている最たる理由は、構築と運用が容易であることです。
社会通念上、パスワードというものはユーザに取っても理解しやすく扱いが容易で、
サービス提供者としてもシステムを構築しやすく、コストの負担も少ない。

しかし、じきに歪みが生まれるでしょう。理由は、

・重要なサービスとそれ程でもないものが、同じパスワード方式で混在していること。
・インターネットを利用した、オンラインサービスの数が膨大に増えたこと。
・サービス利用者の敷居が低くなり、リテラシーの少ない人間の参入が増えたこと。
・セキュリティ意識の低い事業者の情報漏洩事故が相継いでいること。

流石に、
銀行のパスワードと、SNSのパスワードを同じにする人はいないと思いたいですが、
これはシステム側に立つ人間(技術者)だから感じる発想であって、
そうでない人は違和感がないのかもしれません。


理想論ですが、共通な方式の元での「鍵」での認証が技術的な解決策だと思っていますが、
その話はまた次回に。

"脆弱なパスワード社会"の詳細へ»

2008年08月22日

オンラインフォトショップ?

前回のフォトショップつながり、という事で一つ紹介。

Pixlr
http://www.pixlr.com/

オンラインでフォトショップのような画像編集などの操作が出来るサイト。
(無料。要Flashプラグイン)


pixlr.png

もちろん自前の写真なども加工できますし、レイヤーも、フィルタ機能もあります。
こういうサイトが増えると、パッケージソフトもどんどん売れなくなってくるでしょうね…

"オンラインフォトショップ?"の詳細へ»