- 更新日: 2017年03月23日
- 公開日: 2016年03月22日
知らないとちょっと危険!? 今後、ニーズが高まることが予想されるIT技術 ①
進化を続けるIT技術。時代と共に変化・淘汰されながらその技術は常に加速していく中、エンジニアのみなさんにはその速度に合わせ、新たな技術の獲得が必要です。
では、今後はどのような技術が求められるのでしょう。「IT技術に関する調査(2016)」では、今後「1年以内」・「3~5年以内」でニーズが高いと予測される技術についての調査結果を発表しています。 こちらの結果を基に全3回に渡って各分野別に詳しくご紹介します。
第1回となる当記事では、「プログラミング言語」と「開発思想」についてご紹介します。
ニーズの高まりが予想される「プログラミング言語」と「開発思想」
VSNの調査結果を見ると、「IoT(Internet of Things)」がトップになっており、今後は「IoT」を活用し、それによって取得したデータを活かした開発ニーズが高まると予測されています。プログラミング言語では「Java」「Python」。開発手法としては「アジャイルスクラム開発」「DevOpes」に期待が寄せられています。
Java
現在も重要視されているJava。
Javaは長期に渡ってニーズの高い言語ですが、それはJavaがOSに依存されることなく、Windows系サーバやLinux系サーバなど、さまざまな環境で稼働できる事や、OSS(Open Source Software)なので、運用コストを抑えられる点も大きな強みであると言えます。
規模感に関わらず、システム構築を行う際、Javaを基盤にしている企業は多く、特に比較的大きな法人がユーザとなるエンタープライズ領域では、これまでの実績から信頼性が高いため、現在も幅広く活用されています。
一方、学習コストや構築コストの面から、スタートアップ企業や小・中規模のサービスではJavaに代わり、Ruby(Ruby on Rails)やJS(node.js)等が使用されるケースも増えてきているようです。
Python
「3~5年以内」でのニーズは、Java以上にPythonのニーズが最も高い結果になっています。PythonはGoogle社が使用していることで、以前話題に上がっていたのですが、日本のビジネスシーンの中心になることはほとんどありませんでした。
Pythonは文法的に定まった形式で書かないとコンパイルが通らないため、スキルが異なるレベルのエンジニアがコーディングをしても、同じように記述され、他の言語よりも比較的分かりやすいといった特長があります。そういった事から、仮想化環境等の設定技術言語として採用されたり、統計処理や機械学習のライブラリが充実している事から統計解析や機械学習の分野で使用されたりと最近では取り上げられるケースが多くなってきました。
Webサービスエンジニアでは、従来のPHPやPerlからPythonやRubyに移行しているエンジニアも増えています。エンタープライズ系サービスでも、業務処理にPythonを使って、業務プロセスの最適化を図っている現場もあり今後、さまざまなシーンでの活躍が期待される言語となっています。
続いて、プログラマであれば知っておいていただきたい開発技術/開発管理。
開発をより効率よく進める考え方や具体的な手法についてご紹介します。「開発プロジェクトが遅れて炎上…」、なんて話もよく聞きますが、そうした問題を少しでも発生させないような考え方です。
アジャイルスクラム開発
従来は「ウォーターフォール型開発」が多く取り入れられ、「要件定義」→「基本設計」→「詳細設計」→「開発」→「テスト」と各工程で手戻りが起こらないように、しっかりと検討が行われ、次の工程に進む開発手法が主でした。この場合、十分な要件定義が行われていないと、完成した際に顧客が望んでいたシステムと異なってしまうケースや、前工程に戻るのが難しいため、開発現場でトラブルが発生、その結果、大幅な納期遅延に繋がる場合も多々見受けられることがありました。
それに対して、アジャイル開発(と、言ってもさまざまな手法があるのですが)は、基本は「設計」→「開発」→「テスト」→「フィードバック」の期間を短縮し、顧客からの提案を素早く開発にフィードバックできる体制を整えて、求められている形に効率よく開発していくことを目的としています。
その中で、近年ではプロダクトマネジメントの枠組みである「スクラム」が特に着目されています。スクラムではスクラムマスターを軸に、自身が顧客との協調を大切にし、サービスをいち早くユーザに届けるために自分たちの組織運営をよりよい形にする「自己組織化」の動きを高めていくところが大きな特長です。
日本では主にJames O. Coplien氏が認定研修を行っていて、多数のスクラムマスターが誕生しています。
DevOps
DevOpsとは開発側(Development)と運用側(Operations)が協力し、ビジネス側からの要求を柔軟に対応し、顧客やユーザにビジネス価値をいち早く届けていく事を言います。(下図参照)
ITのサービスには、ビジネスの企画があり、それを基にサービス開発を行い、そのサービスを運用側がダウンしないようにしていく流れとなっています。
開発側は前述にあるようなアジャイル開発を行うことで、顧客やビジネス側の要求をサービスに盛り込み、比較的短期間でリリースを行えますが、運用側はサービスの実環境構築や運用テスト等に手間が掛かり、そのスピード感に追いつけず、サービスリリースをタイムリーに行えないケースや、強引にリリースした結果、トラブルだらけ、といったケースは珍しくありません。
ここにChef等の自動化ツールや、前出のスクラムやリーン、カイゼン等と言った「ものづくり」に対する姿勢を導入し、さらに開発側とのコミュニケーションアップを図り、迅速にビジネス価値を顧客に提供する体制や環境づくりを行う考え方を言います。
\Webサイト担当者としてのスキルが身に付く/
あとがき
調査結果からは、大規模化・複雑化をする一方で高速化も求められる開発現場においては、目的に沿った言語の選択や開発効率を上げる取り組みが重要視されていることがわかります。
次回は、プログラミングから少し離れて、サーバやネットワーク、セキュリティに関する技術についてご紹介していきます。
プログラマとはあまり関係ないように感じるかもしれませんが、エンジニアとして、全体を理解している事は大きな強みになりますので、まずは、どんな技術が求められているのかを確認していきましょう。
著:須賀俊介(株式会社VSN)
- この記事を書いた人
- 株式会社 VSN