NUTMEGでDartを広めようとしている真下です。 前々から計画していたのですが技大祭当日などに実行委員が使用するシフト確認アプリのSeeFTのバックエンドをGoからDartに変更しました。 まだまだ完成しているわけではないですが,これを機にNUTMEG内でもDartが浸透できるように頑張りたいです。
今回バックエンドの言語を変更したアプリは技大祭の当日などに実行委員が使用するシフトを確認するアプリSeeFTです。 また,現在Dartでは変更途中できちんと動かせるものはまだGoで動いています。
まず,Goをバックエンドの言語として採用していた理由として以下の2つがあげられます。
このようなところから当時勉強していたGoを使って開発しました。
そういった自分一人で背負っていたことやアーキテクチャなどの理由があってきちんと作り直す話が出ていました。
SeeFTではモバイル開発にFlutterを使用していることから選択肢のひとつにDartが,以前のようにGoという2択があがっていました。 それぞれのメリットデメリットを簡単に挙げていきます。
Dartを選ぶメリットとして
Dartを選ぶデメリットとして
Goを選ぶメリット
Goを選ぶデメリット
どちらの言語もGoogleが開発した言語という前提があるので今後サポートされないみたいな心配はあまりありませんでした。 また,ほかのプロダクトと連携したいためにgRPCを導入したいという私個人の願望があるのですがどちらも問題なくできそうなのでそこはクリアしていました。
フロント・モバイルのエンジニアでもバックエンドを触るのが容易なこと,Dartという言語がそこそこ使いやすいことが決定打となってDartを選びました。
また,背景としてこのプロダクトには現在バックエンドを構築できる人間が私しかいないというのもあってフロントから興味をもってくれた人がバックエンドをはじめやすい環境を作りたかったというのがあります。 プログラミングに慣れている人はあまりないと思いますが初心者には言語の壁がやはり大きいです。 さらに非同期の概念も理解するためにきちんと書いてほしいというのもあります。
また,デメリットで書いたフレームワークの選択肢は少ないというところですが正直現在はひとつで,公式から出ているshelfのみです。 この点は逆に調べると公式でもしっかりフォローしてくれているのでなんとかなるんじゃないかなと思いました。 というかDartはpub.devからパッケージを調べてAPI Referenceってところに飛ぶとかなりしっかりとしたReferenceが存在します。 なので基礎さえしっかりしてればほとんどは何とかなるのかなと思います。
実際にこれからこの選択がよかったのかは来年実際に稼働してからわかることなのでどっちにしても何がよかったのかを考察します。それもブログに公開できたらいいなあって感じです。
やっぱりDartは言語として非常に使いやすく優秀な言語だと思うのでこれを機にバックエンドが気になった人はバックエンドの勉強もしてほしいのでそのきっかけにしてほしいです。
あとNUTMEGでもNUTMEG外でもDartを使ってほしいです(切実)