1. Dart 入門という検索語の裏にある本当の不安

Dart 入門で検索する人の多くは、次のどれかです。

・Flutterを始めたが、言語として信用していいか不安

JavaScriptから逃げたい

・Kotlinほど重い設計は避けたい

 

つまり「楽そうだが、縛られそう」という感覚を持っています。

 

この直感は正しいです。

 

2. 言語は「書き方」ではなく「設計の拘束条件」である

ここが最も重要です。言語は開発者を助けるのではなく、逃げ道を塞ぎます。

・型を弱くする → 設計判断を人に任せる

・実行モデルを隠す → スケール時に壊れる

・フレームワーク前提 → 言語から降りられない

 

この観点で見ると、3言語はまったく別物です。

 

3. Dart が最初に固定してしまう設計レイヤー

Dartは導入初期から、次を固定します。

・実行モデル(シングルスレッド前提)

・UI主導のデータフロー

・フレームワークとの一体運用

 

特に重要なのはUIがドメインを支配する構造です。

 

Flutter + Dartでは、「UIが状態を持ち、状態がロジックを持つ」構造になりやすい。

 

これにより、

・ドメイン層の独立が難しい

・API分離が後付けになる

・テスト境界が曖昧になる

 

この時点で、バックエンド的思考は死にます。

 

4. JavaScriptが最後まで固定しない理由

Writing a <a href=https://hachinet.jp/java-systems-development target=JavaScript Framework - Project Structuring - RisingStack Engineering" />

JavaScriptは逆です。

・実行モデルは曖昧

・型は後付け

・設計は完全に人依存

 

これは欠点ではなく、逃げ道として機能します。

・フロントからバックへ移れる

・モノリスから分離できる

・言語を変えても資産が残る

 

JavaScriptが「汚い」のに生き残る理由は、設計の失敗を後から回収できるからです。

 

5. Kotlinが「人のミス」を前提に設計されている点

Our Collection API (Kotlin Framework Class Hierarchy, Function Type,  Predicate) - U Want To Learn

Kotlinは真逆です。

・null安全

・型による制約

・明示的な責務分離

Kotlinは開発者を信用していません。

 

その代わり、組織を信用しています

・人が増える

・ルールが守られない

・設計が崩れる

 

それを前提に、言語側が止めに来ます。これは Dart にはありません。

 

6. 非同期・型・実行モデルの不可逆差

ここで重要なのは、Dartは「選ばせないが、守ってもくれない」点です。

 

7. 規模拡大時に起きる破壊点の違い

Dart:UI層が肥大化し、設計が剥がせない

JavaScript:設計が壊れるが、作り直せる

Kotlin:初期が重いが、後で壊れにくい

 

Dartは中途半端な地点でロックインします。これが最大の問題です。

 

8. 言語選定で本当に比較すべき唯一の質問

「この言語で作ったものを、3年後に捨てられるか?」

・Dart:Flutter前提なら Yes、それ以外は No

・JavaScript:ほぼ常に Yes

・Kotlin:部分的に Yes

 

入門時に考えるべきは、学習コストではなく 撤退コスト です。

 

Dart 入門で本当に理解すべきなのは、Dartが「安全な中間解」ではないという事実です。DartはUI中心開発を高速化する代わりに、設計レイヤーを早期に固定し、後戻りを難しくします。JavaScriptは設計を壊しやすいが逃げ道を残し、Kotlinは初期の自由を奪う代わりに組織的な破綻を防ぎます。どの言語が良いかではなく、どの失敗を許容するかを選ぶ。それが、言語選定の正体です。