シャロシコAPIをリリースしました

どうしてこうなった。

この記事はシャロシコ Advent Calendar 2015 9日目の記事です

シャロシコ率が何故か高いと話題の滋賀県民の保登心愛ことHinaloeですこんばんは。

昨日はsudosanのシャロシコ率の高い都道府県でした。なんでこうなるの…

なんで私がシャロシコAdvent Calendarなんていう下卑なAdvent Calendarに参加しなくてはいけないのでしょうか…

あ、ちなみに私は滋賀県民だけどごちシコ反対派です。撲滅党です。シャロシコ警察ではありません(ぇ
あとココアちゃん派です。

とまあ昨日のエントリの話題はこの程度にしておいて本題へ。

Twitterがcount.jsonを終了した

9月あ辺りから話題になってて4日目のエントリでもあったように、TwitterのURLツイート数カウントAPI、通称count.jsonの提供が終了されました。

それに伴ってシャロシコツイート数を表示していたsyaroshi.coでツイート数が表示できなくなったのでsudosanが当時から色々言ってたわけですね。

ってことで

とか言ってたけどまぁ作ってなかったわけです。

ちなみに言い出した当初からサブドメイン用意したり証明書を用意したりしてました。(最終的に使ってない)

そんなこんなで期末考査の大切な時間を割きながら、無駄に時間をかけて昨日やっとこのAPIをリリースすることが出来ました。

今回は1日目のエントリーにならって無駄な技術の紹介も行います。

シャロシコAPIの紹介

今回のシャロシコAPIは、@sudosanにサブドメインを借りて  https://api.syaroshi.co/  で公開させていただいてます。

syaroshicoapi

制作にわりかし時間を割いた割にはエンドポイントが1つしか無いものすごく無駄なシンプルなAPIです。

仕組み

シャロシコAPIは至ってシンプルに保存されたそれまでのツイート数のカウントと新たに見つかったツイートのカウントを足して保存して…という仕組みになっています。

が、しかし。Twitterの公開検索API search/tweets では一週間を超えるツイートの検索が出来なくなっています。そこでこちらのGistを参考にTwistOAuthで公式CK/CSで search/universalクロールするスクリプトを別途書き、それを事前にDBにシードしておく、という手法を取ることにしました。

これに使ったスクリプトは今回掲載する予定でしたが時間の関係上後で追記する、という形をとらさせていただきます。

クロールして取得できたデータはこんな感じでした。

  Gist

シャロシコの起源はこっちのシャロだったことがわかります。(もちろん除外したりはしません。これもシャロシコです。)

で、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シャロシコと電車(東海編)です。

倒壊には幸せの黄色い電車とかオレンジの電車とかシャロシコな電車、気動車がいっぱいいますよね。わたし、気になります!(オレンジの電車(つまりあれ)ばっかりな気がしなくもないんだけど)

コメントを残す