目的別お勧めプログラミング言語とフレームワーク

世の中には様々なプログラミング言語があります。目的に特化したプログラミング言語もありますが、多くのプログラミング言語は汎用的なものです。とは言え、目的に応じてプログラミング言語を変えた方が、より効率的にソフトウェア開発を進められるはずです。

今回は皆さんの目的に合わせて、お勧めなプログラミング言語を紹介します。

IoT開発

IoT開発で大事なのは、プログラムを実行するデバイスのリソース(CPUやメモリ、ストレージなど)が小さいということです。そのため、リソースを大量に消費するような言語は選択できないでしょう。また、一般的なOSとは異なり、利用できる言語に制約がある場合もあります。

Arduinoで開発を行う場合、選択肢はProcessingが一般的になるでしょう。また、tinyGoというIoT特化型のGo言語も利用できます。Raspberry Piはマイコンではないのでもう少し選択肢が多いですが、標準で入っているC言語やPythonを選択されることが多いようです。また、スイッチを押したり、データを監視したりとイベントを受け取って開発を行うことが多いので、イベント通知を得意とするNode.js(JavaScript)が利用されることも多いです。

AI/機械学習開発

AIや機械学習の開発においてはPythonが群を抜いて選ばれることが多いです。数値計算系のライブラリが充実しており、それに伴ってTensorflowやCafeといった機械学習用フレームワークもPythonで開発されています。

一部のフレームワークはC言語にも対応しているので、より低リソース、高速に実行したい場合には選択肢になります。Node.jsも同様です。なお、クラウドの機械学習サービスを使う場合にはプログラミング言語は自由に選択できるでしょう。

Webシステム開発

Web開発は多くのプログラミング言語が得意とするところです。PHPのように元々Webアプリケーションを開発するのを目的として開発されているプログラミング言語もあります。企業システムであればJavaやC#も利用されます。他にもRuby/Python/Node.js/Goなどのプログラミング言語でも開発できます。

Web開発の場合には、プログラミング言語の選定はもちろんのこと、フレームワークの選定も重要です。2020年現在でいえば、PHPでいえばLarabel、RubyはRuby on Rails、PythonではDjango、Node.jsはExpressといったフレームワークが利用されます。

Webフロントエンド開発

Webブラウザ上で実行できることが保証されているプログラミング言語はJavaScriptのみです。そのため、Webブラウザ上で動作するWebアプリケーションを開発しようと思うと、JavaScriptの習得は必須になります。

限定的な利用にはなりますが、WebAssemblyを使うこともできます。WebAssemblyはプログラミング言語ではなく、Rust/C/C++/Goなどから変換して作成します。

CLI開発

コマンドプロンプトやターミナル上で動作する、いわゆるCLIのソフトウェアを開発する場合にはBashスクリプトであったり、C言語/Node.js/Ruby/Python/Go/Rustといったプログラミング言語を利用します。様々な実行環境(OS)上で実行することを想定する場合、GoやRustのようにクロスコンパイルが簡単にできるプログラミング言語がお勧めです。

Node.js/Ruby/Pythonといったスクリプト言語の場合、実行ランタイムのインストールが別途必要です。標準で入っている場合には不要ですが、入っていない場合やバージョンが異なる場合を想定した開発も必要です。

デスクトップアプリケーション開発

デスクトップアプリケーションは各OS(WindowsやmacOSなど)ごとに開発言語が異なります。Windowsの場合は.NET(C#など)、macOSの場合はSwiftやObjective-Cが使われます。

しかし、最近ではElectronというNode.js用のデスクトップアプリケーション向けのフレームワークがあります。Electronを使うことで、HTML/JavaScript/CSSといったWeb技術を使ってデスクトップアプリケーションが開発できるようになります。

スマートフォンアプリ開発

スマートフォンアプリはAndroidまたはiOSのどちらかになるでしょう。AndroidであればKotlinまたはJava、iOSであればObjective-CまたはSwiftが利用されます。また、React Native/Cordova/Flutterは一つの言語で両プラットフォーム向けに開発できます。React NativeとCordovaはJavaScript、FlutterはDartを使って開発します。

まとめ

プログラミング言語は多岐に渡るので、自分が作りたいものに合わせて選択するのがいいでしょう。今回リストアップした中では、最も汎用性が高いのはJavaScript(Node.js含む)になります。機械学習やAIをはじめたいならばPythonが最もいい選択肢になるでしょう。

一つの言語を習得すれば、別な言語を覚えるのはさほど難しくありません。ぜひプログラミング言語を学んで、開発にトライしてみましょう。

IoTやAIを学ぶなら作って学ぶ人工知能IoTエンジニア養成キットもオススメです!

]]>

上部へスクロール