6 ポイント 投稿者 GN⁺ 2024-03-28 | 3件のコメント | WhatsAppで共有
  • Swiftは、簡潔な構文、静的型付け、コード記述を容易にする特別な機能のおかげで、ユーザーインターフェースの作成に適している
  • Adwaita for Swift は、こうしたSwiftの機能を活用し、GNOMEプラットフォーム向けアプリケーション開発のための直感的なインターフェースを提供する
  • GNOMEはLinux向けの人気のあるオープンソースのデスクトップ環境で、シンプルさとアクセシビリティを重視している

コード例

  • Adwaita for Swiftを使ったコード例では、Counter というビューを定義して、ウィンドウ内部のユーザーインターフェース部分を表示する
  • ビューは別のビューの中にネストしたり、ウィンドウの子として追加したりでき、ビュー階層内での位置に応じて外部から内容を変更できる
  • これにより、さまざまな結果を生み出すためにビューを組み合わせることがより簡単になる

動機

  • Swiftを使ってGNOMEアプリを書けるようにするためのもの
  • 既存のlibadwaitaおよびGTKバインディングは、コマンドの連なりを使ってユーザーインターフェースを構築する命令型コーディングスタイルに従っている
  • Adwaita for Swiftはデータ中心で構築されているため、たとえばボタンを押して count 変数を変更すると、ユーザーインターフェースが自動的に更新される

使いやすさ

  • 従来のバインディングでは、値が変更されるたびにウィジェットが内容を更新するよう、オブジェクトに対して関数を呼び出す必要がある
  • Adwaita for Swiftでは、保持したい変数に一意の識別子を追加するだけで、残りは自動的に処理される

可読性

  • データ中心のアプローチは可読性にも良い影響を与える
  • ユーザーインターフェース自体を宣言的に定義できるため、結果を得る方法よりも、アプリの見た目と振る舞いに集中できる

クロスプラットフォームアプリ開発

  • Adwaita for Swiftは、Linux、macOS、Windowsで単一のコードベースから動作するアプリを書けるようにする
  • SwiftUIアプリとGNOMEアプリの間でバックエンドのSwiftコードを共有できる
  • Swiftを使って新しいGNOMEアプリを作成でき、優れたコード可読性とメモリ安全性を実現できる

アプリのリリース

  • Adwaita for SwiftはFlathubとうまく連携し、デスクトップLinux向けアプリのインストールと公開を簡素化する
  • Swift 5向けのFreedesktop SDK拡張と、Swift Package Managerの依存関係をFlatpakソースへ変換するツールがある

GN⁺の意見

  • SwiftとGNOMEの組み合わせは、開発者に新しいプラットフォームでのアプリ開発の機会を提供し、とりわけSwiftの強力な言語機能とGNOMEのユーザーフレンドリーな環境が組み合わさることで、効率的な開発体験を可能にする。
  • この記事はLinuxデスクトップ環境への新しいアプローチを示しており、既存の開発方式と比べて、宣言的スタイルによる開発のしやすさと可読性を強調している。
  • クロスプラットフォーム開発の利点を強調し、さまざまなオペレーティングシステムで同じユーザー体験を提供することの重要性を浮き彫りにしている
  • 技術的な背景知識として、Swiftの静的型付けとメモリ安全性は、アプリの性能と安定性を高めるのに寄与しうる
  • 批判的な観点から見ると、GNOME環境以外のデスクトップ環境での互換性の問題や性能上の課題が発生する可能性も考慮する必要がある

3件のコメント

 
bbulbum 2024-03-30

https://stuff.mit.edu/afs/athena/…

Gnome の公式な発音は「ノーム」ではなく「グノーム」です。

 
neoroman 2024-03-29

素晴らしいですね。

 
GN⁺ 2024-03-28
Hacker Newsの意見
  • SwiftUIに似たラッパーに関する議論

    • SwiftUIに似た宣言的ラッパーを提供するアプローチについて言及している。GNOME機能向けにSwiftUIスタイルのラッパーを提供したいというのが中核的な前提である。
    • SwiftUI自体は、適切なスレッドで処理・更新を行い、データバインディングを正しく機能させることに関して成長痛を抱えている。
    • swift.orgやAppleのブログ記事は、たいていうまく動く経路を示す小さなデモにすぎない。新しいフレームワークやプラットフォームを論じる際には、著者たちが主要な問題を理解し、解決し、開発を継続していくという、より多くの証拠を見たいとしている。
    • クロスプラットフォームUIフレームワークはすぐに複雑化し、FlutterやJava/Eclipseのように、ユーザーやクライアントにとって障壁になり得る長期的な問題を抱えている。
    • Swiftの場合、複数の並行性モデルや、AppleプラットフォームとLinuxでの挙動の違い(公式にはUIがテストされていない)があり、状況をさらに難しくしている。
  • 他のプロジェクトやツールへの言及

    • SwiftUIに似たラッパー、Tokamak、そして組み込み用途向けのFlutterSwiftへのリンクを提供している。
  • 個人的なプロジェクト経験の共有

    • Valaとgtk4を使って小さなサイドプロジェクトを書いた経験を共有している。
    • Blueprintのフォーマットは気に入ったが、より高度な機能をどう実現するかに関するドキュメント不足に苦労した。
    • Valaという言語はとても気に入っているが、すべてのロジックとモデルをValaで書いたうえで、UIにはこのSwiftライブラリを使うのがよいだろうと考えている。
  • 過去の経験との比較

    • 約20年前にMonoを使ってC#でGNOMEアプリを書いていた体験に似ていると感じている。
  • Macでの実行問題

    • Macで実行を試みたが、adwaita.h が見つからない問題に遭遇した。
  • 個人的な「夢のフレームワーク」についての意見

    • SwiftUIのようなオープンソースで、GTK4をターゲットにしている点が、理想のクロスプラットフォーム・デスクトップUIフレームワークに近い。
    • Swiftの文法は慣れるまで時間がかかるが、ひとたびすべての概念に慣れれば非常に使いやすい言語だとしている。
    • Swiftを使わない唯一の理由は、LinuxでのサポートがAppleプラットフォームほど良くないからだとしている。
  • gtk4での3Dサポートに関する質問

    • gtk4で3Dを使う場合でも、依然としてOpenGLコンテキストに制限されるのかという疑問を呈している。
  • 関数パラメータでのキー使用に関する意見

    • 関数パラメータにキーを導入したのは失敗だったと考えている。
  • Swiftコードベースのテストに関する議論

    • Swiftコードベースをどのようにテストするかについて議論している。テストに関するドキュメントが不足しており、モック、スタブ、レポート、コードカバレッジなどに関する戦略が提供されていない。
    • Network Extensionを使うアプリの場合、署名制約のため実機でしかテストできない。
    • iOSとmacOSの両方のデバイスをサポートする、優れた実機CIサービスを知っている人がいるかと尋ねている。
  • Swiftがデスクトップ開発の興味深い選択肢になりつつあるという発見

    • Swiftがデスクトップ開発において興味深い選択肢になりつつあることを最近知った。この例に加えて、macOSとWindows向けのArcも挙げている。