memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

mastodon4jをEclipseで動かすまでの作業ログ

今日から授業開始です。その今日に限って雪。。。福岡で雪。。。ありえない。。。幸いなことに午後からの授業だったので慌てずに済みました。

その授業で、とある学生さんの個人プロジェクトで、raspberry piでmastdon4jなるものを動作させようとして詰まっているという話を聞きました。twitter4jみたいなもんなんだろうな。。。くらいに思っていました。mastdonはほとんど使っていないのですが。。。せっかくなので使ってみようとごにょごにょしてみました。その学生さんが参考にしたサイトは以下です。

Mastodon APIを叩くJavaライブラリを作った - Qiita

実は、同名のライブラリが他にも公開されているようで、ぐぐるとそちらがトップにきますが。。。とりあえずこっちで動かしてみました。その学生さんはWindowsだったのですが、僕はMacVMWindowsでやってあげようかと思ったのですが、遅いので。。。たぶん、以下の手順はWindowsでも参考になると思います。はい。

ちなみに、上記の記事は昨年の4月に公開されたようですが、「具体的な使い方は後日」と書かれているのに後続記事がない状況です。自分用に作られたとのことで。。。しかたがないですね。利用させていただく身としては。とりあえず、これを動作させるまでの作業ログを書きます。ビルドや使い方がそもそも正しいのかわかりませんが。。。ドキュメントがないのでなに分。

ここから本題です。

上記のプロジェクトではビルドツールとしてmavenが必要とのことで、MacにHomebewでmavenを導入します。Windowsでは別の方法になると思います。簡単です。はい。

brew install maven

次に上記で公開されている2つのプロジェクトをクローンするまでもなく「DOWNLOAD ZIP」を洗濯いや選択してダウンロードして展開しておきます。

https://github.com/hecateball/mastodon4j
GitHub - hecateball/mastodon4j-sample

続いて、Eclipseを起動します。Eclipseは最新版?のOxygenを使いました。Eclipse起動後に、[File]-[Import]を選択し、[Maven]-[Existing Maven Projects]を選択しNextをクリックします。

Root Directoryにmastodon4j-masterを選択してFinishボタンを押します。mastdon4jというプロジェクトがインポートされていると思います。

さらに下図のようにpom.xmlを右クリしてmaven installを選択します。

f:id:ke_takahashi:20180111002523p:plain

上記でビルドが成功すると、下図のようにjarファイルが生成されます。このプロジェクトはこのまま放置します。

f:id:ke_takahashi:20180111002618p:plain

また、[File]-[Import]を選択し、[Maven]-[Existing Maven Projects]を選択しNextをクリックします。

Root Directoryにmastodon4j-sample-masterを選択してFinishボタンを押します。mastodon4j-sampleというプロジェクトがインポートされていると思います。

このプロジェクトで、さきほどと同じように、pom.xmlを右クリしてmaven installを選択します。成功すると、下図のようにmastodon4j-sample-1.0.jarが生成されます。

f:id:ke_takahashi:20180111003043p:plain

続いて、user.propertiesというファイルをダブクリして開き、それぞれの=の後ろに自分のmstdnの情報をいれていきます。既に値の入っているプロパティはそのままにします(いじるなって書いていますからね)。

f:id:ke_takahashi:20180111003223p:plain

修正が終わったら、下図のようにjarファイルを実行するための実行構成を作成します(具体的には、jarファイル上で右クリックしRun Asを選択しRun Configurationを選択して、下図のように情報を入力してRunボタンを押します。(たぶん、このやり方は間違いで、pom.xmlを右クリしてmaven generate-sourcesを選択すればこれと同様のことができるはずなのですが。。。xmlを追うのが面倒だったので簡単な方法で逃げました。とにかく、どんな方法でもPropertiesGeneratorクラスを実行できればいいはずです)

f:id:ke_takahashi:20180111005107p:plain

うまく行けば、下図のようにmastdon4j.propertiesというファイルが生成されます。ちなみにリフレッシュをしないと表示されません。Eclipseの嫌なところですね。。。

f:id:ke_takahashi:20180111005135p:plain

これでやっと準備完了。

また、最初にインポートしたmastodon4jのプロジェクトに移動し、まず、さきほど生成したmastdon4j.propertiesをプロジェクト直下にコピーします。これから作成するクラスが実行時に参照できる位置にあればいいということです。

次に、テスト用に新規作成でクラスを作成します(なにも考えずデフォルトパッケージにしました)。クラスの使い方は最初よくわからなかったのですが。。。よーくみればmastodon4j-sample内のPropertiesGeneratorで使用例がそれとなくありますので、それを参考にしました。

import mastodon4j.Mastodon;
import mastodon4j.MastodonFactory;
import mastodon4j.entity.Status;

public class M {
	public static void main(String [] args) {
		Mastodon m = MastodonFactory.getInstance();
		for (Status s : m.getPublicTimeline(true)) {
			System.out.println(s.getContent());
		}
	}
}

とりあえず、普通にこのクラスを右クリして実行すればJava Applicationとして実行できるはずで、動けばパブリックタイムラインがEclipseのコンソールに表示されるはずです。はい。

ちなみに、新しくプロジェクトを作成して、mastodon4j-1.0.jarを参照すれば動作するのかと思ったのですが、依存ライブラリが他にもあるようで、簡単には動きませんでした。追うのが面倒なので、結局、mastodon4jのプロジェクトの中にテストクラスを入れてしまったということです。はい。

とりあえず、上記の学生さんを対象として、手順を細かく書きました。

長かった。。。今1時。これから風呂入らないと。。。明日は雪。しかも早朝から飯塚で非常勤。早く起きて移動しないと間に合わないんだよなぁ。。。ハゲの進行が。。。orz