開発者、システム管理者向けの新規事項

GNOME 3.20 は、GNOME 技術を使って作業する人向けの新機能や改良をたくさん導入しています。

ビルダー

ビルダーは、GNOME 向けの新しい統合開発環境です。GNOME アプリケーションの開発を、効率的かつ強力に支援することを意図しています。すでに様々な機能を備えており、インライン補完や強力なグローバルサーチ、ドキュメントブラウザー、シンボルツリーブラウザーなどが利用できます。

ビルダー 3.20 では、既存機能のブラッシュアップにとどまらず、重要な新機能もいくつか導入しました。アプリケーションのビルドオプションを大幅に拡張しました。ビルダーを使って、xdg-app バンドルを作成できるようになりました。また、JHBuild 環境でのビルドも可能です。これらのビルドオプション (他にもあります) は、新しいビルドコンフィグ画面で確認できます (詳細については、Christian Hergert のブログ記事を参照してください)。

新しいマルチプロセスのプラグインフレームワークも、3.20 の新機能のひとつです。これによって、プラグインを活用して様々な機能をビルダーに追加できるようになります。たとえば、追加の自動補完や、各種ツール、サービス、ビルドシステム、自動インデント、プロジェクトマイニング、サーチプロバイダー、シンボルリゾルバー、バージョン管理システムなど、様々な機能を追加できます。ビルダーをどう拡張できるか (英語) では、新しいプラグインシステムを使った拡張機能の例を大量にリストアップしています。また、プラグインの書き方を解説するチュートリアルもあります (パート 1, パート 2)。

他にも、3.20 でのビルダーの改良点として次のものがあります。

  • アプリケーション設定を大きく見直し、必要な設定項目をすばやく見つけ、極力作業を中断しなくて済むようにしています。

  • 新しい To Do プラグインは、プロジェクト内の TODOFIXME、および XXX のマーカーをすべてリストアップします。また、各項目の場所へジャンプすることもできます。

  • VIM エミュレーションを継続して改良に取り組みました。モーダルなエディットを好むユーザーにとっては、より快適に開発に専念できるようになっています。

  • gettext のよくあるエラーを検出して強調表示するようになりました。

  • ide というコマンドラインツールを新規に提供し、GNOME コミュニティのベストプラクティスに従って、新プロジェクトをすばやく作成できるようにしました。

  • 意味解析をサポートする言語に対しては、Ctrl キーを長押ししながら、変数や型、関数をクリックすることで、その定義箇所にジャンプすることができます。

  • Vala 言語を新規にサポートしました。

  • 自動補完は、より高速になり、またファジーマッチングをサポートしました。

  • ビルダーで ccache が使えるようになりました

xdg-app

xdg-app は、GNU/Linux 上のデスクトップアプリケーションをビルド、配布するためのクロスディストリビューションのフレームワークです。GNOME において第一級のサポートを提供することを計画しています。xdg-app を使えば、異なるディストリビューションで使用可能なアプリケーションを作成することができます。それだけでなく、将来的には、アプリケーションがアクセスできるホストのリソースを制限することで、包括的なセキュリティモデルを提供することも計画しています。

3.20 は、xdg-app にとって重要なリリースとなりました。提供するのコア機能の多くがようやく成熟段階に入ったためです。3.20 には、xdg-app-builder という、アプリケーションのビルドを簡単にできるようにする新ツールも導入しました。xdg-app の中心的開発者である Alexander Larsson は、xdg-app を使ったアプリケーションの構築方法について、5 回に渡るチュートリアルを作成しています (パート 1, パート 2, パート 3, パート 4, パート 5)。

xdg-app を使ったアプリケーションのインストールと実行を試したい場合、ナイトリービルドの GNOME アプリケーションが利用できます。なお、この方法は xdg-app を簡単に試せるだけでなく、GNOME アプリケーションの開発バージョンをテストする良い方法でもあります。また、同じアプリケーションの複数バージョンを同時にインストールできる xdg-app 機能のデモンストレーションも兼ねています。詳細はチュートリアルを参照してください。

3.20 での他の重要な変更点としては次のものがあります。

  • 単一ファイルでのアプリケーションバンドルの作成、配布ができるようになりました。これは、物理メディアでアプリケーションを配布するような場合などに便利です。

  • xdg-app は、全体的なアクセス権限の情報を保持するようになりました。どのアプリケーションが何をできるかに関する情報を記録することができます。これは、アプリケーションサンドボックス実現のための第一歩となるものです。

  • アプリケーションに関する詳細情報 (アプリケーションの説明やスクリーンショットなど) を xdg-app バンドルに含めることができます。クロスデスクトップの標準的な AppData ファイルを使用します。これは、GNOME ソフトウェアなどのアプリストアで使用でき、グラフィカルなインストール体験を向上させることに役立ちます。

  • GNOME ランタイム (アプリケーションが依存する共通のプラットフォームを提供します) を更新、改良し、GNOME への貢献を行いやすくなりました。不安定版のランタイムを提供するようになり、これをナイトリービルドのアプリケーションのインストールや、アプリケーションの開発などに活用することができます。利用可能なランタイムの一覧については、ランタイムに関する Wiki ページを参照してください。

GTK+

3.20 は GTK+ にとって大きなリリースとなりました。特に CSS テーマ機能を見直し、大きく改善しています。テーマの作成が簡単になった、ビジュアルスタイルを正確に定義できる、よりダイナミックなインターフェースが利用できるなど、様々な改良点があります。GTK+ のテーマは、標準的な CSS のボックスモデルに一貫して従うようになっています。マージンや最小の高さ/幅もテーマで指定できます。これにより、GTK+ テーマは、CSS に慣れている人にとって一層親しみやすくなり、さらにはテーマのイメージの予見しやすさも向上し、テーマ作成者にとってはレイアウトやスペース調整などより細かな制御ができるようになりました。

