前置き
SIer は大抵Excelを開いて画面とにらめっこをしていると
周囲にきちんと仕事しているように評価される。
つまりExcelさえ開いていればなんでもいいのだ。
そう、それがTwitterでもね。
だからSIerのSEは、自分の好きな言語を駆使してExcelでTwitterをやっているようだ。
使用するもの
- apache poi
- twitter4j
説明
さて、それっぽくするためにはファイル名は「外部インターフェース設計書」とでもしておこう。
SIerでよくあるバージョン管理っぽく後ろになんか日付っぽいものでもつけておくと、なおGood!
今回はめんどくさいから単純に System/currentTimeMillis
で済ませてしまおう。
ソースコード
project.clj
(defproject sier-twitter-clj "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.6.0"]
[org.twitter4j/twitter4j-core "3.0.5"]
[org.apache.poi/poi "3.10.1"]
[org.apache.poi/poi-ooxml "3.10.1"]]
:main sier-twitter-clj.core)
core.clj
(ns sier-twitter-clj.core
(:import [org.apache.poi.xssf.usermodel XSSFWorkbook]
[java.io FileOutputStream]
[twitter4j TwitterFactory Query TwitterException])
(:require [clojure.java.io :as io]))
(def wb (XSSFWorkbook.))
(def twitter (. (TwitterFactory.) getInstance))
(defn save [content]
(with-open [w (io/output-stream (str "外部インターフェース設計書_" (System/currentTimeMillis) ".xls"))]
(.write content w)))
;; get twitter time line
;; return map
(defn get-timeline []
(def x (.getHomeTimeline twitter))
(map #(zipmap [:screenName :name :text] [(.. % getUser getScreenName)
(.. % getUser getName)
(.getText %)
]) x))
(defn -main []
(def timeline (get-timeline))
(def tweets-size (count timeline))
(def sheet (.createSheet wb))
(dotimes [i tweets-size]
(def tweet (first (drop (- tweets-size (inc i)) timeline)))
(def row (.createRow sheet i))
(let [cell (. row createCell 0)]
(.setCellValue cell (str (:name tweet) "@" (:screenName tweet))))
(let [cell (. row createCell 1)]
(.setCellValue cell (:text tweet))))
(save wb))
github
終わりに
これではまだまだツイッターを楽しめない。
さらに進化させなければ。
…つづく?
※この物語はすべてフィクションです。