Houdini 17.0 ヘルプの使い方

セントラルヘルプサーバーの実行

On this page

概要

スタジオにセントラルヘルプサーバーをセットアップすれば、マシン毎に各Houdiniが各自のヘルプサーバーを実行させることなく、 複数のHoudiniユーザーにヘルプを提供することができるようになります。 これは、ユーザー間のサイト固有のドキュメントを共有するのに役立ちます。

wikiマークアップリファレンス, アセットのドキュメントを作成する方法, サンプルファイルを作成する方法も参照してください。

Warning

デフォルトのサーバーセットアップではhouパッケージをインポートします。つまり、Houdini外でヘルプサーバーを実行させるとバッチライセンスが使用されます。 この回避策に関しては、以下のバッチライセンスを使用しない方法を参照してください。

コマンドライン

  1. Houdiniシェルを開きます。

    Windows

    スタート ▸ すべてのプログラム ▸ Side Effects Software ▸ Houdini X.X.XXX ▸ Utilities ▸ Command line tools をクリックします。

    Mac

    ファインダーから Applications ▸ Houdini ▸ HoudiniX.X.X ▸ Utilities ▸ Houdini Terminal を開きます。

    Linux

    bashシェルで、cdでHoudiniインストールディレクトリに移動し、source houdini_setupをタイプします。

  2. Houdiniシェルで、以下をタイプします:

    hhelp serve --bgindex=true
    

    これは、バックグラウンドのインデックス化を有効にしてヘルプサーバーを立ち上げます。

  3. ブラウザを開いて、以下のURLにアクセスします。

    http://localhost:8080/
    

hhelp serve

--host=0.0.0.0

サーバーのIPアドレス。

  • コンピューターに複数のネットワークコントローラーがあれば、ヘルプサーバーにListenさせたいアドレスを指定することができます。

  • ヘルプサーバーを他のコンピュータから利用可能にするには、0.0.0.0(デフォルト)を使用します。

  • ヘルプサーバーをあなたのコンピュータでのみ利用可能にするには、localhostまたは127.0.0.1を使用します。

--port=8080

サーバーのポート番号。デフォルトは8080です。

--debug

情報のデバッグを有効にして、サーバーを実行します。

--bgindex

サーバーが実行中にバックグラウンドで変更のあったドキュメントのインデックスを再生成します。

--config=path

(オプション) コンフィグオプションを読み込むファイル。

--logfile=path

(オプション) サーバーログの書き出し先のファイル。

--loglevel=DEBUG|INFO|WARNING|ERROR

(オプション) この重要度レベルでメッセージをログにします。

hhelp index

このコマンドは、手動で検索インデックスを更新します(--bgindexオプションでサーバーを実行していない場合)。デフォルトでは、このコマンドは--cleanオプションを指定しない限り、変更のあったファイルのみを更新します。

--clean

ドキュメントの変更の有無に関わらず、ゼロからすべてのドキュメントのインデックスを再生成します。

--usages

サンプルファイルで使用されているノードに関する情報を生成します。

--config=path

(オプション) コンフィグオプションを読み込むファイル。

--logfile=path

(オプション) サーバーログの書き出し先のファイル。

--loglevel=DEBUG|INFO|WARNING|ERROR

(オプション) この重要度レベルでメッセージをログにします。

Pythonによる実行

PYTHONPATHにHoudiniのPythonライブラリがあれば、アプリケーションサーバー(例えば、ModWSGIを使ったApache)で使用するためのHoudini WSGIアプリケーションを取得することができます:

from houdinihelp.server import get_houdini_app

wsgi_app = get_houdini_app(
    config_file=None,       # コンフィグファイルまでの文字列パス
    use_houdini_path=True,  # 以下を参照してください
    log_file=None,          # Noneでない場合は、デフォルトのログファイルパスが上書きされます
    log_level=None          # Noneでない場合は、デフォルトのログレベルが上書きされます
)

代わりにビルトインのサーバーを実行させるには:

from houdinihelp.server import start_server

start_server(
    host="0.0.0.0",         # Listenするネットワークインターフェース
    port=48626,             # Listenするポート
    debug=False,            # サーバーをデバッグモードで実行させるかどうか
    bgindex=None ,          # バックグラウンドインデックスを行なうかどうか
    config_file=None,       # コンフィグファイルまでの文字列パス
    use_houdini_path=True,  # 以下を参照してください
)
  • config_fileNoneuse_houdini_pathTrueの場合には、そのコードはhouを使用して、Houdiniパスからconfig/Help/bookish.cfgコンフィグファイルを検索します(以下のコンフィグを参照してください)。これはhouがまだインポートされていない時にバッチライセンスを使用します。その引数にコンフィグファイルを指定していれば、このことについて心配する必要はありません。

  • bgindexキーワード引数には、True, False, Noneを指定することができます。Noneは、設定ファイルの値を使用し、TrueまたはFalseは、その設定を上書きするかどうかです。

