どうしてこうなった。
シャロシコ率が何故か高いと話題の滋賀県民の保登心愛ことHinaloeですこんばんは。
昨日はsudosanのシャロシコ率の高い都道府県でした。なんでこうなるの…
なんで私がシャロシコAdvent Calendarなんていう下卑なAdvent Calendarに参加しなくてはいけないのでしょうか…
あ、ちなみに私は滋賀県民だけどごちシコ反対派です。撲滅党です。シャロシコ警察ではありません(ぇ
あとココアちゃん派です。
とまあ昨日のエントリの話題はこの程度にしておいて本題へ。
Twitterがcount.jsonを終了した
9月あ辺りから話題になってて4日目のエントリでもあったように、TwitterのURLツイート数カウントAPI、通称count.json
の提供が終了されました。
それに伴ってシャロシコツイート数を表示していたsyaroshi.coでツイート数が表示できなくなったのでsudosanが当時から色々言ってたわけですね。
ってことで
Twitter、検索APIでシャロシコの原点まで辿れそう(
— 衣装をください (@hnle0) November 19, 2015
シャロシコAPI、作るの自体は簡単にできそう(
— 衣装をください (@hnle0) November 22, 2015
シャロシコツイートはSearch APIで十分拾える範囲の数だから一回全部回してあとは差分カウントでなんとかなるし(前作ろうとした(作ってない(作れ)))
— 衣装をください (@hnle0) December 3, 2015
とか言ってたけどまぁ作ってなかったわけです。
ちなみに言い出した当初からサブドメイン用意したり証明書を用意したりしてました。(最終的に使ってない)
無駄なページだ https://t.co/HzesS0jK8s
— 衣装をください (@hnle0) November 22, 2015
シャロシコAPI用の証明書用意したんでシャロシコ(計測)API作ります(作るとは言っていない) pic.twitter.com/HBPqAcuyNW
— 衣装をください (@hnle0) December 4, 2015
そんなこんなで期末考査の大切な時間を割きながら、無駄に時間をかけて昨日やっとこのAPIをリリースすることが出来ました。
今回は1日目のエントリーにならって無駄な技術の紹介も行います。
シャロシコAPIの紹介
今回のシャロシコAPIは、@sudosanにサブドメインを借りて https://api.syaroshi.co/ で公開させていただいてます。
制作にわりかし時間を割いた割にはエンドポイントが1つしか無いものすごく無駄なシンプルなAPIです。
仕組み
シャロシコAPIは至ってシンプルに保存されたそれまでのツイート数のカウントと新たに見つかったツイートのカウントを足して保存して…という仕組みになっています。
が、しかし。Twitterの公開検索API search/tweets では一週間を超えるツイートの検索が出来なくなっています。そこでこちらのGistを参考にTwistOAuthで公式CK/CSで search/universalクロールするスクリプトを別途書き、それを事前にDBにシードしておく、という手法を取ることにしました。
これに使ったスクリプトは今回掲載する予定でしたが時間の関係上後で追記する、という形をとらさせていただきます。
クロールして取得できたデータはこんな感じでした。
シャロシコの起源はこっちのシャロだったことがわかります。(もちろん除外したりはしません。これもシャロシコです。)
で、API本体のソースコードは GitHub にてMITライセンスで公開しています。
もちろんCORSにだって対応しています。あ、過剰アクセスは控えてくださいね!
無駄な技術
めんどくさくなったわけではありません。ちゃんと無駄な技術も紹介していきます。
Laravel/Lumen
シャロシコAPIは実装にLaravel製のマイクロフレームワーク、Lumenを採用しました。慣れない部分もあったので少し手間がかかりました。フルスクラッチの方が速かったんじゃないかと言われるかもしれないけど決してそんなことはありません。
まぁフレームワークつかうまでも無い内容だよね!
Twitter OAuth2
Twitterのアプリケーションオンリー認証と言われるユーザーの認可を必要としないAPIの叩き方です。今回は ricardoper/twitteroauth というライブラリを使用しました。
ちなみにsearch/universalはOAuth2では利用できませんでした。
PureCSS
シャロシコAPIのドキュメントにはPureという米Yahoo!の提供するOSS CSSフレームワークを採用しました。
HTML5/CSS3
シャロシコAPIのドキュメントは言うまでもなくHTML5/CSS3によって書かれています。タイトルの背景のシャロの画像にはCSS3のフィルターでblurを入れているのですが大画面だとイマイチ恩恵が受けれていないかもしれないのでフィードバックお待ちしています。
TLS 1.2
シャロシコのページ同様に全ての通信はTLSにより保護されます。(正確にはハンドシェイクは暗号化なしと言う暗号プロトコルですよね。などと言う話は数学ガールでおなじみ結城 浩先生の秘密の国のアリスがおすすめです。決して秘蜜の国のマリスではありません。)
IPv6
やはりIPv6をサポートしています。ConoHaたんがIPv6対応してくれてるおかげだよ!
ところで最近IPv6だとTwitterの画像読み込みに時間がかかるって話題があった気がしますが…
SPDY/3.1
HTTP/2の前規格であるSPDYを使用しています。HTTP/2同様にレスポンスを最適化したりできるアレです。Nginx 2.0がリリースされればHTTP/2へ移行することでしょう。
PHP 7.0
シャロシコAPIのバックエンドには先日12/3にリリースされたばかりのPHP 7.0を利用しています。従来のPHPと比べ、動作性能がとても向上しています。
Let’s encrypt
syaroshico API に使用している証明書は12/3にやっとパブリック・ベータへ移行したばかりのLet’s encryptで発行したSAN証明書を利用しています。
なお、この証明書は自動発行を促すため「90日間有効」のものです。もし期限切れになってるのを見かけたら速やかに報告してください。
Options APIっぽいもの
何を思ったか、Eloquent を使わずに Laravel/Lumen 用に WordPress の Options API っぽいものを再実装してしまいました。
アプリの性質上DBのWriteアクセスを叩きまくってる気がします。
ところで、作ってから思ってたけどわざわざOptions APIっぽいもの作らなくても普通にModel/Eloquent使えばよかったんじゃ…
最後に
無駄な技術を組み合わせて作られたシャロシコAPIですが、まだまだ改善の余地があります。是非、どんどん使ってもらってフィードバックを頂ければと思ってます。
ところでシャロシコAPIにはfaviconがまだありません。もし、FaviconやTOP画を提供してくださる方がおられたら一声おかけください。お待ちしています。
あとラビットハウスや星の海学園の制服を提供いただける方も募集しています。
さて、明日は@sudosanのシャロシコと電車(東海編)です。
倒壊には幸せの黄色い電車とかオレンジの電車とかシャロシコな電車、気動車がいっぱいいますよね。わたし、気になります!(オレンジの電車(つまりあれ)ばっかりな気がしなくもないんだけど)