🐜

fzfはエンジニアの強い味方だ!!

2023/08/15に公開

目次

    1. 要旨
    1. 背景, モチベーション
    1. 使い方
    • 3.1 実行環境
    • 3.2 下準備
    • 3.3 実行方法
    • 3.4 ファイル概要
    • 3.5 拡張性
    1. 所感
    1. 最後に

1. 要旨

小さな脳みそでは、全てを覚えることは無理!
とにかく、覚えたことは、溜め込むようにして、溜め込んだ知識を有効に活用しようという話です。
様々なツール(スニペットとか)があることは知っていますが、個人的にfzfを使った知識の検索が一番しっくりきました。
abstract

2. 背景, モチベーション

エンジニアの皆様は、業務している中で、こんなことを感じる時がありませんか?
"これ、以前も書いたことあるコード/叩いたことのあるコマンドなのにすぐに忘れて毎回調べているなー, めっちゃストレス!!"
私は、大学を卒業して、会社に入った直後、こうしたストレスがめちゃくちゃありました。
例えば、pythonのmatplotlibやpandasなど、大学の頃、色々調べて、コードを書いたのに、入社してすっかり忘れてしまい、以前参考にしたサイトで調べたり、
シェルスクリプトを書いてて、以前使ったことのあるコマンドのオプションが思い出せず、調べたりしていました。

こういった場面に度々でくわして、ふと思いました。
"何度も何度も調べている俺ってバカじゃね?"
インプットしたものは忘れないようにする、こうしたことを賢い人間はできるのでしょうが、私はすぐ忘れてしまう、毎度調べるのは馬鹿らしい、どうしたものかなと感じることがありました。
そこで、バカな私でも忘れないように、とにかくインプットしたものは、溜め込むようなシステムを作り、いつでも以前調べたものを引き出せるようにしよう、ということでfzfによる
知識の検索を思いつきました。

3. 使い方

3.1 実行環境

  • MacBook Air(M2, 2023)
  • macOS Ventura(13.3.1)
  • zsh v5.9

3.2 下準備

以下のパッケージをインストールしましょう。

3.3 実行方法

  1. find_commands_with_fzfをインストール
    $ git clone https://github.com/Bucchiman/find_commands_with_fzf.git
    $ cd find_commands_with_fzf
    $ tree
     >  .
     >  ├── commands
     >  │   ├── system_info:neofetch        # マシン情報を表示
     >  │   ├── git:git reset --hard HEAD   # 編集部分の取り消し
     >  │   ├── git:git reset --hard HEAD^  # 直前のコミット、編集部分を含め取り消し
     >  │   ├── git:git reset --mixed HEAD  # addの取り消し
     >  │   └── git:git reset --soft HEAD^  # 直前のコミットを取り消し(コミットのみ取り消し)
     >  └── find_commands_with_fzf.sh
  1. find_commands_with_fzf.shを読み込む
    $ pwd
     > path/to/find_commands_with_fzf
    $ source ./find_commands_with_fzf.sh
  1. ショートカットctrl+s+o./commandsディレクトリ内のコマンドを検索する。下の例はneofetchコマンドを検索している。

sample

3.4 ファイル概要

find_commands_with_fzf.shでは、commandsディレクトリ内のファイルからコマンドを検索しています。
commandsディレクトリのファイルの書式は以下のようになっています。

command_file

  1. ファイル名

    1.1 Keywords: 検索用のキーワード

    1.2 Command : コマンド

  2. ファイルのプレビュー

    2.1 Command : 1.2と同一

    2.2 Keywords: 1.1と同一

    2.3 Description: Commandの処理内容

    2.4 Reference: 参考文献

自分で決めた書式なのでもっと使い勝手のいい書式に変えても構いません。
DescriptionからCommandの使い方などを思い出せるため、使い勝手がいいです。

3.5 拡張性

find_commands_with_fzf.shを見ると分かりますが、やっていることは、特定のディレクトリから検索をすることに変わりありません。
今回は自分が過去に使ったコマンドを検索する例を挙げましたが、使い方は無限です。
下の例は、今まで書いてきたコードを検索するように同じようにfzfを使った例です。
paste_code

自分の書いたコードは資産であると考え、これからの武器にするのが良いでしょう。

4. 所感

学生の頃にボスから"明日楽をするために今日頑張ろう(コードを書こう)"ということを教わりました(当たり前のことですがこれが難しい...)。
未来のために今日の自分が頑張ることは大切です。
社会人になってこうした未来の視点に加えて、それと同じくらい大事な視点を身につける必要があると感じています。
それは、"過去の自分が今の自分を支える"ということです。
社会人になって今まで蓄えた知識を総動員し、戦うことが重要であると感じる今日この頃であります。
個人的に、fzfによって今までの知識を検索できるようになったことでエンジニアの過ごし方はガラッと変わりました
学生の頃に、fzfを有効活用すればよかったなと、思っていたりします。

5. 最後に

本記事では以下のことを紹介しました。

  • fzfによる知識の検索
  • "過去の自分が今の自分を支える"という考えで今までの知識を総動員しよう

Discussion