WSL開発環境: プログラミングに便利なOSSコマンドラインツールの紹介

2024/02/10に公開

はじめに

WSL[1] 上でのプログラミング作業の効率を上げるため、CLI[2]で役立つコマンドラインツールを紹介します。
これらのツールは、WSL上のさまざまな Linux ディストリビューションで利用可能で、brew[3]を通じて簡単にインストールできます。

ツール一覧

delta: diffをビジュアルに表示

  • パッケージ: git-delta

  • リポジトリ: https://github.com/dandavison/delta

  • ライセンス: MIT

  • 概要:
    2つのファイル間の差分を色分けしてビジュアル表示することで、変更点を直感的に把握できるようにします。

  • 使用例:
    git と連携することで、git diffgit logなどの出力でも変更点をビジュアルに表示できます。
    たとえば、この記事の場合のgit diffは以下のようになります:

  • 備考:
    deltaの設定は、gitconfigで設定します。
    上記の表示の設定は、以下のようになります:

    git/config
    [core]
      pager = delta
    
    [merge]
      conflictstyle = diff3
    
    [diff]
      colorMoved = default
    
    [pager]
      diff = delta
      log = delta
      reflog = delta
      show = delta
    
    [interactive]
      diffFilter =delta --color-only
    
    [delta]
      navigate = true
      syntax-theme = github
      line-numbers = true
      side-by-side = true
    
    

gibo: 効率的な.gitignoreファイルの生成

  • パッケージ: gibo

  • リポジトリ: https://github.com/simonwhitaker/gibo

  • ライセンス: Unlicense

  • 概要:
    GitHub の.gitignoreテンプレートをもとに、gitignoreのボイラープレートを出力します。

  • 使用例:
    gibo dump <ツール>で指定したツールの.gitignoreボイラープレートを標準出力に出力します。
    たとえば、vimが生成するバックアップファイルなどを無視したい場合は:

    gibo dump vim >>.gitignore
    

    のように、出力を.gitignoreにリダイレクトします。
    .gitignoreは、次のようになります:

    .gitignore
    ### Generated by gibo (https://github.com/simonwhitaker/gibo)
    ### https://raw.github.com/github/gitignore/4488915eec0b3a45b5c63ead28f286819c0917de/Global/Vim.gitignore
    
    # Swap
    [._]*.s[a-v][a-z]
    !*.svg  # comment out if you don't need vector files
    [._]*.sw[a-p]
    [._]s[a-rt-v][a-z]
    [._]ss[a-gi-z]
    [._]sw[a-p]
    
    # Session
    Session.vim
    Sessionx.vim
    
    # Temporary
    .netrwhist
    *~
    
    # Auto-generated tag files
    tags
    
    # Persistent undo
    [._]*.un~
    
  • 備考:
    とくになし

gh: GitHub公式CLI

  • パッケージ: gh

  • リポジトリ: https://github.com/cli/cli

  • ライセンス: MIT

  • 概要:
    GitHub の操作をCLIから行います。

  • 使用例:
    gh repo clone <リポジトリ>で、リポジトリをローカルにクローンします。

  • 備考:
    実際に操作するには、以下のようにgh auth loginで GitHub にログインする必要があります。

    $ gh auth login
    ? What account do you want to log into? GitHub.com
    ? What is your preferred protocol for Git operations on this host? HTTPS
    ? Authenticate Git with your GitHub credentials? Yes
    ? How would you like to authenticate GitHub CLI? Login with a web browser
    
    ! First copy your one-time code: xxxx-xxxx
    Press Enter to open github.com in your browser...
    ! Failed opening a web browser at https://github.com/login/device
    exec: "xdg-open,x-www-browser,www-browser,wslview": executable file not found in $PATH
    Please try entering the URL in your browser manually
    
    

    以下のようにブラウザーに認証画面が表示されるので、認証コードを入力してログインします:

    ブラウザ認証

ghq: リモートリポジトリマネージャー

  • パッケージ: ghq
  • https://github.com/x-motemen/ghq
  • ライセンス: MIT
  • 概要:
    GitHub やその他のリポジトリホスティングサイトのリモートリポジトリを、ローカルに簡単にコピーするツールです。
  • 使用例:
    ghq get <リポジトリ> - リポジトリをローカルにクローンします。
    ghq list - ローカルにクローンしたリポジトリの一覧を表示します。
  • 備考:
    pecofzfと組み合わせることで、リポジトリ間のナビゲーションを効率的に行えます。

peco: インタラクティブな検索&選択ツール

  • パッケージ: peco

  • リポジトリ: https://github.com/peco/peco

  • ライセンス: MIT

  • 概要:
    pecoは標準出力を一覧表示し、選択するツールです。

  • 使用例:
    先ほどのghqと組み合わせて、以下のように使います:

    cd $( ghq list -p|peco)
    

    以下のようにリポジトリの一覧が表示されます:

    リポジトリ選択

    ここでリポジトリを選択すると、そのリポジトリに移動します。

  • 備考
    とくになし

fzf: fuzzy finder

  • パッケージ: fzf

  • リポジトリ: https://github.com/junegunn/fzf

  • ライセンス: MIT

  • 概要:
    pecoと同じく、入力された一覧を一覧表示し選択するfuzzy finderです。
    ファジー検索もできます。

  • 使用例:
    pecoと同じように、ghqと組み合わせてリポジトリに移動できます。
    コマンド例は:

    cd $( ghq list -p|fzf --height 40%)
    

    ターミナルに次のように表示されます:

    リポジトリ選択

    リポジトリを選択すると、そのリポジトリに移動します。

  • 備考
    とくになし

ripgrep: テキスト検索ツール」

  • パッケージ: ripgrep

  • リポジトリ: https://github.com/BurntSushi/ripgrep

  • ライセンス: Unlicense & MIT

  • 概要:
    grepの代替となるツールです。Rust製で非常に動作が速いです。

  • 使用例:
    たとえば、以下のように使います:

    $ sudo apt list|rg -e 'python[^.]*pip'
    
    WARNING: apt does not have a stable CLI interface. Use with caution in scripts.
    
    python3-pip-whl/stable,stable,stable 23.0.1+dfsg-1 all
    python3-pip/stable,stable,stable 23.0.1+dfsg-1 alld64
    
    

    上記の例は、aptパッケージで提供されているpipパッケージの一覧を出力しています。

  • 備考:
    とくになし

おわりに

この記事で紹介した OSS ツールを活用して、開発作業が効率化できます。
さらに、OSS の利用を共有することで、技術コミュニティ全体の発展に貢献できます。

この記事のように、自分が使っている OSS ツールを紹介しましょう。
そのときに、自分の場合の設定や使い方などのなどのちょっとした TIPS を付け加えれば、自分ならではのオリジナルコンテンツとなります。

使用した OSS にはスターをつけ、可能ならフィードバックを送り、作者を支援しましょう。
それでは、Happy Hacking!

脚注
  1. WSL (Windows Subsystem for Linux): Windows上に Linux 実行環境を実現するサブシステム ↩︎

  2. CLI (コマンドラインインタフェース): コマンドラインにコマンドを打ち込むことで、PC を操作するインタフェース ↩︎

  3. brew: 主にmacOSで使われるパッケージマネージャー、Linux にも対応している ↩︎

GitHubで編集を提案

Discussion