例として解説するわけですが、実際のコードではちょっと複雑すぎるので解説用に余分な部分を省いたコードで見ていくことにします。キャッシュ機能を有効にする解説の前に、まずはキャッシュを有効にしましょう。補完関数がキャッシュ機能を実装していても、それを使用するユーザがキャッシュを有効にしていなければ意味がありません。yes補完関数を作る予定のない方でも、キャッシュを有効にしておいた方が良いかと思います。ディレクトリ配下に、キャッシュ毎にファイルが作られます。いう名前でキャッシュファイルが作られるはずです。キャッシュファイル名は、実装者が自由に決めることができます。すればキャッシュを復元できるような形式になっています。する必要はありません補完関数の全体コードそれでは実装の説明です。全体のコードを見てみましょう。以下のコードは実際に動かして動作確認を行うこともできます。補完されるオプションやタスクは解説用のダミーになっています。それでは、コード内の番号が振ってあるところを中心に解説していきたいと思います。変数に設定するという意味になります。文字列として取得するという意味です。いう文字列を設定しています。いった用語は、ここではあまり深く考えずにそういう用語だと思って下さい。考えると分かりやすいと思います。難しそうに見えますが、一度自分で使ってみるとすぐに理解できます。以下のように自分で使用することもできます。使用することでグローバル空間を汚染することなく値を保存することができます。プラグインを作る場合などに、設定値を保持するのに利用すると良いでしょう。グローバルなシェル変数や環境変数を使用するよりスマートです。いう文字列は、キャッシュが有効かどうか判別するのに使用する関数の名前です。自分で定義した関数の名前を設定しています。この関数の中身やこれがいつ呼ばれるかなどについては、また後で説明します。タスク情報が設定されるようになっています。変数にタスク情報が設定される、ということだけ理解しておいて下さい。この関数はキャッシュを更新した場合に戻り値が真になるようになっています。変数は、キャッシュが更新されたことをユーザに知らせるため、補完を表示するときに使用します。必須ではありませんが、デバッグにも役立つのでおすすめです。関数を使用してタスクを補完します。提供している関数で、第1引数に補完グループ名を、第2引数に補完情報の入った変数の変数名を指定します。グループ名は自由につけることができます。