凛「みんなーっ!ただいまにゃーっ!」
海未「希、どうしたのですか?なにやら急に」
希「唐突にネタが降ってきたんで、ちょっとね」
希「なんか簡単なものでもElixirで作れたら見せ合っても面白いかなと思ってな」
海未「ああ、なるほど。これまでは文法解説でしたからね」
希「で、とりあえずTwitterの投稿専用クライアントを作ってみた」
凛「投稿、専用・・・?」
希「Twitterはコミュニティじゃない、ソーシャル独り言サービスだ、って誰かさんが言っとった」
凛「その人友達いないのかな?」
海未「禁忌に触れるなっ! ・・・はっ、私、今何を?」
凛「な、なんでも、ないにゃ・・・」
希「ま、ちゃちゃっと作ってみようか。簡単や」
$ mix new lilywhite_twitter
希「まずmix.exsに依存関係周りの定義」
defmodule LilywhiteTwitter.Mixfile do
use Mix.Project
def project do
[app: :lilywhite_twitter,
version: "0.0.1",
elixir: "~> 1.1",
build_embedded: Mix.env == :prod,
start_permanent: Mix.env == :prod,
deps: deps,
escript: [main_module: LilywhiteTwitter]]
end
# Configuration for the OTP application
#
# Type "mix help compile.app" for more information
def application do
[applications: [:logger]]
end
# Dependencies can be Hex packages:
#
# {:mydep, "~> 0.3.0"}
#
# Or git/path repositories:
#
# {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
#
# Type "mix help deps" for more examples and options
defp deps do
[
{:oauth, github: "tim/erlang-oauth"},
{:extwitter, "~> 0.5"}
]
end
end
希「ExTwitterってライブラリがあるからそれをdepsに追加してやる。認証にOAuth使うから、Erlang-OAuthも追加や」
海未「OAuthの方はGitHubから取ってくるのですね」
希「Hexに登録されてないんや。このへんの融通が利くのがMixの便利なところやね」
希「config.exsにはアプリの設定やね」
config :extwitter, :oauth, [
consumer_key: "**************************************",
consumer_secret: "**************************************",
access_token: "**************************************",
access_token_secret: "**************************************"
]
希「認証情報は自前でTwitterから取ってきて使ってや」
凛「そっか、アプリ開発の登録をしないといけないんだね」
希「最近のTwitterは締め付けが厳しくてな、アプリの名前にまで文句言われる始末や」
希「lilywhite_twitter.exにメインロジックを実装する。といっても」
defmodule LilywhiteTwitter do
def loop do
st = IO.gets "status:"
ExTwitter.update st
loop
end
def main(args) do
loop
end
end
希「これだけや」
海未「本当に簡単ですね・・・」
希「ここまでの設定が済んでれば、あとはほとんどライブラリが面倒見てくれる。実質ExTwitter.update
が全てや」
希「実行すると」
$ mix deps.get
$ mix compile
$ rlwrap -c mix run -e "LilywhiteTwitter.main([])"
status:みんなのアイドル、園田海未です♡
status:あなたのハート撃ち抜くぞ☆
status:@littlebird ラブアロー☆シュート!
希「こんなふうになるわけや」
海未「なりません!特に最後はなんですか!?」
凛「えー、海未ちゃんTwitter始めたら絶対こうなると思うにゃ」
海未「なりません!」
希「もしくはガチの中二病キャラか、どっちかやね」
凛「闇に飲まれよ!とかっ、ばにっしゅめんとでぃすわーるど!とかっ」
希「Twitterは人間の本性を暴くツールや」
海未「うう、私は絶対に手を出しません・・・」
希「とりあえずこれで、コマンドラインで黙々とTwitterにPostしていくことができる」
凛「使いようによっては便利かもしれないにゃ」
希「screenでどっかのウインドウで動かしておくと、作業しながらキーボードから手を放さずぶつぶつ言えるで」
凛「ループにしないで投稿1回のコマンドみたいにしてもいいかもしれないにゃ」
海未「しかしやはり、タイムラインを読めないのは寂しいですね」
凛「ほほー、海未ちゃんやっぱりファンの歓声が聴きたいんだね!」
海未「ち、違います!・・・いえ、違わないのですが、違います!」
希「Streamでタイムライン流し続けるみたいなのもできるみたいやし、それもまた時間あったらやってみよか」