メディアタイプは application/json で、拡張子は json
Perl モジュールとしては JSON、JSON::Syck、JSON::PC などがある。
JSON は pure Perl モジュールとして実装されている。
Perl 5.005_03 では JSON-1.07 は make test で failする。
YAML-Syck パッケージに含まれている。 JSON::Syck は libsyck を用いており高速であるが、オプションが少ない。
Perl 5.005_03 では YAML-Syck-0.82 は make test で failする。
JSON::PC (多くの場合)JSON::Syck より速く、かつ JSON と同じオプションが用意されている。
Makefile.PL の中で use 5.008 されている。
日記アプリ(ジャーナルアプリ)は「Day One (iOS) + Narrate (Android)」をメインで使っているのだけれど、「別のテーマで日誌をつけるのに分けたい」のと「Web ブラウザでも編集・閲覧したい」というのがあって Journey が良さそげなので使ってみることにした。
Android アプリは Google Play では Journal (by Journey) になっている。
データは自分の Google ドライブに保存されるので端末がクラッシュしても大丈夫。開発元の 2 App Studio のストレージには保存されない。「Google か Dropbox か Evernote なら自分のプライベートなデータを置くのを許容する」という自分のルール的にも OK。
日記アプリは、ロックインされないことが重要で選択時の大きな基準。Journey の場合は Android アプリから「Export/Backup」で JSON ファイル群を ZIP アーカイブしたファイルで保存する機能がある。 常に XML ファイルとして普通にアクセス可能な状態になっている Day One より一歩劣るものの、 JSON なので移行が必要な時は自分で変換できるので許容範囲と判断。
Chrome アプリがあり PC から閲覧・編集ができる。PC 向けには公式には Mac アプリしかない Day One とは違って Windows や Linux でも使えるのが良い。なお Android アプリとは関係無しに Chrome ウェブストアから Chrome に追加して使えるので、PC のみで使うというのもあり。
ちなみに Journey Web ( http://journeyapp.me/ ) で Chrome アプリを入れなくても自分のジャーナルを閲覧できるようになっている。
ローカルホストから直接 Google ドライブにアクセスし 2 App Studio 側を経由しないと言明しているのでプライバシー的にも安心(信用する限り)。
Chrome アプリでは、いにしえの Evernote を彷彿させる巻物的表示(全文を時系列にスクロールで見ていける)なのがとても良い。個人的にこのタイプの表示が好きなのだけれど、現状少ないので嬉しい。
文字が大きく行間が広いのでかなりスカスカ感はあるので、もう少しタイトになるといいなとは思う。
Markdown をサポートしているのも良いところなのだけれど、見出しがセンタリングだったりするのがそこはかとなくダサい。
あとはまずまず良い感じ。
(画像は http://2appstudio.com/journey/ より。)
[ Android アプリレビュー ]
社内で動かしている Markdown ビューアについては去年 mixi Open ID 認証にしました(記事)。ですが mixi OpenID については 2016年1月25日提供終了となっていますので今回認証を変更しました。
今回は Google アカウントで認証できるように OpenID Connect を使ってみることに。基本的には OAuth 2.0 とほぼ同じです。
認証ページ(https://accounts.google.com/o/oauth2/auth)にリダイレクトさせる時に scope パラメータに 'openid email' を指定しておきます。
そしてコールバックを受けて https://accounts.google.com/o/oauth2/token でアクセストークンを取得した際に、レスポンスに一緒に含まれる id_token をパースして email 取り出します。今回はそのメールアドレスが指定ドメインだったらアクセスを許可するという処理にしました。
JSON Web Token (JWT) である id_token のパースには OIDC::Lite::Model::IDToken モジュールを使用。
$email = OIDC::Lite::Model::IDToken->load($id_token) ->payload->{email};
で email が取得できます。
自分の Tweet は API で取ってきておおむね nDiki の記事にまとめてあるのですが、使い始めの頃はそんなことをしていなかったので手元にデータとして取ってありませんでした。公式機能で全ツイート履歴ダウンロードができるのは知っていましたがそのうちと思いつつずっとやり忘れていたので、ようやく腰を上げて全ツイート履歴リクエストを設定からしてみたところ、ほどなくして準備完了のメールが届きました。
ダウンロードした ZIP ファイルの中をみると、予想していた通り人間用に HTML ファイルがありました。そしてそれ以外に CSV 形式ファイル・JSON 形式ファイルが含まれていてきちんと利用しやすい形になっていて良くできているなと感心してしまいました。良いですね。
きちんと README.txt をみてみたら HTML ファイル (index.html) は JSON 形式ファイルを読んで表示するページになってました。なるほど。API のレスポンス仕様と同じ JSON 形式をエクスポートデータにしているのですね。
最近 HiveQL クエリを実行して集計したりしている。 可視化は Google スプレッドシートで。 Google スプレッドシートは考察を一緒に書いておきにくい。
MkDocs で生成しているノートに一緒にチャートをおけるといいなと思って Chart.js をちょっと使ってみた。
MkDocs プラグインはなさそうなので、素で canvas 要素と script 要素を Markdown ファイルの中に書いて動かしてみた。
CSV ファイル (あるいは TSV ファイル / JSON ファイル) を読み込むようにできると管理が楽かな。
機会がある時にちょっとずつ使ってみよう。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。