
2026/03/10 5:50
**タイトル:** 「アプリ(2025)を書きたいのですか?」
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
概要:
著者は、Standard C、POSIX/Unix CLI、Linux GTK/GNOME、Linux Qt/KDE、Windows WinUI 3、macOS/iOS SwiftUI、および Android Jetpack Compose の 7 つのプラットフォームでサイコロ投げプログラムを構築し、クロスプラットフォーム開発を評価しました。
すべてのプラットフォームにおいて「永続設定」(ダイス面)と少なくとも一つの英語以外の言語へのローカリゼーションが必須でした。
Standard C バージョンはを使用し、範囲処理を慎重に行いました。POSIX ビルドは最小限で実装されましたが、macOS での RNG の奇妙な挙動と高品質rand()サポートの欠如が判明しました。/dev/urandom
GTK/GNOME 開発では GLib/GObject ドキュメントの不完全さ、アクションとシグナル処理の混乱、Flatpak での GSettings スキーマインストール問題、および翻訳ローディングの破損が課題でした。
Qt/KDE(Kirigami/C++)は主に CMake エラー(ECM が不足、ターゲット名が間違っている)が障害となりましたが、解決後はシグナル・スロットと KConfig が円滑に機能し、エラーメッセージも優れています。
WinUI 3 はモダンな XAML レイアウトを提供しましたが、ビルドパイプラインの遅さ、スレッド例外の混乱、および WPF/UWP/WinUI 2/3 で分散したドキュメントが問題でした。
SwiftUI はライブプレビューと設定を提供しましたが、Apple ハードウェア/言語に依存し、頻繁な API の変更(例:NavigationStack が欠如)に直面しました。@AppStorage
Jetpack Compose はドキュメントの断片化、Studio デバッグの不安定さ、非同期 DataStore による永続設定の扱い難さ、および全体的に磨きが足りない印象を受けました。
まとめとして、Qt/KDE が最も「実装できる」環境であると同時に、GNOME は意見が強く、新規ユーザー向けのドキュメントが不足していると評価されます。結論では、CMake の問題を解決した Qt をネイティブクロスプラットフォームアプリ開発の優先選択肢として推奨しています。
注記: この改訂概要はリストからすべての主要ポイントを保持し、新たな推論や仮定を追加せずに明示された内容のみを反映しています。
本文
「Dice‑Roller」プラットフォーム実験のまとめ
私はいくつかの言語と UI ツールキットでシンプルなサイコロ振りプログラムを作成し、各プラットフォームにおける 開発者体験 を評価しました。
核心となるロジックは単純(乱数生成)なので、以下の点に集中することができました。
| プラットフォーム | 重要ポイント | 強み | 弱み |
|---|---|---|---|
| Standard C | 純粋なテキスト、外部依存なし | ISO‑C コンパイラならどこでもポータブル。古いハードウェア上で永続的に動作 | UI が無く、永続化や国際化がない |
| POSIX (Unix‑style) | ・シェルフレンドリー、 は標準外 | シンプルなビルド、コマンドライン規約が明確 | macOS での乱数品質問題。POSIX の RNG サポートが限定的 |
| GNOME / GTK | C + GtkBuilder XML、GObject、GSettings | ネイティブに近い外観、デスクトップ統合 | GObject やアクション vs シグナルのドキュメント不足、Flatpak の奇妙さ、翻訳作業が面倒 |
| KDE / Qt | C++/QML、CMake、KConfig | 強力なシグナル‑スロット機構、エラーメッセージが明確 | CMake に慣れないと混乱。クロスコンパイルの問題、ドキュメントが散在 |
| WinUI 3 (C++/WinRT) | XAML レイアウト、AppData ストレージ | モダンでレスポンシブな UI、IDE ツールが充実 | ブランド混乱。ビルドパイプラインが遅い。スレッドに関する奇妙さ |
| SwiftUI | 宣言型 Swift コード、ライブプレビュー | 迅速な反復、簡単な永続化 () | Apple 固有でクロスプラットフォームの再利用性が低い。API が頻繁に変更される |
| Jetpack Compose | Kotlin + Compose UI、DataStore | Android のモダン UI ツールキット | ドキュメントが断片的。デバッグが難しい。非同期設定が複雑 |
主な結論
-
ドキュメントが最大の障壁。
GNOME の GObject に関する説明不足や KDE の国際化ガイドが散在していることで、技術的制限よりも多くの摩擦を生みました。 -
ビルドシステムは重要。
CMake は時に手間がかかりますが、単純なプロジェクトでは
が驚くほど信頼でき、Flatpak/meson は追加の複雑さをもたらします。make -
永続化と国際化は「nice‑to‑have」ではない。
各プラットフォームで設定保存や翻訳読み込みに手間がかかりました。WinUI と SwiftUI が最も簡単、Jetpack Compose が最も難しいと言えます。 -
モダン UI ツールキット(WinUI 3、SwiftUI、Compose)は柔軟性より開発者エルゴノミクスを優先します。
ライブプレビューやレスポンシブレイアウトが提供されますが、ベンダーのエコシステムに縛られます。
最終的なおすすめ
*「すべてで動く単一コードベース」を求めるなら、Qt(CMake を使わず) が最も実用的です。
強力な UI フレームワークと明確なエラーメッセージ、クロスプラットフォームビルドツールを兼ね備えつつ、学習コストを抑えることができます。
(モバイル専用なら Android/Jetpack Compose も選択肢に入りますが、ドキュメント作業とデバッグ学習曲線がより steep になるでしょう。)