あなたのサーバーからHoudiniドキュメントを配信する方法

あなたのサーバー上でWSGIアプリケーションを配信することができます。例えば、ApacheのModWSGIや、アプリケーションを実行するuWSGIのインスタンスをリバースプロキシにすることで、アプリケーションを配信することができます。

コンフィグ

  • hhelpコマンドラインユーティリティの--configオプションを使用したり、またはコードにhoudinihelp.server.get_houdini_apphoudinihelp.server.start_serverconfig_fileパラメータを使用することで、コンフィグファイルを指定することができます。

  • コンフィグファイルを指定せず、且つHOUDINIPATH/config/Help/bookish.cfgが存在する場合、サーバーは、(use_houdini_path=Falseを渡さない限り)それを読み込みます。

  • ヘルプサーバーはFlaskをベースにしており、Flaskのコンフィグファイルは実際にはPythonです。

例えば、$HOME/myfilesにあるファイルのディレクトリを追加するには、コンフィグファイルに以下のコードを配置します:

EXTRA_DOCUMENTS = ["$HOME/myfiles/"]

いくつか役立つコンフィグキーは、以下を参照してください。

役立つコンフィグキー

DOCUMENTS = [...]

デフォルトのドキュメントソースのリストには、Houdiniパスのhelpディレクトリと、アセットとシェルフツールの内部からヘルプを読むことができる特別なソースが含まれています。 このリストをあなたのディレクトリ のみ を提供したディレクトリパスのリストに置換することができます。例:

DOCUMENTS = ["/my/dir"]

コンフィグファイル内のこのリストを置換ではなく拡張させることができますが、その場合はEXTRA_DOCUMENTSを使用した方が簡単です(以下参照)。

EXTRA_DOCUMENTS = []

DOCUMENTSのデフォルトのリストに追加する"余分な"ドキュメントソースのリスト。これはデフォルトのリストだけでなく、さらにディレクトリを追加したい時に役立ちます。

(デフォルトのリストにはHOUDINIPATH/helpが含まれているので、Houdiniパスを拡張することで同じ事ができます。)

EXTRA_DOCUMENTS = ["/my/dir"]

ENABLE_BACKGROUND_INDEXING = False

変更のあった内容のインデックスを再生成するためのスレッドをバックグラウンドで実行させるかどうか。これは、コマンドラインの--bgindexオプションで上書きされます。

BACKGROUND_INDEXING_INTERVAL = 60

バックグラウンドインデックスが有効な時に、インデックスを再生成する間隔の秒数。

EXTRA_SHORTCUTS = []

検索ショートカットを参照してください。

CACHE_DIR = "$HOUDINI_USER_PREF_DIR/config/Help"

Wikiソースファイルから生成された.jsonファイルをサーバーがキャッシュ化する場所。

INDEX_DIR = "$HFS/houdini/config/Help/index"

検索インデックスを含んだディレクトリ。

バッチライセンスを使用しないようにセントラルサーバーを設定する方法

デフォルトのサーバーは、次の特定の機能のためにhouを使用します:

  • Houdiniパスのコンフィグファイルを検索します。

  • HOUDINIPATH/help, ノード, シェルフツールを、ドキュメントソースのリストに追加します。

  • サンプルファイルをインデックス化します。

サーバーがバッチライセンスを使用しないようにするには、次のことをする必要があります:

  • サーバー用のコンフィグファイルを作成します。

  • そのコンフィグファイルで、ドキュメントソースのデフォルトのリストを置換し、デフォルトのPAGES_CLASSコンフィグキーを変更します。

  • 通常のPythonを使ってサーバーを実行するためのスクリプトを作成します(hhelpまたはhythonを使ってサーバーを実行すると、自動的にhouがインポートされてライセンスが使用されます)。

このコンフィグファイルを使用することで、houに依存した機能を無効にすることができます:

  • ノードの Help タブとシェルフツールからヘルプを読むことができなくなります。

  • opdef:へのヘルプのリンクと参照が動作しなくなります。

  • サンプルファイルのインデックス化が動作しなくなります。

ライセンスを使用しないようにヘルプサーバーを実行する方法

