忙しい人向けまとめ
- アプリ開発をすることになったとき、良かれと思ってi18nを導入した
- 単純に修正コストがあがっただけ
- 日本語しか導入してない。YAGNI原則大事
気軽にi18nを導入した
今回はBtoB向けのアプリであったが、外国人労働者の存在を考慮して、i18nで最初から実装することにした
(Flutterを使うことになったが、おそらく他手法でのアプリ開発でも同様の悩みは発生するはず)
開発時に目立つ負担はなかった
繰り返される見た目の修正
文字サイズ、文字色、文字配置など、何度も修正が入った
例:「こんにちは」の文字サイズを修正する
- エディタで「こんにちは」で検索をかける
- 言語ファイルが出てくる
- 言語ファイルのキー名「greeting」を取得する
- エディタで「greeting」で検索をかける
- greetingの文字サイズを修正する
2~4が明らかに不要な手順である
「実装者ならどこを修正すればいいか覚えているものでしょ?」という
初学者みたいな意見は出ないと思うが、釘はさしておく
ムダに動作も重い
Flutterの場合は描画するウィジェットに対して、constをつけることで静的であることを明記できる
つまり「こんにちは」という表示にconstをつけておけば、静的で再描画不要と判断される
しかし、全テキスト表示をi18n対応したことによって、表示内容に言語分の選択肢を与え、
全テキストは動的に再描画される対象となったのであった。
不要な実装だった
結局、英語すら対応されることなく、開発したアプリの運用は始まった
YAGNI原則をしっかり守って、必要になるときまで実装しなければより良いものができたはず
例えばグローバル展開する場合でもi18nではなく、言語ごとにアプリを開発するという方法も存在するだろう
行き過ぎた考慮は身を滅ぼしかねないのであった