はじめに
Flutterは本当に便利なフレームワークです。
iOS・Android・Web・デスクトップを一つのコードベースで作れて、UIも美しく、開発スピードも速い。
でも、「なんでもFlutterで作れる」かというと、そうではありません。
今回は、実際に開発してみて「これはFlutterには向かないな」と気づいたケースをまとめました。これからアプリ開発を考えている方の参考になれば嬉しいです。
① 既存の帳票・様式を完全再現しなければいけないもの
これが一番痛感したケースです。

消防設備点検の業務アプリを開発していたとき、点検結果をPDFで出力する機能を実装しました。PDFの出力自体はFlutterのpdfパッケージで対応できます。
ところが、依頼主から「消防庁が定めた様式と全く同じレイアウトで出力してほしい」という要件が出てきました。
消防庁の様式というのは、こんなものです。
- セル結合が複雑に入り組んだ表
- 行の高さ・列幅がミリ単位で決まっている
- 縦書きのセルが混在している
- A〜F列が横に並ぶ特殊なレイアウト
これをFlutterのpdfパッケージで完全再現しようとすると、膨大な手作業が発生します。しかも少し様式が変わるたびにコードを修正しなければならない。
結論:お役所や業界団体が定めた「指定様式」の完全再現が必要な場合、FlutterのPDF出力は向いていません。
このケースでは潔く撤退しました。
向いているケース・向いていないケースの見分け方
| 向いている | 向いていない |
|---|---|
| 「情報が読めればOK」なPDF | 「この様式と全く同じ」なPDF |
| 自分でデザインできるPDF | お役所・業界指定の帳票 |
| シンプルな表・リスト | セル結合だらけの複雑な表 |
② Excelファイルそのものを生成・編集するもの
「入力した内容をExcelに書き出したい」という要件も要注意です。
FlutterにはExcelを扱うパッケージ(excelなど)がありますが、できることに限界があります。
- 複雑な書式・セル結合の再現が難しい
- 既存のExcelファイルに書き込む場合、書式が崩れることがある
- グラフや関数が含まれるExcelはほぼ対応不可
業務で使われるExcelは「セルの色・罫線・結合・数式」が複雑に絡み合っていることが多く、これをFlutterで再現するのは現実的ではありません。
結論:Excelファイルの生成・編集が主目的なら、PythonやVBAの方が適しています。
③ 印刷レイアウトをミリ単位で合わせる必要があるもの
宛名ラベル・納品書・領収書など、「印刷したときに決まった位置に文字が来なければならない」ものも苦手です。
たとえば市販の宛名ラベル用紙に合わせて印刷する場合、用紙のサイズ・余白・ラベルの位置を0.1mm単位で調整しなければなりません。
Flutterのレンダリングエンジンは画面表示に最適化されており、印刷物のミリ単位の位置合わせには向いていません。
結論:印刷位置の精度が重要な帳票類は、ReportLabやWord差し込み印刷の方が確実です。
④ ブラウザの拡張機能として動かすもの
「Chrome拡張機能を作りたい」という場合、FlutterはWebにも対応していますが、ブラウザの拡張機能としては動作しません。
Chrome拡張機能はJavaScript(Manifest V3)で作る必要があります。
結論:ブラウザ拡張機能はJavaScript一択です。
⑤ OSの深い部分に触るシステム系ツール
ファイルシステムの監視・レジストリの操作・他アプリとのプロセス間通信など、OSの深い機能を使うものもFlutterには向いていません。
もちろんMethodChannelやFFIを使えば理論上は可能ですが、開発コストが非常に高くなります。
⑥ SEOが必要なWebサイト・ランディングページ
FlutterはWeb対応していますが、Webサイト制作には向いていません。
理由は、FlutterのWebレンダリングが文字を「絵として描画する」CanvasRenderer方式を使っているためです。Googleなどの検索エンジンはHTMLのテキストを読んでインデックスしますが、Flutterで描画された文字は画像と同じ扱いになり、検索に引っかかりません。
結論:Webサイト・ブログ・LP(ランディングページ)はWordPressやHTMLで作るべきです。
まとめ
| 向いていないケース | 代替手段 |
|---|---|
| 指定様式の帳票PDF再現 | 専用の帳票ツール・Web画面での確認のみ |
| Excelファイルの生成・編集 | Python(openpyxl)・VBA |
| 印刷位置ミリ単位の帳票 | ReportLab・Word差し込み印刷 |
| ブラウザ拡張機能 | JavaScript(Manifest V3) |
| OSの深い機能を使うツール | Python・C# |
| Webサイト | WordPress・HTML |
最後に
「Flutterで作れるか?」を判断するときに、私が最初に確認するようにしたのはこの3つです。
- PDFはどんな形式が必要か?(自由なレイアウトか、指定様式か)
- Excelファイルそのものが必要か?(データが読めればOKか)
- 印刷物として使うのか、画面で見るだけか?
この3つを事前に確認するだけで、「作り始めてから気づく」という失敗を防げると思います。
失敗から学んだことを次に活かす——それが個人開発者の強みだと思っています😊
このブログはsinqwell.netで公開しています。
X(Twitter): @sinqwell_dev