3.20 で導入した、その他のCSS テーマ関連機能を紹介します。

  • CSS テーマに関するドキュメントを充実させました。ウィジェットドキュメントでは、CSS の要素名やスタイルクラス、またその構造について説明を追加しています。

  • CSS セレクターを導入したことで、テーマにおいて特異性を利用できるようになり、テーマ作成者は柔軟性と強力なパワーを手に入れました。

  • ほとんどのウィジェットが、CSS を使ってアニメーションを適用できるようになりました。これにより、人目を引くような動きのある制御が可能になります。

  • 追加の CSS 機能を新しくサポートしました。たとえば、radial-gradient() や、remcalc() などが利用できます。

今回の変更の結果として、既存の GTK+ テーマは更新する必要が生じることになります。多くのスタイルプロパティは非推奨となり、代わりに、それに対応する CSS の使用を推奨するようになりました。3.20 の CSS API は将来的にも安定しているでしょう (今回のバージョンに含まれるドキュメントの内容を継続してフォローしていきます)。

GKT+ 3.20 は、CSS テーマ以外にも、様々な改良があります。

  • GtkShortcutsWindow は、アプリケーションのキーボードショートカットとマルチタッチジェスチャーの一覧を表示するための新しいウィジェットです。グループ化とページ分けによりきれいに整理できます。また、検索機能も組み込まれています。

  • gtk-query-settings は、アプリケーションに可視の GTK+ 設定を問い合わせることができる、新しいコマンドラインツールです。

  • gtk-builder-tool は、.ui ファイルを表示するための新しいプレビューコマンドです。

  • 3.20 で、gspell が最初のリリースを迎えました。これは、GTK+ アプリケーション向けの新しいスペルチェック用ライブラリです。gspell は、この種のライブラリとしては、GTK+ に最適なもので、GtkTextView にスペルチェック機能を簡単に追加することができます。既に gedit 3.20 で gspell が使用されています。

  • gtk3-demo には、非 GTK+ ウィジェットを GTK+ ビジュアルテーマでスタイリングする方法を説明する、外部ドローイングのデモが追加されました。

  • GtkWindow のサイズ変更の挙動を改良して、クライアントサイドのデコレーションで適切に動作するようにしました。gtk_window_set_default_size() は、gtk_window_get_size() と関連付けて使用することになります。ウィンドウサイズの保存に関するベストプラクティスは、ウィンドウ状態の保存に関するチュートリアル を参照してください。

GTK+ インスペクター

GTK+ のライブインスペクターは、3.20 で多くの更新があります。

  • ユーザーインターフェースを洗練させました。サイドバーをドロップダウンで置き換えて、より多くの領域をコンテンツの表示に割り当てるようにしました。また、リストやツリーのクリーンアップを行いました。

  • デバイス情報を全般タブに表示するようになりました。

  • GTK+ の新しい CSS 機能にあわせて、CSS ノードおよび関連するスタイル情報を表示するようになりました。

  • サイズ変更を引き起こしているウィジェットを強調表示できるようになりました。

WebKitGTK+

3.20 での WebKitGTK+ の注目すべき変更点には次のものがあります。

  • セッションを正確にリストアできるようになりました。新しいシリアライズ/リストア API を使用します。

  • スクロールバーを半透明のオーバーレイで表示できるようになりました。GTK+ の標準のスクロールバーと同様のものになります。

  • onbeforeunload をサポートしました。ページを離れる際にウェブサイトがメッセージを表示できるようになります。

  • コンソールメッセージにアクセスできる新 API を設けました。

  • ウェブプロセスをネットワークから隔離させる作業も大きく前進しました。この機能によって、今後 WebKitGTK+ はよりセキュアなものになります。

PyGObject

PyGObject の 3.20 での改良点には、GError サポートの拡張や、関数呼び出しやクロージャの性能向上などがあります。PyGObject API リファレンスも、3.20 での改良点のひとつです。

  • git.gnome.org の C ソースコードへのリンクを追加しました。

  • オーバーライドドキュメント (Gtk.ListStoreGtk.TreeModelRow など) に多くの改良を施しました。

  • 検索機能を改善し、検索関連の設定も新しく追加しました。

その他の改良点

GNOME 3.20 では、他にも開発者向けの改善点があります。

  • GLib に、DTLS (データグラム TLS) のサポートを追加しました。メディアストリーミングを暗号化できるようになります。

  • 整数演算のオーバーフロー検査用ヘルパーを新しく導入しました。安全なコードを書くのがまた一つ簡単になります。

  • JSON-GLibGom、および GtkBuilderGjs から使用されるようになりました。

  • Tracker は、SPARQL 1.1 のサポートを大きく改善しました (クエリ言語 および 更新言語 の仕様を参照ください)。DELETE {...}INSERT {...}、および WHERE {...} 構文をサポートし、BIND も使用できます。また、SPARQL 1.1 の組み込み関数の多くも追加しました。

  • gitg (GNOME のグラフィカルな Git クライアント) は、リポジトリ一覧のスタイルを一新しました。コミットプレビューと diff 表示も、新しいスタイルやシステムテーマとの統合により改善しました (たとえば、システムのダークテーマに合わせて適切なスタイルが適用されます)。