仕事では主に検索周りを担当しています。スライスにパースする方法を紹介します。文字列の部分一致でインタラクティブに絞り込みながら検索することです。ファイル名などをガッとあいまい検索できます。Chromeのブックマークで管理しています。スマホのChromeアプリとも同期できるので個人的には重宝しています。作ったツールはこちら。Chromeのブックマークをfuzzy-findingするツールです。github.com下記のようにChromeのブックマークをfuzzy-findingできます。ディレクトリ構造も含めてfuzzy-findingできます。bmfzfの利用例bmfzfは下記のようにopenコマンドで選択したブックマークをChromeですぐに開けるようにしておくと便利です。することで他のツールと合わせて使いやすくなります。「UNIXという考え方」という本は僕がツールを作る際の指針となっている本なのでまだ読んだことがない人は是非読んでみてください。searchできますが、ブックマーク階層を無視して、ブックマーク名だけで検索がかかります。私のようにブックマークをフォルダで階層的に管理している場合はfolderも含めてfuzzy-findingができると便利です。fuzzy-findingGoでfuzzy-findingツールを作るにはktr0731/go-fuzzyfinderパッケージを使うのがオススメです。下記のようにfuzzy-findingしたい対象をスライスとして用意すればすぐに実装ができます。bs[id])}fuzzyfinder.WithPreviewWindowはOptionであり、fuzzy-finding中にwindowを表示できます。ここで重要なのはfuzzyfinder.Findメソッドはスライスで受ける必要があることです。ゆえにfuzzy-finding対象がネスト構造だとそれを平らにする必要があります。複数type無限ネストJSONのパースfuzzy-findingは紹介したktr0731/go-fuzzyfinderで簡単に実装できるので、後はChromeブックマークを構造体のスライスに詰めるだけです。ブックマークはJSONファイルでローカルに保存されているので、このファイルを読み込めば良さそうです。調べたところ、OSによってデフォルトのファイル位置が異なるのでこのように設定しています。}}さて、JSONファイルを見てみるとちょっと面倒な無限ネストです。}}上のようにurlタイプとfolderタイプがあり、childrenフィールドで無限ネストしてきます。ktr0731/go-fuzzyfinderはネストしている構造を平らにしてsliceとして渡す必要があります。Nodeのタイプを判断して構造体に詰めていくときは少し工夫が必要です。error}ここではブックマークのNodeを構造体で宣言します。NodeをVisitorが1つずつ見ていき、[]Bookmarkに詰めていきます。Visotorの実装bookmarkRecoderは下記のようになります。nil}後はwalkEdge関数を作り、NodeとVisitorを受けるようにすれば全てのノードを1つずつ訪問しながら[]Bookmarkに追加していきます。nil}複数タイプ無限ネストJSONの処理は一手間かかりましたが、この関数を使えばktr0731/go-fuzzyfinderに渡すsliceが手に入ります。詳しいコードはGitHubリポジトリでご確認ください。まとめfuzzy-finderツールを作るにはktr0731/go-fuzzyfinderが便利です。うまく使って実装する必要があります。Bookmarkを検索したい人は是非bmfzf使ってみてください。stateとnonce編こんにちは。デジカルチームの末永(asmsuechan)です。デジカルチームの末永(asmsuechan)です。トークンエンドポイント編こんにちは。デジカルチームの末永(asmsuechan)です。パッケージマネージャの違いを吸収する永山です。9注目記事はてなブログをはじめよう!m3techさんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。