私は業務アプリのSEとして働いています。Windowsで稼働するアプリケーションの開発を頻繁に行っています。
個人的にウェブアプリやウェブサービスの開発に興味があり、TypescriptとかAngularとかいろいろ触ってみましたが、 やっぱりVisual Studioって良い!と実感しています。
かなり私個人の偏見が混じっていますが、Windows系+ウェブ・スマホ・ゲーム・VR開発に特化した プログラミング言語の選び方紹介します。
結論
- Visual Studio の開発効率は最強。
- Javascript とか HTML とか CSS とか、自動補完がなくて大変。
- C# だとスマホアプリもウェブアプリも作れるから、これでいいんじゃね?
- Office アプリだったら、VBA以外無いでしょ。
- アプリは作ってなんぼ。開発スピードが速いのが一番。
※かなり私的な意見ばかりですので、興味の無い方はブラウザの「戻る」ボタンをクリックしてください。
Microsoft Office ベースのアプリならVBA一択
Office ベースのアプリケーションを開発するなら VBA 一択です。 最近では他のプログラミング言語からでもExcelシートを出力することもできますが、 コード行数の少なさや出来ることを考えると、各Office製品のVBAが一番です。
今どき Office なんて、と思う人もいるかもしれませんが、うちではAccess 2000データベースで 作成されたアプリケーションが現役で稼働しています。それだけ昔に作られたアプリケーションが、 グレードアップもされずに10年以上も使われているのが現状です。 メンテナンスしとけよ、というツッコミが予想されますが、グレードアップしなくても 稼働する製品を保守しているMicrosoftって、すごいと思いませんか?
VBAであれば開発環境でコードの自動補完もできますし、デバッグも簡単です。 プログラミングの楽しさは人それぞれかもしれませんが、開発スピードは一番早く、 高い開発効率を維持できると思います。
Windows フォームアプリケーションの開発ならVB.NETかC#
Office製品じゃなくて、Windows フォームアプリケーションの開発が求められることもあると思います。 この時のプログラミング言語の候補は VB.NET か C# が上がると思いますが、どちらでも問題ありません。
今は、HTML・CSS・Javascript on Electron でマルチプラットフォームのアプリケーションが開発できますので、 Macやスマホアプリも開発対象に含めるのであれば、Electron もアリだと思います。 しかし、Electronで開発されたアプリはメモリ消費量が激しく、すぐに100MBも消費します。 その点、.NET Framework を用いた アプリケーションであれば、アプリケーションの規模によりますが、 数十MB程度の消費で十分稼働します。
また、Windowsオンリーという条件下であれば Visual Studio での開発効率は最強です。 私もElectronを使用して業務アプリをいくつか開発しましたが、HTMLのように全てコーディングして 画面を構築するのがどうしても好きになれませんでした。開発スピードが遅いからです。 また、コードの自動補完も十分ではありません。Visual Studio Code である程度補完ができたり ボイラープレートを使用することで効率化はできますが、Visual Studio の開発スピードには敵いません(少なくとも私は)。
なので、Windows フォームアプリの開発ならVB.NETかC#で決まりです。
ウェブアプリも開発したいなら、ASP + HTML・CSS・Javascript必須
ウェブアプリを開発したいなら、HTML・CSS・Javascriptは必須です。頑張ってコーディングしています。 ただし、この場合もVisual Studio の開発効率はかなり高いと思っています。 Visual Studio ならデータモデルを定義するだけで、CRUD(Create / Reference / Update / Delete )の画面を 自動生成してくれるからです。
あまりデザインに拘らなければ、かなり早く開発できます。
Javascript は変数宣言の際に明確に型を定義しませんので、どんな値が入るかわかりません。 そのため、文字列や数値のオブジェクトが持っているメソッドの自動補完ができません。 これが嫌なら、Typescriptの導入も考えましょう。 Typescriptは自動補完がしっかりしていますので、これに慣れきってしまった自分にとっては Typescriptが外せなくなりました。
スマホアプリやSPA、ゲーム・VR、Macアプリを開発するならc#
私はこのレベルまで達していませんが、C# であれば、iOSやAndroidのスマホアプリ、 Blazorを使用したウェブアセンブリによるSPA、Unityを使用したゲーム・VR、 Xamarineを使用したMacアプリケーションも開発できます。
スマホアプリやフォームアプリを例にとると、Electron と違って、一つのソースコードで全ての プラットフォームで実行できるような作りは難しいかもしれません。 ここは .NET Core に期待です。
最後に
プログラミング言語について偉そうにいろいろ書きましたが、この世界は「アプリを作ってなんぼ」だと思います。 プログラミング言語なんて正直なんでもよくて、短期間で開発できる言語が一番だと個人的には思います。
なので、作りたいアプリをまず決めて、一番早く完成できる言語を選ぶべきだと思います。 ウェブサービスだけだったら、HTML・CSS・Javascript・node.js が一番早いかもしれませんし、 そこは人それぞれです。
言語の選択に迷った時は、ライブラリやパッケージが多いか、Google検索してヒットする情報が多いか、 で選べばいいと思います。
コメント