今回の目玉はいくつかありますが、その一つは『オフライン対応』です。以前のバージョンではサーバへの送信が終わるまでは次の入力ができなかったのですが、送信部分を非同期に改良することで送信後に待たされないサクサク投稿が可能になりました。
バージョン 1.1 の内容
- 投稿画面のデザインを一新
- オフライン投稿に対応
- URLスキーム対応
- バグ修正
新デザイン
投稿画面のデザインを一新しました。
多少なりとも以前のバージョンに慣れた人には申し訳ないのですが、使い勝手を改良するにはどうしても必要と判断して思い切って変えました(クレームが来るのは覚悟しています x_x 。。
最大の変更理由は『ルール』の切替を簡単にできるようにする為です。以前までルール名はナビゲーションバーに表示していましたが、このバージョンから下のツールバーへ移動しました。ここを左右フリックするとルールが切り替えられます。以前のレイアウトのままでの切替も考えたのですが、ナビゲーションバーのタイトルをフリックするというのはどうも感覚的ではないし、片手持ちの時に遠くて指が届かず、試行錯誤の末に真ん中のツールバーへ配置することに決めました。送信ボタンも合わせて下へ移動して一番押しやすい場所に配置しました。代わりに従来下のツールバーにあった写真やリマインダをナビゲーションバーへ配置してあります。写真をよく使っていたユーザの方は慣れるまで使いづらいかもしれません(私自身がそうでした)。
オフライン投稿
投稿は一旦送信ボックスに入り、オンライン時に自動的に送信されます。
送信ボックス導入によってオフラインだけでなくオンライン時も非同期な送信が可能になりました。これによって比較的大きな画像があっても送信を待たされることが無い ”さくさく” 投稿が可能になりました。
実装の話を少しすると内部では自作のキューライブラリを使っています。
このライブラリはいわゆるキュー(FIFO)の簡易ライブラリで、特徴的なのはアーカイブ可能なオブジェクトを渡すと処理が終わるまでディスクに保存しておいてくれるところです(永続化)。投稿が実行されると投稿内容を保持するモデルクラスをこのキューへ入れて、メインスレッドではすぐに次の投稿入力画面に切り替えます。一方別スレッドで動く処理がこのキューを監視していて、諸条件(オンラインなど)が揃ったらサーバへの送信を自動的に開始します。処理が終わったらキューから投稿を削除して、次の投稿モデルを取り出します。
また送信ボックスはちょっとしたミニアニメーションを仕込んでいて増減の様子がさりげなくわかるようになっています。ここのアニメーションには Canvas というライブラリを利用しました。
このライブラリは良く出来ていて用意されているビュークラスの上にアニメーションしたい画像等を配置すれば移動やズーム、フェードイン・アウトなどの動きを簡単につけることができます。アイコンやボタンなど主にコントロール系のパーツでユーザの目を引きたい時で使うと効果的だと思います。StackOneでは送信ボックスに投稿が入った時に ZoomOut、送信が終わった時にMorphを使っています(どくんどくん、と少し波打つように見える)。
URLスキーム
このバージョンから URLスキームに正式対応しました。テキストおよびルールの指定が可能です。
書式 jp.lakesoft.StackOne://text=テキスト&rule=ルールID
ruleパラメータは省略可能です。
URLはルール設定画面で取得することもできるので、この機能を活用してみて下さい。
その他
StackOneの特徴はなんといっても『ルール』です。『ルール』については別に説明ページを設けたのでもし興味を持ったらこちらを読んでみて下さい。
それと連絡事項が1件あります。頻繁に投稿するとエバーノートの1時間当たりの投稿上限に達して送信に失敗する場合があります。
エラー内容: Code=19 "Operation denied because the calling application has reached its hourly API call limit for this user."
送信BOXに投稿が溜まってしまうことになりますが、この場合はしばらくしてから再送信してみてください。この課題はエバーノートの仕様であるため変更はできないのですが、アプリ側で少しでも改善できるよう検討中です。
エバーノートへの投稿がもっと楽しくなる新世代投稿アプリ【StackOne】を是非お試し下さい。
Ko1ro says:
2014年4月9日 12:54
urlスキームでテキストが直接貼れるようになって快適です! 欲を言わせていただければ、コールバックを組めると言うこと無しです。
ルールの簡単切り替えも便利だと思います。
使いやすいアプリの開発、ますます頑張ってください。
Ko1ro says:
2014年4月9日 12:54
urlスキームでテキストが直接貼れるようになって快適です! 欲を言わせていただければ、コールバックを組めると言うこと無しです。
ルールの簡単切り替えも便利だと思います。
使いやすいアプリの開発、ますます頑張ってください。
xcatsan says:
2014年4月9日 12:56
感想ありがとうございます!
コールバックは検討してみますね。
xcatsan says:
2014年4月9日 12:56
感想ありがとうございます!
コールバックは検討してみますね。
けんたろう
2014年4月11日 14:44
某追記型ソフトよりヘッダフッタを柔軟にカスタマイズできるので乗り換えました!
•ローテションなし、ノートタイトルを固定文字列、にルールで設定した場合、Evernoteに投稿したメモはただしく作られますか?見当たらなくて…。
•某追記型メモソフトのように、例えば、ルールで指定したノートタイトルと同じタイトルを持つノートが既に存在する場合、その既存ノートに追記してくれるとうれしいです。
けんたろう
2014年4月11日 14:44
某追記型ソフトよりヘッダフッタを柔軟にカスタマイズできるので乗り換えました!
•ローテションなし、ノートタイトルを固定文字列、にルールで設定した場合、Evernoteに投稿したメモはただしく作られますか?見当たらなくて…。
•某追記型メモソフトのように、例えば、ルールで指定したノートタイトルと同じタイトルを持つノートが既に存在する場合、その既存ノートに追記してくれるとうれしいです。
匿名
2014年4月15日 10:18
& が本文にあると送信エラーが出ます。
匿名
2014年4月15日 10:18
& が本文にあると送信エラーが出ます。
匿名
2014年4月15日 10:21
エラーメッセージです:
Error Domain=com.evernote.sdk Code=11 "Content of submitted note was malformed" UserInfo=0x1b089980 {parameter=The entity name must immediately follow the '&' in the entity reference., NSLocalizedDescription=Content of submitted note was malformed}
匿名
2014年4月15日 10:21
エラーメッセージです:
Error Domain=com.evernote.sdk Code=11 "Content of submitted note was malformed" UserInfo=0x1b089980 {parameter=The entity name must immediately follow the '&' in the entity reference., NSLocalizedDescription=Content of submitted note was malformed}
xcatsan says:
2014年4月15日 12:22
けんたろうさん、感想ありがとうございます。
> •ローテションなし、ノートタイトルを固定文字列、にルールで設定した場
> 合、Evernoteに投稿したメモはただしく作られますか?見当たらなくて…。
たしかに変ですね。投稿したノートをゴミ箱に捨てたことは無いですか?
その場合、ゴミ箱に入っているノートに追記されていきます。
(完全に削除するとノートを新規に作り直します)
>•某追記型メモソフトのように、例えば、ルールで指定したノートタイトルと>同じタイトルを持つノートが既に存在する場合、その既存ノートに追記し
>てくれるとうれしいです。
なるほど。面白いですね。
検討してみます。
xcatsan says:
2014年4月15日 12:22
けんたろうさん、感想ありがとうございます。
> •ローテションなし、ノートタイトルを固定文字列、にルールで設定した場
> 合、Evernoteに投稿したメモはただしく作られますか?見当たらなくて…。
たしかに変ですね。投稿したノートをゴミ箱に捨てたことは無いですか?
その場合、ゴミ箱に入っているノートに追記されていきます。
(完全に削除するとノートを新規に作り直します)
>•某追記型メモソフトのように、例えば、ルールで指定したノートタイトルと>同じタイトルを持つノートが既に存在する場合、その既存ノートに追記し
>てくれるとうれしいです。
なるほど。面白いですね。
検討してみます。
xcatsan says:
2014年4月21日 7:20
& が入っているとエラーになる件、次バージョンで修正します。
もう少しだけお待ちください。
xcatsan says:
2014年4月21日 7:20
& が入っているとエラーになる件、次バージョンで修正します。
もう少しだけお待ちください。
Ko1ro says:
2014年4月23日 6:43
urlスキームで起動オプションを付けたらどうでしょう? evergearみたいにカメラモードで起動とか、カメラキーが指から遠くなった対処法になるかな、と。
毎日のログがサクサクできて快適です。
Ko1ro says:
2014年4月23日 6:43
urlスキームで起動オプションを付けたらどうでしょう? evergearみたいにカメラモードで起動とか、カメラキーが指から遠くなった対処法になるかな、と。
毎日のログがサクサクできて快適です。
xcatsan says:
2014年4月23日 6:45
URLスキーム経由でのカメラ起動、なるほどーそいう手はありますね。考えてみます。
ありがとうございました。
xcatsan says:
2014年4月23日 6:45
URLスキーム経由でのカメラ起動、なるほどーそいう手はありますね。考えてみます。
ありがとうございました。