ずっと、ずーっと欲しかった
toodledoとリンクするアプリなんですが
いつまで待っても出る気配が無いので
作るコトにしました。
・toodledoとは
「やることリスト」をwebで管理できるサービス、それがtoodledoです。最近ではデスクトップ端末で扱うブラウザ向けの拡張機能もリリースされており、利便性はグッと増しているの…ですが…google reminderとかevernoteとかiosのリマインダとかもあって、限定された環境下で管理が完結する方にはあまり利便性を感じられないサービスでもあるんですよね。(evernoteは公式の便利なpebble用アプリがリリースされています)
ホカの似たようなサービスと比べてtoodledoはアクセスの仕方が私的には容易で、かつiosでも早い段階で対応アプリが出ていたので(公式でも後追いにはなりましたが出してます)デスクトップ端末とモバイル双方からカンタンにアクセスできるサービスとして便利に利用していたんです。
競合のapplewatchでは既に対応アプリは出ているのですが、対応するios用のアプリが必須になるので(文末参照)こんな感じでこっちでも出されてしまったらアプリが無い人には不便だよなあ…って思ったんですよね。
・アプリ作成に必要なモノ
じゃあ自分で作ってみよう!というコトで該当するtoodledoのページを見に行くと…ありましたありました。

開発者登録してapiとかoauthとか言うのを使うとどうにかなりそうです。ココだけ見て「とりあえずどうにかなりそうだからやってみよう!」と思ったのが今月のアタマごろのオハナシです。
書かれている内容をざっくり読むと
・apiとかいう仕組みを利用するらしい
・oauthというよくわかんない方法でアクセスする
・「やることリスト」はjsonで返ってくる
・リストの操作もjsonで行う
とのことらしいんです。まだよくわからないんですけど。"json"ってヤツは以前"simple weather"や"timetable"で扱ったコトがあるのでで、なんとかなりそうだと思ったんですね。アプリ開発に必要な手続きはあっさりできてしまい、サンプルとなるjsonもすぐに手に入れられました。このjsonデータがあればなんとかなるだろうと早速cloudpebbleにアクセス。アプリ作成がスタートします。
認証に使うoauthとかの知識は全く無くて、係る認証の手続きが予想をはるかに超える面倒な(それは同時に安全に守られた手続きなんですが)展開になるとはさっぱり考えられず取り組んでしまったんですね。それに気づくのはしばらく後のオハナシになります。
・わかるトコからやっつけます
とりあえず取得したjsonをdropboxの公開フォルダにアップロードして、そこに至るまでの手続きは完了していたモノとしてpebbleにそのデータを表示するところからスタートしました。前述のアプリのように、取得したデータを一気になんとかしようとしたら…pebbleと母艦アプリとの通信で扱われるappmessageという仕組みでは一回の通信で扱えるデータ量がjavascriptで動作するパートからc言語で動作するパートへ送り出される場面で相当制限されているコトが発覚します。
データ量が多すぎて蹴られてしまったらマズいなあ…と思っていたら似たような挙動をするアプリの作者さんがたまたまgithubにてコードを公開していました。ざっくり読み込むと1項目ごと切り分けて何回も送り出しをしているコトがわかりました。
コレを自分のアプリに合うような表現に書き換えて…トライアンドエラーを繰り返し…

出ました!ってグッチャグチャ!!

下に行くと表示がちゃんと表示されるなあ…で原因を特定し

で、なんとかちゃんとした表示にこぎつけました。
cloudpebbleでは実機にそのまま送り出してテストできるほか、最近ではブラウザ上でエミュレータといって実機同様の機能を持って動作してくれる仕組みもあり、動作確認がカンタンになりました。
ついでだから完了したモノをチェックできるのに視覚的にわかりやすいモノを…と予定に無かったactionbarも追加して完了報告をするための準備もしっかり済ませます。

新しいコトばかりでしたがヒマな時間をこれに充ててざっくり40時間ぐらいでココまで到達しました。案の定でよくわからなくてもなんとかなります。
さて、「イケる!イケるぞー!」とわからないままにしていたoauthでの認証手続きに関する項目にノリノリで飛び込むのですが…コレが予想をはるかに超える複雑な手続きになるとは思いもしませんで…
・設定ページを活用しましょう
toodledoのapiを利用したoauthによる認証を行うには、アプリ連携に関するページにてIDとpasswordをユーザに打ち込んでもらった上で、まずは…
・認証に必要なデータがアドレスの形式で戻ってくる
・そのデータを素に認証を得るための手続きを行う
・やることリストにアクセス可能なカギをもらう
・カギを使ってやることリストを取得する
という手順をアプリ側で行う必要があります。
認証ページは電話側で動作しているpebble用の連携アプリで扱える設定ページを利用してアクセス可能であるコトは予測していたので、パパっと組み込みます。

返ってくる値は事前にアプリ開発のため登録したページに文字列を付加したアドレスの形式(クエリって言うらしいですね)で戻ってくるのですが、このまま処理しようとしたらどう頑張ってもjavascriptのパートでは取得できず。
どうやら設定ページからの戻り値はjsonの形式じゃないと取得できないようなんです。しばらくどうにかならないか試したモノの…できなかったので設定ページを表示しているウチになんとかしてjson形式でデータを返すようにしなくては先に進めないと判断。
ココらへんも全く知識が無いので専門用語もわからないまま早速「"ホームページ"・"アドレス"・"文字列"・"json"」とかザツにgoogle大先生に打ち込んで調べます。
なんとかソレっぽいページがヒットしたのでざっくり読み込んで初めてのhtml手打ちでムリヤリページを作成、やっぱりdropboxにアップロードして動作確認を繰り返してなんとか値の取得まではこぎつけました。ここまで来たら試しては改善して、を繰り返しそれなりな動作をするよう組み上げるダケです。
・リリース目前までこぎつけました

というワケで軽くボケた写真ですがやっと実機で問題なく動作するところまで到達しました。本来参照するダケのつもりだったのですがイキオイでオマケしちゃった予定の完了操作の機能が意外と手こずっていて、完成まではもう少しかかりそうなんです。
私的にはあるととても助かるアプリなので、なんとか完成までこぎつけられるとイイのですが…









