エンジニアをやっていると「どの技術に乗るか」というのは重要なことです。まあエンジニアより営業のほうがより重要なことかもしれませんが。たとえばOSに何を採用するか,DBは何にするか,言語は何にするか,ハードは……など,枚挙にいとまがありません。
たとえば筆者は,使用するOSについて下記のような変遷をしてきました。
1995-1996年 | SunOS4.x |
1996-1998年 | Solaris2.x |
1998-2000年 | HP-UX, Solaris2.x, Solaris7, FreeBSD2.x, Linux |
2000-2003年 | FreeBSD4.x |
2004-現在 | Linux(いろいろ) |
だいたいその当時メインストリームなものを使っています。1998-2000年のHP-UXだけは,メインストリームだからではなく会社の事情によるものです。
時代時代でメインストリームが変化するのはよくあることで,かつやむをえないことです。これは異論もあるでしょうが,筆者のだいたいの感触としては,FreeBSDはLinuxに取って代わられ,PostgreSQLはMySQLに取って代わられた気がします。
「流行り」の法則
筆者はよく言うことなのですが,日本で流行る技術というのはある一定の法則があると思います。それは「日本語が充実しているかどうか」です。
たとえば日本語の良書(“良”というところがポイントです)が充実しているかどうか,日本語で良い情報発信をする人がたくさんいるかどうか,日本語コミュニティが活発かどうかなどです。もちろん,日本語が充実しているから流行る,というのは一概に良いことではないのですが。とはいえ理解できなくもありません。
日本語が充実しているものがそのままワールドワイドなメインストリームであり続ける場合はさておき,そうでない場合は,日本で流行っていたものがワールドワイドなメインストリームに取って代わられるということになります。
FreeBSDやPostgreSQLがまさにそうだと思います。異論もあるのはわかっていますが,筆者から見るとそう見えたのです。
メインストリームを見極めろ
でもここ数年で,だいぶ日本語の情報に左右されなくなってきたというか,もっと言えば,英語アレルギーは減ってきた気もします。このあたりは前回の連載でもちょっと触れました。
日本語かどうかはさておき,エンジニアとしてはメインストリームに乗ることは重要だと筆者は思っています。もちろん必然性があってマイナー側に乗るのは別にいいと思いますが。たとえば,目的のためにはマイナーOSのファイルシステムが適しているからとか,このケースではセキュリティよりパフォーマンスが必要だからとかいった場合です。どちらでも良い場合にはよりメジャーストリームであり続けるほうに乗るべきです。同じ時間を使うならより深いところに到達できるし,それを共有できる規模も大きくなるからです。
なので,メインストリームを見極める力も必要なスキルのうちかもしれません。たとえば最近だと,Webのフレームワークをどれにするか,というのはなかなか難しい問題のひとつです。
筆者は5年ほどにPythonのフレームワークをどれにするかで,DjangoとTurboGearsで悩んでTGにして失敗しました。当時でもDjangoのほうが若干優勢だったのですが,マルチフレームワークであるTGのほうが将来性があると踏んだためです。筆者はインフラ屋あがりなので,CUIツールで使えるかどうかを考えすぎたせいもあるかもしれません。
そしてTGは2になって一気にマイナー化し,ここ2年ほどはDjangoを使うことが多くなっています。さらにそれも,最近のWebのハイパフォーマンス要求による非同期というかノンブロッキングフレームワークの需要の高まりで,まだメインストリームとはいえませんがtornadeなども使う機会が増えてきています。
そもそもなぜPython?という意見もありそうですが,ここについては確信とまでは言わないですがある一定の根拠はあってそうしています。まずGoogle 3大言語の1つであるということ,LL言語の中で比較的処理が速いこと,USでのシェアがPHPは別格とすれば比較的高いこと,あと自分で書いていて「気持ちいい」ことなどがその理由です。もちろんこの読みがはずれるかもしれませんが,今のところは,まだ「来る」と思っています。
ワールドワイドでのメインストリームが変化するのは,これはやむをえないといえます。たとえばSunOSやSolarisは一時期間違いなくワールドワイドにおいてメインストリームの座にありましたが,その後これまたワールドワイドにおいてメインストリームの座をLinuxに奪われてしまったので,これはやむをえない部分もあります。
まあUNIX(Linux)系のOSの場合には,メインストリームがかわっても知識や経験が活かせる部分は結構多いですが,ギリギリの所で要求されるのはそのOS固有の知識だったりします。DBの場合,SQLの知識や,チューニング知識も一部は共通で使えたりしますが,カリカリの部分についていえば,MySQLやPostgreSQL固有の部分のほうがよりインパクトがあるのは間違いありません。
時には乗り換えも必要
より良いものが出てメインストリームが変わるのも良くある例だと思います。そしてこのケースはエンジニアにとってもメリットがあるし,その切り替えが起こらないといつまでも(相対的に)よくないものを使わなければいけないので,これはむしろ歓迎できるケースだと言えるでしょう。
たとえばtelnetがsshになったり(telnetはtelnetでそのあとも用途がありますが),wu-ftpdがProFTPDやvsftpdになったりするケースです。これらのケースは,明らかに過去の知識経験を捨てても乗り換えるメリットがあるので,やむをえないというかある意味必然的なケースだと言えます。
もっとも良いものが出たからといって乗り換えが起こらないケースもあります。たとえばFDDIが登場した当時,リング型で構成を組んでサーバをデュアルアタッチにすればネットワークがSPOFでなくなるというすばらしいメリットがあったのですが,結局FDDIへの移行は起こらず消えてしまいました。
これは,ネットワークの冗長性が得られるメリットよりも,価格が高い,ケーブルの取り回しに繊細さが要求されるといったデメリットが勝ったせいもあります。そもそもネットワークがダウンの原因になる比率が低かったせいもあると思いますし,イーサネットの高速規格の登場やフルデュプレックス対応スイッチの普及などもあると思います。
それはさておき,必然性がある乗り換えはともかく,選択肢としてどちらもアリな技術がある場合に,どちらに乗るかはかなり重要な問題です。ハードウェアもそうですし,ミドルウェアや言語もそうです。その選択を間違えると,過去の遺産の呪縛にしばられることになります。
たとえばハードで選択を間違えると,ある一定期間メインストリームでない機種を使うことになります。その場合,それを使えるエンジニアは少ないし,育てたとしてもそのスキルはエンジニアにとって相対的にプラスになりません。たとえばレッドバッ(ry
エンジニアのための「乗り換え案内」
ではそうならないためにはどうしたら良いのでしょうか? たとえばAとBの選択肢があるとして,Aの中の人やBの中の人に聞いてもこれはあまり役に立ちません。自分が属するほうを良くいうケースがほとんどだからです。それは悪いことではなくてむしろ良いことでもあるのですが。
比較的簡単な方法は,その名前をGoogleなどで検索してどの程度ヒットするかを見る方法です。ただこの場合,古くからあるもののほうが有利だったりします。なので単に件数だけではなく,より新しいページが多いのはどちらか,を見るのも重要です。
また,書籍がどの程度出ているか(もちろん新しいものが多いほど良い),ブログがどの程度書かれているか(同上),また最近であればtwitterやfacebookを見るという手もあります。もちろんSocialメディアを見る場合には,量だけではなくて質も重要です。ブログの場合,意味の濃いコメントがついてより深い議論がされているほうはどちらか? などです。
あと非常に有力な手段としては,自分が信頼できる技術者(達)がどう思っているか聞いてみることです。ただこの場合,聞く相手がAなりBなりに将来性以外の視点で肩入れしている場合にはちょっと話が違いますが。
そうして世の中の動きを見て決める際に,前述したことでもありますが,日本語に限定した調査では意味があまりありません。むしろ逆の結果が出ることも十分ありえます。ここはひとつ頑張って英語で調査してみましょう。
そしてあと重要なのはもちろん,自分の目と腕でAとBを見極めて,そのより優れたほうを判断するというのもあります。もっとも,より優れたほう=よりメインストリームになる確率が高いとは限らないので注意が必要です。
何をもって優れたとするか,にもよります。たとえば自分はセキュリティを重視してAを選んだら,世間はよりパフォーマンスを重視してBを選んだ,というケースもありうると思います。この場合,前述したように,マイナーとわかっていてもセキュリティが重要なので意図してAを選ぶ,というのと,メインストリームをえらびたいけど世間がより重視するものを読み違えてAを選ぶというのは意味が違います。
またメインストリームを選ぶというのは,自分だけでなく部下のためにもなります。そこで身につけたスキルが相対的にその人にとって武器になる可能性が高くなるからです。この連載で以前触れた情報発信についても,ユーザがほとんどいないものよりは多くいるほうが情報発信することの効果は相対的に高くなるといえます。
一般的にはプロプラエタリなものよりはオープンなもの,コストパフォーマンスが悪いものよりは良いもの,そして開発者がより熱心なもののほうがメインストリームになる可能性は高いといえます。とはいえその技術の良さが一番重要なのは前述した通りです。
いま実際にメインストリームになっているものがなにかを見極めるのはもちろんのこと,次になにがメインストリームになるかを予測するのは,これはエンジニア力によってある程度どうにかできます。そういった意味でもぜひエンジニア力を磨いていただきたいです。そしてメインストリームに乗って,さらなる飛躍を目指していきましょう。