LCLの開発者ブログ2020-02-06YouTrackのIssueを素早くターミナルに表示する効率化1月に入社しましたバックエンドエンジニアの星野です。バックエンドの中でもインフラ周りを中心に取り組んでいきますのでその中で得られた知見をブログに書いていきたいです。LCLではタスク管理にYouTrackを利用しているというのはブログにも書かれております。techblog.lclco.com入社からバックエンドチームへのオンボーディングが進行する中でアサインされているIssueが徐々に増えてきました。Codeを行ったり来たりするのですが現在進行中のIssueの内容を確認するためには一度ブラウザを開かないといけません。一度ブラウザを開くとSlackの未読などが眼に留まり気が散ってしまいます。そこで、ターミナル上でIssueの確認ができる環境を作成しました。youtrack-cliまず初めにYouTrackがAPIでIssueの一覧や詳細の情報を提供しているかを調査しました。調査過程で有志によって作成されたCLIを見つけたので試してみたところレスポンスを見やすく整形して出力してくれて、さらにjsonのアウトプットにも対応していたのでこちらを採用することにしました。github.comアサインされているIssue一覧を表示youtrack-cliの使い方はリポジトリのREADMEにあるのでここでは割愛します。使うコマンドは完了していないアサインされているIssue一覧の検索です。desc"zshのエイリアスとして登録してすぐに確認できるようにしています。先ほどのコマンドでアサインされているIssueが確認できました。youtrack-cliではIssueの詳細を表示したい場合は下記のコマンドを実行します。super-awesome-issue-10IssueのIDを引数に渡していますが毎回IDをコピーしてコマンドを入力するのは手間なので一覧から選択できるようにします。解説こちらが記事冒頭の画像で実行しているコマンドの全容になります。sにIDを渡しています。それでは個別に見ていきましょう。...}一連のコマンドの実行と結果をパイプでつないでzshの関数としてまとめています。macOSであれば10.15からデフォルトのshellがzshですがhomebrewなどで最新版をインストールすることを推奨します。desc"まずはyoutrack-cliを使ってアサインされているIssueの一覧をjsonで取得します。冒頭で紹介したコマンドに-rオプションをつけて出力をjsonに変更しています。@csv'jqはjsonデータを簡単に操作できるコマンドです。ここでは個別にコマンドの解説は行いませんが各Issue毎のjsonオブジェクトを1行ずつにまとめcsvとして出力しています。tablexsvはcsvデータを簡単に操作できるコマンドです。tableでカラム毎にスペースで埋めて視認性を向上しています。'1d'この後のフィルター時にヘッダー行が不要なためsedで1行目をカットしています。fzffzfはシェルで使えるインタラクティブフィルターです。同様の機能をもつフィルターとしてpecoも有名です。anyframeが内部的に呼び出しているのでここではコマンドを直接実行していません。github.comanyframe-selector-autoanyframeはfzfでよく使うコマンドをラップしたzshプラグインです。github.com使い方は作者による解説がわかりやすいです。qiita.comanyframe-selector-autoにIssueの一覧を渡すとfzfが立ち上がり文字列による絞り込みやカーソルでの選択ができるようになり、決定した項目を再び標準出力に渡してくれます。$1}'awkでIssueのIDのみを抽出しています。s標準入力で受け取った文字列を引数としてコマンドを実行しています。unbufferを使い標準出力をコンソールであるかのように扱うことでこの後のlessで色をつけることができます。-qr最後はlessに渡してIssueの内容を閲覧します。駆け足な説明でしたがターミナル上でYouTrackのIssueを選択して表示できました。YouTrackに限らずAPI経由でデータを取得できれば上記の一連の流れは同じなため是非試してみてください。採用情報LCLではCLIを活用して生産性向上に励む仲間を絶賛募集中です。EC2インスタンスの停止忘れを防止するWebエンジニアの森脇です。LCLでは、普段使わないテストサーバ...2018-07-05地味に面倒なブランチ作成〜WIPプルリクエストまでをコマンド1つで行うフロントエンドエンジニアの岡田です。やる気がでない時の最良...2018-06-29SwiftFormatで機械的にコーディングルールを統一するモバイルアプリエンジニアの山下です。(1)執筆者リストid:oss-rdbmsid:kabrgid:hoshtid:ktx_kuid:yamshtaid:kavis777id:ytkr0813id:shymstid:kasei_sanid:lcl-engineer月別アーカイブ検索はてなブログをはじめよう!lcl-engineerさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。