このブログの検索ワードのトップが,「Android」になってしまった - 今後数年とその先に求められる,デベロッパのスキルポートフォリオ
この4か月間の,本ブログにおける検索ワードの推移。(トップ12位)
※説明:
このグラフの「検索ワード」は,Googleなどの検索エンジンから本ブログにジャンプしてきた場合の,検索エンジン側で入力してあった検索語。
こういったリンク元情報は,アクセス解析サービスによって自動的に記録される。
それを単語別に分解して,月内での「検索単語」のランキングが毎月,集計される。
今までは,ずっと長期にわたって「javascript」がダントツだった。
javascriptは,他のワードに1位の座を譲りそうになかった。
なぜなら,本ブログはもともと,「JavaScriptの動かないコード」という,コアなシリーズ記事から生まれたからだ。
記事の数でいうと,JavaScriptと,WSH/JScriptの情報量が圧倒的に多かった。
Javaやスマホの情報は,全く掲載していなかった。
また,これまでほんの半年間のうちに,Androidについては少しの記事しか書いていなかった。
それにも関わらず,いつの間にか(昨年秋から)「Android」が首位に迫った。
2012年が明けた先月,「Android」が「javascript」をはるかに抜き去った。
これは,時代のニーズの変化だ。
そしてその変化に対して,運良く,
私自身の「スキルポートフォリオ」がマッチ&追随しているためでもある。
具体的に言うと,「今後,技術者が身につけるべきスキル」の話になる。
今後数年間のスキルポートフォリオについて
今後のシステム開発者のスキルポートフォリオとして,下記の物をお勧めする。
根拠となるURLはそれぞれ山ほどあるが,多すぎてめんどいので,本ブログ中での言及個所などを探して頂く事とする。
- JavaScript。
- Web2.0以来,第一級の開発言語となったとよく言われる。HTML5と併せて、マルチデバイス上でUIを構築するために必須。
- スマホアプリやネイティブアプリを生産するための言語としても採用が進んでいる。Mozilla、titaniumに加え、Windowsネイティブアプリも。
- ブラウザ上で何かやりたい事があったら,とりあえず何でも自由自在に対処できる。小細工としてブックマークレットを作ったり,WSHとしてデスクトップでバッチを作ったり,HTAやASP.NETへの応用もきく。
- jQueryは,一つの「言語」とみなして取り組んだほうがよい。
- 当分もつ。Google DartもしくはCoffeeScriptにリプレースされる可能性は,わずかにあるが。
- スマホアプリ,特にAndroid。
- 数年後の予測では,スマホのシェアはAndroidが半数を占め,iPhone/iOSは残念ながら落ち目になるとの事*1。後者のApple陣はクローズドな世界なので必然的にそうなる。Windows Phoneがある程度,台頭する旨も予言されている。(ガートナー調べ)
- Androidアプリの開発期間は,Javaの開発期間としてカウントできる。開発テクニックも,Javaのノウハウを大幅に流用できる。人材を集める際にも,Java屋は多い。つまり,Androidアプリの開発は「つぶしがきく」上に,わりと人を集めやすい。エンジニアとしても,マネージャとしても,スキルポートフォリオ上のリスクが少なく,メリットが大きい。正直,Objective-Cとは大違いである。
- 大局的に見た市場の状態としては,スマホ市場は発生直後の段階。うなぎ昇りでニーズが生まれつつある。早い者勝ちである。
- Rails系フレームワーク。言語はLL,特にRubyを推奨。
- 時代の流れのスピードについて行けるだけの素早さが必要。Webアプリを手早くアジャイルにリリースする実力が求められる。
- 例えば,1年間の開発期間が与えられたら,もしウォーターフォールで進めると「1年前の要件にマッチするようなシステム」がリリースされることになるわけだが,1年後のリリースの時点でそういうシステムが果たして価値を持ちうるかどうか,その開発スピードの鈍さで本当に食っていけると思っているのか,作る側の常識やビジネス観が大いに問われる。
- スマホはクライアントの一つとなり,サーバ側すなわちWebアプリにアクセスする。マルチデバイス対応という点を考えても,サーバ側にはなおいっそう「変更しやすさ」が求められることになる。
- 万が一,該当するプラットフォームにRails系フレームワークが存在しない場合,それに近い物を自力で作り上げて使ってゆけるだけの,設計力・実装力・行動力・PR力も必要。
- 時代の流れのスピードについて行けるだけの素早さが必要。Webアプリを手早くアジャイルにリリースする実力が求められる。
- その他,これら各要素を素早く統合(integrate)かつ管理(manage)するだけの,ジェネラルなスキル。
- これより上に挙げた項目が,それぞれ UI・クライアント・サーバ に該当する。それらをつなぎ合わせて,良いシステムとしてまとめ上げるような結合力ということ。
- クライアントとサーバを結合させる面(=つまりアーキテクチャを素早く構築するスキル)で言えば,ネットワークやインフラ,OS仮想化によるローコストな運用など。
- ニーズとシーズを結合させる面(=つまり企画を立てて素早く要件定義し,チームを組織して顧客と連携しつつ,スピーディーなリリースへ持って行くスキル)で言えば,モダンな見積もり,コミュニケーション,品質確保の自動化,効率の良いドキュメンテーション,いまどきの開発方法論の把握,その他いろいろ。私が提唱し続けているのは,一つは,ドキュメントを実行可能にすること(「実行可能ドキュメント」)。ジェネラリストが必要。
これらを身につければ,当分,技術者は引く手あまただろう。
その後は?
さらにその先の予測
時代は,このようになるのではないか?
- IPv6で,ユビキタスな「身近ネットワーク」の普及。
- ワイヤレスで相互連携するような,マルチデバイスのクライアントがあふれることになる。タブレットどころの話ではなくなる。ホームネットワークの時代は既に来ている。
- 小規模ネットワークの効率的かつセキュアな構築・運用技術が求められる。
- クラウドの普及。
- 主だった中規模DBや中規模APは,丸ごと「雲の上」に持って行かれてしまう。
- 長いものに巻かれるつもりなら,クラウドエンジニアを目指す。クラウドのAPI(GAEとか)や,その運用に備える。結局,NW越しの利用になるので,ネットワークの知識が不可欠になる。
- 対抗するつもりなら,クラウドに持って行かれない範囲での中小規模のアプリの,短納期・低コストでの大量生産が求められる。つまり,Rails系FWを使え,という事になる。
したがって,いま各人のスキルポートフォリオの中に
- 「現代ネットワーク技術」
- 「スピーディーな開発プロセス」
- 「マルチデバイスの体験を,自分自身が実践してみる」
などのキー概念を含んでいるかどうかが,
この数年が過ぎてから後の時代に,デベロッパとして生き残れるかどうかを左右するものとなるのではないか?
これらと対立するのは・・・
- 「プログラマーなので,デフォルトゲートウェイって何なのかわかりません。インフラ屋じゃないから!」
- 「前工程の設計書が来ないから,この工程も進められないよ。プロジェクトが終盤で火を噴いたとしても,前工程のチームのせいだ。責任はなすりつけることにして,自分たちが待っている間はヤジを飛ばそう。」
と言ったセリフが聞こえてくるようなシチュエーションか。
最後に,3〜4年前に執筆した同等の記事を掲載する。
今,Web技術者が「食べていく」ために必要な3つのスキル
http://language-and-engineering.hatenablog.jp/entry/20080930/1222796966
補足
冒頭のグラフ画像の元データ。
2011 | 2011 | 2011 | 2012 | |
---|---|---|---|---|
10 | 11 | 12 | 1 | |
javascript | 4793 | 5541 | 5416 | 5676 |
android | 4478 | 5471 | 5402 | 7248 |
vba | 3513 | 4173 | 4007 | 4112 |
使い方 | 2588 | 2624 | 3112 | 3341 |
jmeter | 2008 | 2182 | 2123 | 2774 |
excel | 1961 | 2348 | 2320 | 2326 |
ie | 1900 | 2103 | 2008 | 2248 |
マクロ | 1430 | 1511 | 1817 | 1907 |
svn | 1122 | 1226 | 1129 | 1259 |
css | 1095 | 1370 | 1547 | 2177 |
selenium | 1046 | 1021 | 1143 | 1137 |
1010 | 1188 | 1077 | 1695 |
*1:※私はiPodとiPadも愛用しており,シェア・有劣・将来性に関して偏見はないつもりだ。