[BoF] How to choose programming language for product/in-house software development

kashihara
エンジニア

2018-08-24 15:35:26

Preferred Networksでエンジニアをしている柏原です。PFN Dayでは “How to choose programming language for product/in-house software development” という題でBoFのセッションを開きました。PFN Dayとはトビアスのブログエントリ「[PFN Day] BoF session: How to Improve Sharing of Software Components and Best Practices」にもあるように、社内向けの技術カンファレンスです。

ソフトウェア開発において、プログラミング言語は開発環境をはじめとして、開発チームやサポート体制などに大きな影響を与えます。 PFNの中でもたくさんのプログラミング言語が使われていると思います。 今回は社内で何が使われているかという現状については言及せず、社外にリリースする製品/社内製品を開発することを想定して、どうやってプログラミング言語を選択するか、どのような要素がプログラミング言語の選択に影響を与えるのか議論したいと考えました。

まず、参加メンバーのバックグラウンドを共有するため、どういったソフトウェア開発・プログラミング言語の経験があるか自己紹介をしました。 その後、過去にどのような点を重視してプログラミング言語を選んだのか、プログラミング言語を選ぶときの重要な点についての項目を議論の中であげていきました。

結論としては必要としているものを正しく選ぶ、ということになりますが、以下の優先順位がプログラミング言語の決定に大きく依存しているということになりました。

  • Priority 1: Real world restrictions (E.g. frameworks, platforms)
  • Priority 2: Real world needs (E.g. stability, production readiness, concurrency, distributed computed)
  • Priority 3: Real world benefits (E.g. productivity factors)

1番目のrestrictionsでは、実行環境(OS、モバイル端末、組込)や、目的を実現するためのフレームワークが優先されます。 近年ではたくさんのプログラミング言語が増えてきたとはいえ、その言語が利用できるかは環境に大きく依存します。

2番目は、ソフトウェアで求められている機能・非機能要件を満たすことが、当然ながらソフトウェアの開発で求められます。 プログラミング言語やランタイム環境は、適材適所であるべきといえるでしょう。 ソフトウェアの安定性が求められるのはもちろんのこと、近年ではCPUのマルチコア環境を活かすことも必要とされてきています。 プログラミング言語の機能や特性によって、ソフトウェアの要求を実現できるというのはとても心強いです。

3番前は、プログラマーがプログラミングするにあたって、あると嬉しい部分です。 例えば、テキストエディタやIDEによる、プログラミング言語を書くことをサポートする機能(プラグイン)があげられます。

BoFを開催する前は極端な意見に偏るかもしれないと少し不安でしたが、最終的には現実的な結論に落ち着いたと思います。 その他、興味深いトピックとして、ソフトウェアの正しさを検証するものとして、モデル検査やHDLのSystemVerilog(言語)といったものも話題にあがりました。 80分と長いような短い時間の議論でしたが、興味深い会話ができたと思います。BoFのメモがもし公開されたら、そちらも是非ご覧ください。