LoginSignup
34
24

More than 5 years have passed since last update.

SIerのTwitter事情

Last updated at Posted at 2014-10-05

前置き

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

終わりに

これではまだまだツイッターを楽しめない。

さらに進化させなければ。

…つづく?

※この物語はすべてフィクションです。

34
24
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
34
24