企業成長に欠かせないデジタル戦略やテクノロジー導入を支えるエンジニア組織。しかし、多くの企業では、人手不足や知見の少なさから、エンジニア組織の構築に苦労しているようです。本連載では、エンジニアが全くいない企業が0からエンジニア組織を構築していくプロセスを、筆者の実体験も交えて解説していきます。第1回となる今回は、エンジニア組織をつくり、自社開発を開始するにあたって最初に考えるべきポイントとして「開発言語の選定」に着目してみましょう。
自社開発のメリットと言語選定
ビジネス環境において競争力を維持するために、今、多くの企業が自社開発へのシフトを検討しています。確かに自社開発には、柔軟性の向上、独自性の維持、そしてコストの削減といった明確なメリットがあります。しかし、自社にそもそも開発組織が存在しない、あるいは委託開発からの転換を考えている場合、適切な開発言語を選定できるか否かが自社開発の成功を大きく左右します。
言語選定のプロセスでは、現実的な目標設定が必要です。多くの企業が言語の人気やトレンドにとらわれがちですが、それだけでは十分ではありません。
見るべきは「業界動向」と「自社のニーズ」
近年、多くの新しい技術やフレームワークが登場しており、特定の言語が一時的に注目を浴びることもあります。しかし、短期的なトレンドに乗ることは、企業にとってリスクも伴います。数年後にその技術が廃れ、負債となる場合や、そもそも市場にその言語の開発経験者が不足しており、採用の壁に当たる可能性もあります。そのため、開発言語選定の際には、業界の動向や自社のニーズをよく理解した上で、独自の判断を下すことが必要です。
戦略との整合性
適切な開発言語選定は、自社の企業体力や戦略との整合性が求められます。開発言語選定を行う際には、中長期的なビジネスの方向性や将来の拡張性も考慮することが重要です。例えば、サービスが急速に成長する可能性がある場合、スケーラビリティを重視した開発言語の選択が求められます。
すでに明確な技術的方針があったり、社内に専門家が在籍していたりする場合、その専門知識に基づいて言語を選定することが最も理想的です。しかし、そうでないのであれば、以降に示すガイドラインが初期段階での失敗を避けるための有用な指針となるでしょう。
選定事例①スタートアップの場合
新しい事業をスタートさせる場合、迅速な市場投入が求められることが多いでしょう。モダンな言語を取り入れ、それを基に若い人材を積極採用する戦略もありますが、開発への着手スピードを優先させて経験者が多いPHPやRubyといった言語を選ぶことが有効となる場合もあります。また、初めて自社プロダクトを開発するのであれば、高速でプロトタイピングが可能なノーコードツールの利用も検討する余地があるでしょう。
選定事例②大手企業の場合
大手企業や既存の大規模なシステムを持つ企業の場合、既存の技術スタックやシステムとの互換性を考慮する必要があります。また、スタートアップ以上にセキュリティに気を配ることも必要です。システムの統合やデータの移行といった課題が伴うこともあるでしょう。そのため、自社開発の導入を検討する際には、既存のインフラとの連携や過去の選択を見直すことが必要です。
上記を踏まえ、筆者が経験した立ち上げプロセスをご紹介します。
立ち上げ期の開発プロジェクト:派遣求人プラットフォーム開発
筆者がハッシャダイでCTOを務めていた当時、立ち上げ期に目指したプロダクトは、派遣求人者向けの求人プラットフォームとその管理システムでした。幸いなことに、このタイプの求人サイトはサービスリリース時に急激なトラフィック増加が予想されず、また、機械学習などの高度な技術も必要ないため、選択可能な開発言語が多くありました。
フロントエンド:最初からこだわりすぎない
Webサイトなので、フロントエンドの言語としては、HTML、CSS、およびJavaScriptが基本的な構成となり、言語よりもJavaScriptのフレームワーク選定が重要事項となります。React、Vue.js、AngularJSなどが選択肢としてありますが、初期段階では採用した開発者のスキルセットに合わせる方針にしました。フロントエンドのフレームワークはバックエンドと比べて変遷のペースが早く、初期段階でこだわりすぎても後から変更を余儀なくされるケースが高い確率で発生する可能性があります。ある程度組織基盤が固まるまでは、フロントエンドのフレームワークがどんどん移り変わっていく覚悟を持っておいた方が良いでしょう。そのためこの段階ではこだわりを捨て、人材ありきでの選定方針を採ることをお薦めします。
バックエンド:長期的視点での言語選定
バックエンド言語に関しては、より慎重な選定が必要です。バックエンドはフロントエンドと比較し、一度選択した言語は気軽に切り替えできないため、数年間の開発において重要な位置を占めることになるでしょう。大枠の目安として、機械学習のような高度な計算が必要な場合はPython、処理スピードが重視される場合はGo言語、その他の場合はPHP、Java、またはRubyが有力な選択肢となると覚えておくと良いでしょう。
非常に悩ましいところが、人材採用が難しくなる可能性がある点です。比較的新しい言語を選定した方が、新しい言語を習得しようとする学習意欲の高いエンジニアを採用できる可能性が高まりますが、新しい分、まだ市場にその言語に対応できるエンジニアが少ないため、採用に苦戦を強いられる可能性が高くなります。この辺りも踏まえながら、適切な言語を選定すると良いでしょう。
ハッシャダイのプロダクトでは、最終的にPHPを選択することになりました。
開発の未来を見据えた選択を
自社開発の際の開発言語選定は、事業の方向性や将来の展望を考慮して行う必要があります。短期的なトレンドや一時的な流行にとらわれることなく、真のニーズに基づいた選択を行うことが、成功への鍵となります。