5.6. Anaconda アドオンの作成
				以下のセクションでは、Hello World という名前のサンプルアドオンを作成およびテストするプロセスについて説明します。このサンプルアドオンは、全インターフェイス (Kickstart、GUI および TUI) をサポートします。このサンプルアドオンのソースは rhinstaller/hello-world-anaconda-addon リポジトリーから取得できます。このリポジトリーをクローンするか、ウェブインターフェイスでソースを開くことが推奨されます。
			
				もう 1 つ確認するリポジトリーは、rhinstaller/anaconda です。ここにはインストーラーのソースコードがあり、本セクションでこのコードの一部が参照されます。
			
				アドオン自体の開発を開始する前に、次の説明に従ってディレクトリー構造を作成することから始めます。「Anaconda アドオンの構造」 .次に、「キックスタートのサポート」、キックスタートのサポートはすべてのアドオンで必須です。その後、オプションで続行できます「グラフィカルユーザーインターフェイス」と「テキスト形式のユーザーインターフェイス」必要に応じて。
			
5.6.1. キックスタートのサポート リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
					Kickstart サポートはアドオンで最初に開発すべき点です。グラフィカルおよびテキストベースのインターフェイスのサポートなど他のパッケージはこれに依存します。まず、これまでに作成した 
com_example_hello_world/ks/ ディレクトリーに移動し、__init__.py ファイルがあることを確認して、さらに hello_world.py という名前の Python スクリプトを追加します。
				
					ビルトインの Kickstart コマンドとは異なり、アドオンは独自の セクション で使用されます。Kickstart ファイル内でのアドオンの使用はそれぞれ %addon ステートメントで開始され、%end で終了します。%addon 行にはアドオンの名前 (%addon com_example_hello_world など) と、オプションで引数一覧も含めます (アドオンがこれらに対応している場合)。
				
					Kickstart ファイルでのアドオンの使用例は以下のようになります。
				
例3 Kickstart ファイルでのアドオンの使用
					アドオンのキックスタートサポートのキークラスは 
AddonData と呼ばれます。このクラスは pyanaconda.addons で定義され、キックスタートファイルからのデータを解析および保存するためのオブジェクトを表します。
				
					引数は、
AddonData クラスから継承されたアドオンクラスのインスタンスに、リストとして渡されます。最初の行と最後の行の間にあるものはすべて、一度に一行ずつアドオンのクラスに渡されます。Hello World のアドオンサンプルをシンプルにするために、このブロック内のすべての行を単一行にまとめ、元の行を空白で区切ります。
				
					サンプルのアドオンでは、%addon 行からの引数リストの処理のメソッドとセクション内の行を処理するメソッドのあるクラスを 
AddonData から継承する必要があります。pyanaconda/addons.py モジュールにはこれに使用可能な以下の 2 つのメソッドが含まれています。
				handle_header: %addon 行のリスト (およびエラー報告用の行番号) を取ります。handle_line: %addon と %end のステートメント間のコンテンツの単一行を取ります。
					以下では、上記のメソッドを使用する Hello World アドオンの例を表示します。
				
例4 handle_header と handle_line の使用
					この例では、必要なメソッドのインポートと 
__all__ 変数の定義から始めます。これは、Anaconda の collect メソッドがアドオン固有の HelloWorldData ではなく AddonData クラスを取得しないようにするのに必要な変数を定義します。
				
					この例は、親の 
__init__ を呼び出して、self.text と self.reverse 属性を False に初期化する __init__ メソッドで、AddonData から継承したクラス HelloWorldData の定義を示しています。
				self.reverse 属性が handle_header メソッドに反映され、self.text が handle_line に反映されます。handle_header メソッドは pykickstart が提供する KSOptionParser のインスタンスを使用して、%addon 行で使用される追加オプションを解析し、handle_line は各行の最初と終了時に空白のコンテンツ行を取り除き、self.text に追加します。
				
					上記のコードは、 Kickstart ファイルからデータを読み取るという、インストールプロセスにおけるデータライフサイクルの第 1 フェーズをカバーしています。次のステップは、そのデータを使用してインストールプロセスを進めることです。この場合、事前定義された方法が 2 つあります。
				
setup: インストール処理の開始前に呼び出され、インストールランタイム環境の変更に使用されます。execute: 処理の最後に呼び出され、ターゲットシステムの変更に使用されます。
					これら 2 つのメソッドを使用するには、新たなインポートと定数をモジュールに追加する必要があります。例を示します。
				
例5 setup および execute メソッドのインポート
setup および execute メソッドを含む Hello World アドオンの更新例を以下に示します。
				例6 setup および execute メソッドの使用
					上記の例では、
setup メソッドは何もせず、Hello World アドオンはインストールランタイム環境に変化を加えません。execute メソッドは、保存したテキストを、ターゲットシステムのルート (/) ディレクトリーで作成したファイルに書き込みます。
				
					上記の例で最も重要な情報は、それら 2 つのメソッドに渡される引数の量と意味です。これらは、例の中の docstring に記載されています。
				
					データライフサイクルの最終フェーズ、およびキックスタートサポートを提供するモジュールで必要なコードの最後の部分は、インストール時に設定された値を含む新しいキックスタートファイルを、説明したようにインストールプロセスの最後に生成します。の「Anaconda のアーキテクチャー」.これは、インストールデータを格納するツリーのような構造構造で 
__str__ メソッドを呼び出すことで実行されます。つまり、AddonData から継承されたクラスは、有効なキックスタート構文で保存されたデータを返す独自の __str__ メソッドを定義する必要があります。この返されるデータは、pykickstart を使用して再度解析する必要があります。
				
					Hello World の例では、
__str__ メソッドを以下の例のようになります。
				例7 __str__ メソッドの定義
					キックスタートサポートモジュールに必要なメソッドすべて (
handle_header、handle_line、setup、execute、および __str__) が含まれると、有効な Anaconda アドオンになります。次のセクションに進み、グラフィカルおよびテキストベースのユーザーインターフェイスのサポートを追加するか、次のセクションに進むことができます。「Anaconda アドオンのデプロイおよびテスト」アドオンをテストします。