革命のブログ

フレボワークスの社員がブログを通じて情報発信します。

2021年に経験した言語のおすすめランキング

f:id:frevo-works:20211228232920j:plain
フリー素材ぱくたそ(www.pakutaso.com)

どうも。最近、個人開発を始めたくなってきた小野です。

本格的なテレワークが始まってからかれこれ1年以上経過しました。 在宅だと通勤がないので、満員電車のストレスがなくなったのですが、宅配物の受け取りや夕飯の用意など家事が増えてしまいました。 家族にとってはいいことかもしれませんが、自分の時間の確保が難しくなったような気がします。

さて、2021年は新しい言語に触れる機会が多かったような気がします。 そこで今回は、2021年に触ってみた感想をランキング形式で発表していきます。

5位:Swift

実務でiOSアプリ開発を行う機会があり、勉強しました。 率直な感想としては、Objective-Cよりマシだけど、今後は本当に必要な場合のみしか採用しないですね。 あと、フレームワークもSwiftUIというものを使いました。 SwiftUIが登場するまではStoryBoard、UIKitでしたが、これは一般的に宣言的UIと呼ばれ、Webのフロントでよく使われているReactやVueのような書き方です。 筆者はVueの経験があったので、SwiftUIの学習コストはそこまでかからなかったと思います。 Swiftは満足だけど、SwiftUIは好きですね。ただ、従来の方法(UIKit)で実現可能なことがSwiftUIではできないことがあるみたいなので、 今後の改善に期待ですね。

4位:Go

実務ではなく個人的に勉強しました。勉強しようと思ったのは、学習コストが低い上、 パフォーマンスはCには劣るがJavaより速いとの記事を見かけたのがきっかけですね。 ずっとJavaを使ってきた身としては、無視はできません。 しかも、最近流行りのマイクロサービスにもよく利用されるケースも多く、Googleによって開発されているので、サポートも安心できます。

筆者が思うに、Goを使うメリットとしては以下の3つ(3低)のです。 - 学習コストが低い - メモリフットプリントが低い - レイテンシが低い

学習コストが低い

Goはシンプルを目指した言語なので、覚えることは少ないです。 下記のチュートリアルを利用すれば、1週間くらいである程度使えるようになると思います。

https://go-tour-jp.appspot.com/list

逆に覚えることがすくない反面、言語の表現力は低いです。 例えば、繰り返し処理に関しては、Goの場合「for」しかありません。JavaでいうところのStreamAPIのようなものはもちろんありません。そのため、実装量は増える傾向があります。

あと、try-catch例外やGenericsもありません。(Genericsについては今後採用される予定)

メモリフットプリントが低い

Goはマルチプラットフォーム向けにネイティブコンパイルが可能です。 つまり、コンパイルしたものをどのプラットフォームでも実行可能になります。 Javaもマルチプラットフォームでの実行は可能ですが、JVMが必要です。

ネイティブコンパイル後の、バイナリのサイズが低く、実行時のメモリ使用量も低く抑えられます。

レイテンシが低い

ネイティブコードにコンパイルされるため、処理速度も早いです。 しかも、Javaにとって永遠の課題である起動速度に関しては、圧倒的に早いため、マイクロサービスに採用されている理由がわかりますね。

3位:Dart(Flutter)

iOS、Android用のアプリを開発する際の調査のため勉強しました。 Flutterは1ソースでiOSとAndroidのアプリが作れるマルチプラットフォーム開発用フレームワークです。 最近よく目にすることが多く、実績も増え続けているので、ネイティブ言語で作る理由が特にないのであれば、Flutter一択なのかなと思います。 似たようなフレームワークにReactNativeがありますが、これは開発メンバーがReact経験者でかつ開発コストを抑えたい場合は採用してもいいかもしれませんが、それでない場合は情報収集した限りでは、Flutterの採用をおすすめします。

現在は主にスマホアプリ向けに使われることが多いですが、他にもWebやデスクトップアプリも作れます。 もし、今後スマホアプリの開発案件が来たら、積極的にFlutterを採用したいと思います。

2位:Kotlin

Androidアプリ開発のために勉強しました。前から名前は知っていたのですが、Androidアプリを開発するモチベーションがなくて触れることがありませんでした。 KotlinはJetbrainsが開発したものですが、Androidの公式の開発言語ということもあり、Googleのサポートもあるので、今後も長生きすると思います。 あと、まだ実績はあまりないですが、サーバサイドの言語としても見かけることが多くなってきました。

ずっとJavaをやってきた筆者からの感想としては、とても使いやすかったですね。

Javaでは冗長的な書き方もKotlinではスッキリ書けることが多いです。

Javaに比べメリットしかないKotlinですが、サーバサイドKotlinの情報があまりないので、もう少し様子を見ようと思っています。

1位:TypeScript

Javascriptに型システムを導入したAltJS言語です。 Javascriptは型がないため、自由度が高く、実行時エラーになることが多いです。 そこで、TypeScriptを導入することで、コード補完やコンパイル時にエラーに気付くことが可能になり、開発体験が上がります。 Typescriptは、AngularJS登場時に使われていたのですが、 そのときはそこまで注目されなかったような気がします。

Typescriptを初めて導入したときは、Javascriptの自由度が奪われ、型定義が必要になったりと使いづらいなぁと思っていましたが、今となってはTypescriptなしでは開発できません。

今後もWebフロント開発における主要言語として、Typescriptの人気は続くと思います。

おすすめ言語は?

未経験の方が「どの言語を学べばいいですか?」という質問をしているのをよく見かけます。

個人的におすすめなのは「Go」です。 理由としてはやはり学習コストの低さです。

先程のチュートリアルを使えば、開発環境を作る必要がなくブラウザのみで勉強することができます。 Goを習得すれば、他の言語への移行もしやすいのかなと思います。