以下の手順は、ヘルプサーバーを実行したいコンピュータ上にHoudiniがインストールされていることを想定しています。 技術的にはHoudiniから必要なファイルすべてをコピーすることができますが、このドキュメントの範囲を越えておりサポートしていません。 インストーラ(無料のAprrenticeでも可)を使った方が簡単で便利です。

  1. ($HFSなどの環境変数を利用可能にしたいので)Houdiniシェルからサーバーを実行します。

    Houdiniに同梱されているユーティリティからシェルを実行することで、Houdiniシェル環境が得られます。

    Mac

    Applications/Houdini/Current/Utilities/Houdini Terminal X.X.X

    Windows

    スタートメニュー > Side Effects Software > Command Line Tools X.X.X

    Linux

    cdでHoudiniインストールディレクトリに移動し、source ./houdini_setupを実行します。

    または、あなたの環境で$HFS変数を設定してください。

  2. 実行には以下のスクリプトを使用します。(hython ではなく ) 通常のPython 2.7 を使ってスクリプトを実行できることを忘れないでください。

    import argparse
    import sys
    from os.path import expandvars
    
    # HoudiniライブラリをPythonパスに追加します。
    sys.path.append(expandvars("$HFS/houdini/python2.7libs"))
    
    # HoudiniのサードパーティPythonライブラリを追加します。
    # 残念なことに、このパスはプラットフォーム依存です。
    if sys.platform in ("linux", "linux2"):
       sys.path.append(expandvars("$HFS/python/lib/python2.7/site-packages-forced"))
    elif sys.platform == "darwin":
        sys.path.append(
            expandvars(
                "$HFS/Frameworks/Python.framework/Versions/Current/lib/python2.7/site-packages-forced"
            )
        )
    elif sys.platform in ("win32", "win64"):
        sys.path.append(expandvars("$HFS/python27/lib/site-packages-forced"))
    
    from houdinihelp.hconfig import HoudiniAppConfig
    from houdinihelp.server import get_houdini_app
    
    
    class MyConfig(HoudiniAppConfig):
        # 供給させたいディレクトリ
        DOCUMENTS = [
            # $HFS/houdini/help内の"ばらばらな"(ZIP圧縮されていない)ファイル
            expandvars("$HFS/houdini/help"),
            {
                # これは、$HFS/houdini/help内の.zipファイルから
                # ドキュメントを読み込めるようにします。
                "type": "object",
                "classname": "bookish.stores.ZipTree",
                "args": {
                    "dirpath": expandvars("$HFS/houdini/help"),
                }
            },
            # これは、ユーザープリファレンスのhelpディレクトリ下にファイルを追加します。
            expandvars("$HOUDINI_USER_PREF_DIR/help"),
            # サーバーに追加したい他のディレクトリ...
            "/my/dir",
        ]
    
        # ユーザープリファレンスディレクトリ内にキャッシュを格納します。
        CACHE_DIR = expandvars("$HOUDINI_USER_PREF_DIR/config/Help")
    
        # 使用するフルテキストインデックス
        INDEX_DIR = expandvars("$HFS/houdini/config/Help/index")
    
        # houを使用しないページマネージャを指定します。
        PAGES_CLASS = "houdinihelp.hpages.HoudiniPagesWithoutHou"
    
    
    if __name__ == "__main__":
        parser = argparse.ArgumentParser(description="Starts bookish help server")
        parser.add_argument("--host", metavar="HOSTNAME", default="0.0.0.0",
                            help="IP address to serve on.")
        parser.add_argument("--port", metavar="NUM", type=int, default=8888,
                            help="Port number to serve on.")
        parser.add_argument("--config", metavar="FILE", default=None,
                            help="Configuration file to override defaults.")
        parser.add_argument("--log", metavar="FILE", default=None,
                            help="File to output the log to.")
        parser.add_argument("--loglevel", default="INFO",
                            help="The verbosity of the log: DEBUG, INFO, WARNING, or ERROR.")
        args = parser.parse_args()
    
        app = get_houdini_app(
            use_houdini_path=False,
            config_obj=MyConfig,
            config_file=args.config,
            logfile=args.log,
            loglevel=args.loglevel,
            debug=False,
        )
    
        app.run(host=args.host, port=args.port, threaded=True)
    

    (Pythonがhoudinihelpをインポートできない旨のエラーが出た場合、Houdiniのライブラリのパスが正しいかチェックしてください。flaskをインポートできない旨のエラーが出た場合、サードパーティのライブラリのパスが正しいかチェックしてください。)

  3. スクリプトを実行後、ブラウザアプリケーション(例えば、ChromeやSafari)を開いて、http://localhost:8888/にアクセスしてみてください。

  4. 以下の単純なサンプルスクリプトは、コマンドライン上でホスト名とポート番号を設定することができますが、ディレクトリや他のオプションはハードコーディングで指定します。

    必要に応じて、コマンドラインオプションからもっと多くのオプション(例えば、ホスト名やポート番号)を取得できるようにスクリプトを編集することができます(Pythonのargparseモジュールのドキュメントを参照してください)。

    コンフィグファイルを使うことでオプションを上書きすることもできます。例えば、コンフィグファイルの引数を使って上記のスクリプトを実行することができます:

    python runserver.py --config /Users/matt/helpserver.cfg
    

    そして、そのコンフィグファイルの中で、オプションを上書きすることができます:

    EXTRA_DOCUMENTS = ["/path/to/my/help_dir/"]
    

ヘルプの使い方

基本

ノードのドキュメント化

セントラルヘルプサーバーの起動