Tkinter で JIRA のチケット登録作業をハックするんだー

アジャイルにまつわるエトセトラ #4

あらかー
WingArc1st Inc.
7 min readDec 8, 2019

--

これはウイングアーク Agile and DevOps Stories のAdvent Calendar 2019、第6弾(2019年12月9日)の投稿です!

アドベントカレンダーなのでツリーの写真を撮りました photo by K12A

JIRA のタスクチケット登録は手順が多い

タスク管理に JIRA を使用するのは便利なのですが、私は常日頃「タスク発生からチケット登録するまでが煩わしいわあ」と思ってました。
「あとで登録しようっと」と後回しにして、結局登録し忘れるなんてことが皆さんにも経験があるのではないでしょうか。

0: タスク発生する
1: JIRA開く
2: 作成ボタンを押す
3: プロジェクト選ぶ
4: 課題タイプ選ぶ
5: 内容書く
6: 保存ボタン押す

あらためて数えてみるとなるほど 6 ステップあるんですね。
そりゃ面倒だ。

こんな時こそ「技術で楽をしたいエンジニア」の出番ですよね。
私が所属する Automation チームのリーダー oikawa.t が簡単 JIRA チケット登録ツールを Python で既に作っていました。

おしまい。めでたしめでたし。

というには、ブログの文字数が足りないので(そういう問題?)続けます。

ツールをさらに発展させる

そのツールは、Python の Requests ライブラリを使用して、JIRA の認証情報とチケットの登録情報を積んだ Http リクエストを JIRA の 公開 API 経由で呼び出すものでした。
操作としては以下のような感じです。

0: タスク発生する
1: IDE なりコマンドプロンプトなりターミナルなり開く
2: ツール実行する
3: JIRA 登録情報入力する
4: Enter 押す

最初の6ステップから2ステップ減りました。
Enter 押下は小指一本動かす程度のカロリーしか使いませんし、わざわざステップ数に計上する必要もないと思うので実質3ステップ。
半減しました。やはり技術は正義ですね。

それでも面倒だ。

ただ、ここまで来たらエンジニアたるもの、ステップ1とステップ2をワンアクションに出来ないかと思わなきゃモグリです。

前述の oikawa.t はワンアクション化のためにランチャーツールを使用していましたが、せっかくなので私は違う方法でと思い「Tkinter」を使用して UI を作ってみることにしました。

Tkinter で GUI を作る

Tkinter は Python の標準インターフェースで、Python でお手軽に GUI を作ることができます。

tkinter をインポートして 入力画面を作ります。
その画面のコードはこれだけです。

まずは画面の元締めとなる root ウインドウを作成します。(#rootの作成)
root の箇所は画面のタイトルや大きさ、リサイズの可否などを定義しています。ラベルには任意の文字列を入力します。

その下では、event が発生した時のふるまいを書いています。
この処理のキック時に空白で登録しないように、最低限の文字入力チェックは入れています。
処理後に画面を閉じるために「root.destroy()」を呼んでいます。

#入力エリアでは、

  • テキストボックスのサイズ
  • 画面表示時テキストボックスにFocusされていること(地味に重要)
  • Enter キーで event が発生すること(def EntryValue(event):が呼ばれる)
    を定義しています。

このコードを実行すると入力画面が表示されます。

おめでとうございます!

この画面で要約(サマリー)を入力して Enter キーを押下すると、JIRA にチケットが作成されます。

<Off topic>

お気づきかと思いますがこの UI は「要約」だけの入力に特化させています。他の項目たとえば「期限」はチケット作成日の3日後、「担当者」は私になるように jira_post_k12a.py 内でコーディングしています。
「説明」などその他の情報は次の機会で更新すればいいという設計です。

加えて、最初に作成した UI には「作成ボタン」が存在していましたが、こちらもマウス操作が面倒なので Enter 押下で登録を行うようにしました。

「タスクが発生時、即座に JIRA チケット化できる状態に身を置く」

これこそが自分のアウトカムだと定義して作成しました。
コーディングをしていると楽しくなってきてついつい「説明」などの入力エリアなども実装したくなりましたがそこは我慢しました。
使っていて必要だと思えば作ればいいのです。
(こういう「何を作るか」的な話は別のブログで書く予定です)

ここまで実装できれば最後に Pyinstaller などで .py ファイルをアプリ化してタスクバーにピン留めすれば「呼び出し→入力& Enter」の2ステップで JIRA チケットの作成が可能となります。

面倒だなと思っている作業をこういった形で効率化できれば、付加価値の高い仕事に時間を充てることが出来ます。
私は Python を触り始めたばかりですが、手軽に実装が出来てライブラリも豊富なので、気軽にツール作成に取り組めそうだと思っています。

以上、今回は Agile なエンジニアには業務効率化も超大切だということで、「エンジニアらしく楽をする」という業務ハック的な営みについて書いてみました。

引き続きウイングアークのアドベントカレンダーブログをお楽しみください!

みなさんも良いクリスマスを! made by Photofunia

--

--

あらかー
WingArc1st Inc.

ウイングアーク1stでプロセス改善とソフトウェアテストの自動化に取り組んでます / Certified ScrumMaster® /Certified ScrumDeveloper®/Certified Scrum Product Owner® / JBA公認E級審判