pixiv小説を一瞬で
Kindleに送るやつ
作った

@hakatashi

2016-07-15 pixiv社内勉強会 LT

いきなりデモ

しくみ

技術紹介

Chrome拡張機能

YEOMAN

Browserify

  • いつもの
  • requestとかcsv-parseとかのnpmモジュールを使いたかった
  • requestをBrowserifyすると1.8MBになってやばい

実際に通信されるデータ

$ curl -XPOST -k https://api.hakatashi.com/pixiv2kindle/publish \
  -d "id=7011338" -d "auth=xxxxxx"
"{""event"":""Remote App Started""}"
"{""event"":""Retrieved Novel Data""}"
"{""event"":""Converted to HTML""}"
"{""event"":""Created EPUB File""}"
"{""event"":""Retrieved EPUB data""}"
"{""event"":""Converted to mobi""}"
"{""event"":""Delivered Mail to Kindle""}"

_人人人_
> CSV <
 ̄Y^Y ̄

$ curl -XPOST -k https://api.hakatashi.com/pixiv2kindle/publish \
  -d "id=7011338" -d "auth=xxxxxx"
"{""event"":""Remote App Started""}"
"{""event"":""Retrieved Novel Data""}"
"{""event"":""Converted to HTML""}"
"{""event"":""Created EPUB File""}"
"{""event"":""Retrieved EPUB data""}"
"{""event"":""Converted to mobi""}"
"{""event"":""Delivered Mail to Kindle""}"
  • サーバーで発生したイベントはlong-pollingでリアルタイムに送られる。
  • CSVはストリーミングと相性が良いのでしゅき……
  • Node.jsならrequest().pipe(csvParse())するだけ

APIサーバー

Node.js

今回の実装のためにnpmモジュールを2つ作った

Mailgun

  • REST APIでメールを送信できる
  • 月10000通まで無料
  • ダッシュボードでメールの送信状況をチェックできる

kindlegen

  • EPUBをMOBIに変換するAmazonの公式ソフトウェア
  • これを使って.mobiを生成しないとKindleでの表示は保証されない

Androidアプリ

NativeScript

  • JavaScriptでモバイルアプリを書ける星の数ほどあるフレームワークの一つ
    • これは名前の通りCSSやJavaScriptをネイティブのコードに変換してくれる
  • 結局Androidのドキュメントを見ながらがりがり書くので、途中から「これJavaScriptじゃなくてJavaじゃね?」という気分になった

Toast

  • これの名前が最初わからなかった
    • 「画面下部にシュッと出てシュッと消えるやつ」でぐぐっても出てこない
    • @496_に教えてもらった
    • 名前だけでもいろいろ知っておくの大事

関連リポジトリ

おしまい

Made with Slides.com