$30 off During Our Annual Pro Sale. View Details »

Vim/NeovimでGitHubを使う

skanehira
December 28, 2020

 Vim/NeovimでGitHubを使う

skanehira

December 28, 2020
Tweet

More Decks by skanehira

Other Decks in Programming

Transcript

  1. Vim/NeovimでGitHubを使う
    by ゴリラ

    View Slide

  2. 自己紹介
    ● ゴリラ
    ● Vimが好きになる本の著者
    ● 趣味
    ○ OSS作る
    ○ 漫画/アニメ/音楽/カラオケ
    ● Vimで生活したい病
    ● 仕事ではPM、気持ちはPG

    View Slide

  3. 今回のテーマ
    Vim上でGitHubを操作するgh.vimを作った話

    View Slide

  4. gh.vimの機能一覧
    ● issueの一覧、編集、作成、Open/Close、ブラウザで開く
    ● issueコメントの一覧、編集、作成、ブラウザで開く
    ● PR一覧、差分表示、ブラウザで開く
    ● プロジェクトの一覧、カード移動、ブラウザで開く
    ● GitHub Actionsの結果とログ閲覧、ブラウザで開く
    ● ファイルツリー、ファイル閲覧、ブラウザで開く
    ● リポジトリ一覧、README閲覧、ブラウザで開く
    ● Gist一覧、ファイル閲覧

    View Slide

  5. ● Vim/Neovim対応
    Vim: 8.2 ~
    Neovim: 0.5.0 ~
    ● バッファのみ提供
    例)特定のリポジトリのCloseされたissue一覧をみたいとき
    :e gh://{owner}/{repo}/issues?state=closed
    ● 導入が簡単
    curl のみ使用している
    gh.vimの特徴

    View Slide

  6. issue list

    View Slide

  7. issue list(プレビューあり)
    プレビュー

    View Slide

  8. issue listの項目
    issue number
    issue state
    issue author
    issue title

    View Slide

  9. issue edit
    :w でバッファの内
    容で更新する
    translate.vimを
    使うと翻訳しながら
    issueを読める

    View Slide

  10. issue create
    テンプレートがあると選択可能
    Enterでテンプレートを展開
    issueのタイトルを入力 :w でバッファの内容で
    issueを作成

    View Slide

  11. issue comment list
    :w でバッファの内容で
    コメント更新
    コメント一覧

    View Slide

  12. PR list
    PRの差分
    PR 一覧

    View Slide

  13. issue listの項目
    PR number
    PR state
    PR author
    PR title

    View Slide

  14. Project list
    Project一覧
    Project カード一覧
    カラム間の
    カード移動が可能

    View Slide

  15. GitHub Actions
    GitHub Actions Jobs
    Job log
    Vimだけで
    GitHub Actions
    の結果を確認

    View Slide

  16. Repository file tree
    Repository file tree
    file contents

    View Slide

  17. Gist list
    Gist file preview
    Gist list

    View Slide

  18. Gist edit
    開き方を選択
    :w でバッファ内容
    で更新

    View Slide

  19. ● BufReadCmd を使って gh://* というバッファが開かれたら適宜に処理を行う
    仕組み

    View Slide

  20. ● API通信は vatal.vim と vital-Whisky の Promise を使って非同期で処理
    ● curlを使って、コマンドを組み立てていく
    仕組み

    View Slide

  21. ● 一部のAPIはGraphQLを使っている
    将来的にクエリー系は全般GraphQLに移行予定
    仕組み

    View Slide

  22. ● 詳細はこちらの記事をどうぞ
    https://qiita.com/gorilla0513/items/480d454ca74868eb07bd
    仕組み

    View Slide

  23. ● キャッシュ機構がないので、データ通信量が多い
    例)issue 編集バッファでは開くたびに通信している
    ● データ取得系はほぼRESTを使っているので、不要なデータが多い
    例)PR 一覧では number/state/author/title しか使っていないが、他にもいろいろ
    なデータが返ってくる
    ● テストがないので、諸々ツライ
    例)デグレがしょっちゅう発生する
    ● エラーが握りつぶされることがある
    ● 開発の人手不足
    例)実装したい機能が多いが、コアで実装やっているのは自分だけ
    課題

    View Slide

  24. ● 一緒に開発してくれる人募集中
    ちょっと試しにやってみたい人はissueを適当にピックアップしてOK
    ● 直近はv1.0.0リリースに向けて
    せっせと作っている
    ● リリース後にテストを書く
    (流石にきつくなってきた)
    ● 認知度を上げる
    (宣伝方法検討中)
    今後の展望
    issue一覧

    View Slide