NBM2

natural born minority

「MindmeisterからTrelloのカードを作成するツール」をScalaで作ってみた

自身は「何かどうやっていいかわからないこと」や「ゴールへの道筋がわからないもの」に当たる時、「マインドマップツール」を使用します。

この時の使い方は「タスク分解機」であり「放射状アウトラインエディタ」だったりします。(マインドマップ書いてませんw)

最近は「複数人で同時編集出来る」という理由で「Mindmeister」というWebサービスを使うことが多いのです。

で、そのタスク分解したものは「Trello」という、 タスクボードのコレまたWebサービスに転記して整理・Todo消化とかしていくわけです。

がっ!当たり前ながらその転記がめんどい…ので!

「Mindmeisterの末端アーティクル → Trelloのカード へと転送」

するバッチを作りました。

使い方

前提

  • Scala/conscriptが動くOS環境であること(筆者はUbuntu Linux)
  • Mindmeister, Trelloにはアカウントを持っていること

準備

ツールを入れるため、その前にやっておくこととして…

が必要です。

ここ(本家README)を参考に、conscriptのインストールを行って下さい

自身はUbuntuLinuxですので

curl https://raw.githubusercontent.com/n8han/conscript/master/setup.sh | sh

でサクッと「csコマンド打てる状態」になりました。

Webサービス側での用意

ちょーっとこっちが面倒臭いのですが、Webサービス側からの準備として

  1. Mindmeisterから「JSON入りアーカイブ」のダウンロードと解凍
  2. Trelloからの情報取得
    • 「API Key」の取得
    • 「API Token」の取得
    • 「タスクボードのID」の取得

という作業が必要です。(これはプログラムではなんともならんかった…)

Mindmeisterから「JSON入りアーカイブ」のダウンロードと解凍

Mindmeisterで「タスクにしたいマインドマップ」を開いて下さい。

明日やること

画面右下の「下向き矢印マーク」をクリックすると、エクスポート先選択のダイアログが現れます。

エクスポート先選択

最初から選択されている「Mindmeisterフォーマット」をそのままに、 「エクスポート」をクリックして下さい。

[マインドマップの名前].mind というファイル名のZipファイルが落ちてきますので、 解凍して map.json というファイルを取り出して置いて下さい。

MindmeisterのエクスポートZipファイル

Trelloからの情報取得

こちらのページと同じことをするのですが、ちょいちょい説明していきます。

「API Key」の取得

Trelloにログインした状態で、

https://trello.com/1/appKey/generate

にアクセスして下さい。

画面、上側n表示されている「Key:」の文字列がAPI Keyです。記録しておいてください。

「API Token」の取得

今度は、取得した「API Key」を使って「Cardの投稿が出来る権限」を持った「API Token」を取得します。

以下のURLを組み立てて、アクセスして下さい。

https://trello.com/1/authorize?key=[上で取得したKey]&name=&expiration=never&response_type=token&scope=read,write

確認画面が出るので「Allow」をクリックして下さい。

クリックすると「シンプルな白地テキスト」以下のような感じの表示がなされます。

You have granted access to your Trello information.
To complete the process, please give this token:
  XXXXXXXXXXXXXXXXXXXXXXXX

この「XXX…」の部分が「API Token」です。記録しておいて下さい。

タスクボードのID

タスクボードへは「タスクボード名」でも「日頃見てるURL」でもなく、内部で使用している 「タスクボードのID」とでも呼ぶようなものでタスクボードを特定します。

そのため、対象と成る「タスクボードのID」を取得しましょう。

https://trello.com/1/members/[username]/boards?key=[Key]&token=[Token]&fields=name

を指定することで「自身が見られるタスクボード名とIDの一覧」が取得できます。

…が、ログイン中ならkeyとtokenはケズれるので…

https://trello.com/1/members/[username]/boards?fields=name

で取得できます。指定すると…

[
    {"name": "テスト","id": "XXXXXXXXX..."},
    {"name": "日常","id": "XXXXXXXXX..."}
]

のようなJSONが帰ってきます。(実際は改行無し)

“name”で「今回カードを作りたいタスクボード」を探し、”id”を記録しておいて下さい。

ツールインストール

ここで、やっと「準備」で用意した「conscript(csコマンド)」を使います。

コンソールから、以下を実行して下さい。

cs kazuhito-m/mindmeister2trello-importer

最後に

Conscripted kazuhito-m/mindmeister2trello-importer to ...

とか出ていればインストール完了です。

コマンド実行

上記で収集した情報をすべて引数にのせて、インポートを実行します。

以下をコンソールから実行して下さい。

m2ti [API Key] [token] [タスクボードのIDの] [タスクリスト名] map.json

「タスクリスト名」というのは「タスクボード中のリストの表示名」です。(よく”Doing”,”Done”とかにしてるアレです)

今回の情報を元にすると…

m2ti XXXX... XXXX... XXXX... 'To Do' map.json

という感じになりました。(割と長いコマンドになりますね)


実行すると目的のタスクボード、タスクリストに”-“(ハイフン)区切りで要素名をつなげたカードが出来上がります。

こんな感じ

Trelloを表示しながらコマンドを実行すると「カードがみるみる足されていく」ので面白いですね。

注意

Trelloのタスクカードは「同じ名前(タイトル)でも別物」と捉えます。

したがって「2回実行すると同じカードが2度足される」こととなり単純増殖します…がTrelloは「極力カードを削除させない(ものすごーくやりにくい場所にDeleteがある)」という思想でできていますので、量を扱う場合はご注意下さい。

実装面

こちらのリポジトリ にソースがあります。

基本構成は、

昨年末クローラ作った時の構成 です。(トレンド考えると少し古い技術でしょうか)

実現機能のために、

を追加しています。

ライブラリ選定

trello4jとtrello-java-wrapperを迷いましたが…

  • maven-centralに入ってる事(sbtにリポジトリ追加しなくていい)
  • ぱっと見、Usageが簡単そう感をアピってたから

trello-java-wrapperにしました。

…その割には「spring-webをDependencyに足さないと動かない」など 要らないものも持ってきてしまいましたがw

小並感

いやーScalaはなというか…「加減考えんといかんくらいリファクタングが出来る」のが凄いですね。

数えて見ると…「賞味のロジックが1ファイル20行満たない」「でも頃合い」というのは凄い。

いや、「ScalaのScalaたるトコロ」を全く知らないし、使い方もJavaなんですけど。


ツールとして、個人的には「なかなか便利になった」感じがあるので、複数人での「ブレストからのタスク出し」に活用していきたいと思います。

そして「INとOUTがはっきりしたツール」なので、Webサービス化もあるかも?…とか構想が広がりますね。

ま、気が向けばやってきますね。

参考

以下を参考にさせていただきました。ありがとうございます。

blog comments powered by Disqus