2020-05-31
5/31
DocsyでGoogleカスタム検索エンジンを使う
そろそろLunr.jsに限界を感じてきたので、導入する。
具体的には「k8s」や「k9s」などが検索でヒットしない。
やり方は公式ドキュメントのNavigation and Search | Docsyの通り。
- https://cse.google.com/cse/all にアクセスし、新しい検索エンジンを追加。
- 対象は「progrhy.me/tech-notes/*」
- オプションの設定
- 「デザイン > レイアウト」で「結果のみ」を選ぶ
- 「検索機能 > 詳細設定 > ウェブ検索の設定」で、「リンクターゲット」を「_parent」にする。これで現在のタブで(新しいタブを開かずに)検索結果に遷移できる
- config.toml 編集
params.gcs_engine_id
に作成した検索エンジンのIDを設定params.offlineSearch = false
として、Lunr.jsを無効化
ローカルではLunr.jsを使う
カスタム検索エンジンを使うと当然 https://progrhy.me/tech-notes/ に遷移してしまうので、ローカル作業時はLunr.jsの方が都合が良い。
Hugoで、オプションによって設定を切替える方法について調べてHugo#Configurationに記した。
初め、環境変数で以下を指定してやろうとした:
export HUGO_PARAMS_GCS_ENGINE_ID=
export HUGO_PARAMS_OFFLINESEARCH=true
試したところ、 offlineSearch = true
は設定できたようだが、 gcs_engine_id
の指定を無効化することはできなかった。
config.tomlではコメントアウトしておいて、公開サイトビルド時に環境変数で gcs_engine_id
を設定するやり方も考えられるが、バグったときに面倒なので、CIの設定はなるべく変えたくない。
同じページ(Hugoのドキュメント)を見ていたところ、 hugo --config a.toml,b.toml
のように設定ファイルを複数指定できることに気がついたので、下のような config-local.toml
を用意した:
[params]
gcs_engine_id = ""
offlineSearch = true
…で、ローカルでは hugo server --config config.toml,config-local.toml
と指定してサーバを起動するようにしたら、上手く行った。
ちなみに、こんなの毎回打ってられないので、少し前からラッパースクリプトを使っていて、 HUGO_CONFIG=config.toml,config-local.toml
とシェル変数を設定ファイルに書いて読み込ませて対応している。
--config
オプションを使わなくてもよかった
Hugoには所定のディレクトリに設定ファイルを配置すると、コンテキストに基づいて設定ファイルを読み込んでマージしてくれる機能があると知った。
やり方はHugo#Configuration-ディレクトリ構成に記した。
hugo server
ではデフォルトで development
で起動するので、 config-local.toml
を config/development/config.toml
に移動することで、 --config
オプション無しでも読み込んでくれるようになった。
新しいGoogle Search ConsoleでURLの再クロールをGoogleにリクエスト
https://search.google.com/search-console
最近全然使ってなかったから、いつ変わったのかわからないけど、Search ConsoleがスタイリッシュなUIに生まれ変わっていた。
URLの再クロールの依頼方法がわからなかったが、ググったらヘルプページが見つかった:
そして見つけた時には既にサイトマップを送信済みだった。
(追記)
なぜかページの古い状態がキャッシュ(?)に残ってるっぽくて、アーカイブ済みのメモページにヒットすると404になったりすることがしばし。
GolangのCLIパッケージを改めて探した
たぶん3〜4年ぶりぐらいかな。
高機能なものは相変わらず下の2つが強そう:
サブコマンドやフラグに対応しており、だいたいできないことはなさそう。
jessevdk/go-flags
もう少し軽量な感じのだと以前は https://github.com/jessevdk/go-flags というのが人気だったのだが、2年前で更新が止まっている。
go.mod がないのでGo Modulesにも対応してないみたい。
いま使うのはちょっとイマイチかも?
spf13/pflag
その代わりになるかわからないが、 https://github.com/spf13/pflag というのを見つけた。
これも標準パッケージの flag の強化版で、ショートオプションを簡単に加えられたり、GNUスタイルの --help
のようなロングオプションを追加できる。
flagの拡張版のようで、サブコマンドにも対応できるようだ。
参考:
google/subcommands
サブコマンドで行くと https://github.com/google/subcommands というのも見つけた。
これも依存がなくてシンプルのようだが、README読んだだけだと、使い方がイマイチわからん。
検索したり、 pkg.go.dev で使っているコードを探して見たりした。
- みんGO を読んでec2インスンスリストをタグ検索するコマンドラインツールを作ってみた - 平日インプット週末アウトプットぶろぐ
- https://chromium.googlesource.com/infra/infra/+/1adef5a2cd6b/go/src/infra/cros/cmd/lucifer/admintaskcmd.go
フラグにも対応しており、いい感じにヘルプが生成できたりと、シンプルだけど必要十分な機能がまとまってるっぽい雰囲気を感じる。
posener/cmd
posener/cmd: The standard library flag package with its missing features
これはAwesome Goから気になって開いて見た。
17 starsしかないが、google/subcommands相当のことはできそうで、google/subcommandsよりドキュメントがわかりやすい。