SONICMOOV LAB

こんにちはセイカイです。 そういえば僕はマネージャーだったことを思い出したので、たまにはそれっぽいことを書いてみることにします。

ということでソニックムーブ Advent Calendar 201323日目の投稿は「開発言語の選択」についての記事です。

前置き

最近ではいろいろな言語に触れる機会も多く、会社で自分の好きな言語を導入してほしい等と考える人は多いかと思います。

ただし、組織で新しいことをするには、言語の話に限らず理由が必要ですよねということで、考えるべきポイント等を。 尚、言語性能や周辺環境の話等言語そのものの評価は、ここでは触れないことにします。

受託か、自社サービスか

「受託か、自社サービスか」という部分は取り分け影響力の大きなところです。

自社サービスメインでの想定ですと、基本的に現在一番効率を発揮出来る言語を基準とするか、 扱うサービスに適した環境等がある言語を選ぶべきです。

クライアントが存在する場合、クライアントの環境に依存する部分が多いので、現存する、もしくは今後見込めるクライアントの環境等をメインに言語を選択します。

ただし、運用まで自社で完全に完結するケースがほとんどといった場合は、自社サービスの場合と同様の選択基準でしょうか。

例えば、小規模で余り運用が発生しない状況が想定ですと、新しい言語を実験的に回す事も可能ですが、長期運用ありきの場合、安定していてリソースの確保し易い言語の選択が望まれます。

ここで、考慮すべきなのは自分たちでコントロール可能な領域はどこまでかという部分ですね。

続きを読む

主とするプロジェクトの規模

小さい案件であれば、環境もコンパクトであるべきです。インフラも含め、環境構築の容易なものが良いでしょう。
運用期間が短いと想定されるなら、知見を貯めるという意味も含め積極的に試験的な言語を試すのも有りですね。
ただし、そのような場合は、先に目標とするものが何かという部分を重視する必要があります。

規模が大きなものは、基本的に安定性と運用コストを考えなくてはいけません。 組織としては一番慣れたものを使うのが安パイですが、充分に検証期間を用意出来る場合は多少のチャレンジが許されるかもしれません。

実現性

その言語でないといけないというケースは多々あり、この場合はソレに従うしかありません。

今でこそ、クロスコンパイル可能な言語が増えましたが、iOS/Android等のアプリは上記のようなケースに当てはまりますね。

他にも、受託で環境指定ありきの場合は従う以外ありません。
その他、パフォーマンス等な部分もここで考慮すべき一端です。

人的リソースの確保性

スタートアップ以外ですと、ここがネックで言語を切り替えられないというケースは多々あるかと思います。

リソースが確保しにくい場合は、教育体制等を中心に考えてみるのが良いかもしれません。

コミュニティの活性度や、将来性も今後の利用人口という点でここで考えるべき一端でしょうか。

まとめ

大体当たり前のことしか書いてませんが、会社でという部分を考えると上記のように割と色々な事を気にする必要がありますね。
個人的な理想としては、全員が多数の言語に対応出来、状況に応じて使い分けれることだと思います。理想は理想という事で、基準を考えるとすれば「組織に継続的なメリットをもたらせる」ではないかと思います。

導入・運用・リソース・教育・周辺環境・将来性等、多角度的に考えて、コストを上回るメリットを出せる想定があれば何を使っても良いのではないでしょうか。

新しい言語を使いたい思ったら、是非言語性能や周辺環境だけでなく、上記のような部分を含め提案してはいかがでしょう。

あわせて読みたい記事