2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Azure Functions x Twitter4Jで乃木坂46への愛を叫ぶ

Last updated at Posted at 2021-04-27


Azure Functionsから自動的にツイートするプログラムをJavaで作りました。乃木坂ちゃんへの愛を叫ぶだけです(^^;

Twitterの予約投稿機能、Bufferのようなサービス、ノーコードツールなどを使って同じことはできますが、Javaのコードで自由に処理を書けるので、より自由度が高い気がします。

JavaにはTwitter4Jという素晴らしいツールがあるので簡単に実現できます。だいぶ昔に書いた記事でTwitter Developersの画面が古いですが、興味ある方はこちらもご参照くださいm(_ _)m

環境構築

Azure Functionsをローカル環境で実行するには.NET Coreなどのインストールが必要です。今回はMicrosoftが提供している.NET CoreのDockerイメージをベースにしました。Azure CLI、JDK、azure-functions-core-toolsなど必要なものを入れています。

FROM mcr.microsoft.com/dotnet/core/sdk:3.1

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    openjdk-11-jdk && \
    apt-get install -y maven

RUN curl -sL https://aka.ms/InstallAzureCLIDeb | bash

RUN curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
RUN mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
RUN sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs | cut -d'.' -f 1)/prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/dotnetdev.list'

RUN apt-get update
RUN apt-get install azure-functions-core-tools-3

プロジェクトの準備

Mavenのazure-functions-archetypeを使ってプロジェクトを作成したらpom.xmlにTwitter4Jの依存性を追加します。

<dependency>
	<groupId>org.twitter4j</groupId>
	<artifactId>twitter4j-core</artifactId>
	<version>4.0.7</version>
</dependency>

あとはsrc/main/resourcesの配下にtwitter4j.propertiesファイルを作成してTwitterで発行した各種キーを設定します。

debug=true
oauth.consumerKey=xxxxx
oauth.consumerSecret=xxxxx
oauth.accessToken=xxxxx
oauth.accessTokenSecret=xxxxxx

azure-functions-archetypeで作ったプロジェクトにはコードの雛形が用意されている(Function.java)ので、その中に以下のコードを追加しました。Cronのように定期実行されるFunctionです。

@FunctionName("keepAlive")
public void keepAlive(
@TimerTrigger(name = "keepAliveTrigger", schedule = "0 */30 * * * *") String timerInfo,
    ExecutionContext context
) {
    Twitter twitter = new TwitterFactory().getInstance();
    try {
        Status updateStatus = twitter.updateStatus("乃木坂46が大好きです!");
        context.getLogger().info(updateStatus.getText());
    } catch (TwitterException e) {
        e.printStackTrace();
    }
}

やったことはこれだけです。あとはビルドして

mvn clean package -DskipTests

実行します。

mvn azure-functions:run

このときハマった点は別途、以下の記事でまとめました。

ローカル環境でうまく動いたら、あとはデプロイするだけです。

mvn azure-functions:deploy

Azure Functionsといっても中身は普通のJavaプログラムなので、Twitter4Jのようなライブラリを利用できるのが嬉しいです。今回はツイートするだけの簡単なものでしたが、他のライブラリと合わせて面白いものが色々と作れそうです。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?