この記事は、Dotto公式noteで掲載された記事を転載したものです。
コメントやいいねは、noteの記事でお待ちしています。
Dottoとは
Dottoは2023年12月から運用されている、公立はこだて未来大学のポータルアプリです。
学生・教職員がDottoから学内のあらゆる情報を手にいれることができるだけではなく、訪問者や入学予定者などの学外の方にも役に立つ情報を手に入れることができます。
2025年度は、学部1年生から修士1年生までの合計23人で構成されるチームで開発しています。
miseとは
以下、公式サイトの引用(一部抜粋)です。
mise(ミーズ)は、開発環境設定ツールです。
miseはnode、python、terraformなどの開発ツール/ランタイムをインストール・管理します。これによりツールのインストールが簡素化されるだけでなく、プロジェクトごとに使用するツールのバージョンを指定できます。miseは数百の開発ツールをサポートしています。
mise導入を決めるまで
開発チームで今年度を振り返る機会がありました。
今年から開発に参加した学部1年生から、オンボーディングが難しすぎるという声がありました。
今年からオンボーディングをドキュメント化し、再現性を担保する取り組みを始めましたが、確かに煩雑ではありました。
Dottoでは、Flutterをfvmで管理し、Node.jsをnvmで管理、fastlaneのためのRubyをrbenvで管理するなど、それぞれの環境をそれぞれのバージョンマネージャーで管理していました。
普段からその環境を利用している人なら全く問題ありませんが、1から環境構築するとなると、ステップが多く、オンボーディングにかかるコストが大きくなっていました。
そこで、複数のツールをmiseで管理するようにし、コマンド1つでプロジェクトに必要なツールのセットアップができる環境を実現しようと考えました。
miseで管理するツール
Task
Dottoでは、Taskというタスクランナーを使用しています。
今までは、Homebrew経由でインストールしていましたが、miseで管理するようにしました。
Flutter
従来は、fvmを使用して管理されていました。
GitHub Actionsではsubosito/flutter-actionを使用して、プロジェクトで使用しているバージョンのFlutter環境をセットアップしていました。
そのため、ローカルの開発環境では、fvm flutterコマンドを使用しますが、CI環境ではflutterコマンドを使用することとなり、後述のTaskfile内で使用するコマンドを環境によって条件分岐していました。
Node.js
Dottoでは、FirebaseのプロジェクトをFlutterのプロジェクトに紐づけるために、FlutterFireを使用しています。
その際に、Firebase CLIであらかじめ認証しておく必要があります。
Firebase CLIはnpmパッケージであるfirebase-toolsをインストールすることによって使用できるため、Node.js環境が必要です。
従来は、nvmを使用して管理されていました。
Ruby
Dottoでは、証明書管理やTestFlightへの配信にfastlaneを使用し、CI環境ではDangerを使用しているなど、一部Rubyに依存している部分があります。
従来は、rbenv を使用して管理されていました。
mise.toml
miseの設定ファイルであるmise.tomlの最終版がこちらです。
[tools]
"aqua:go-task/task" = "latest"
flutter = "3.38.7"
node = "24.13.0"
ruby = "4.0.1"ドキュメントを更新
miseの導入と同時に、オンボーディングドキュメントの更新も行いました。
それぞれのツールのセットアップに必要な操作が格段に減少し、ドキュメントの該当箇所を削除することができました。
具体的に削除されたドキュメントは以下の通りです。
OS毎に手順が異なるセットアップも、そのものが必要なくなったため、大幅な削減につながりました。
まとめ
使用するツールのバージョンを全てmiseで管理できるようになりました。
更新したドキュメントをもとに、4月に新メンバー向けのオンボーディングを行うので、そこで効果が現れてくるかと思います。
今後は、これらのツールのバージョンとFlutterが依存しているパッケージのバージョンを常に最新に保てるように、Renovateの導入も検討しています。
続編に乞うご期待!!
筆者
Kanta Oikawa
公立はこだて未来大学大学院修士1年
Dottoのモバイルアプリ開発をリード。
