PngNote for BOOX開発記
リンク
あらすじ
今後MOOCで生物関係のコースをたくさん取っていこうかと思うにあたり、ノートを取るにあたり、BOOXでノート取るかな、と思った。
BOOXのデフォルトのノートアプリは十分使いやすいのだが、将来デバイスを乗り換える時にいちいちデータをexportするのがかったるい。 しかもpdfのexportってその後の管理がやりにくく、自分的にあまり好きじゃない。
という事で、自分で作る事にした。
名前はPngNote for BOOXという名前にする。
基本コンセプト
BOOXのpen SDKを使って、デフォルトのノートアプリみたいにレイテンシがあまり無いnative drawでちゃんと作る。 ただ機能的には最低限の物だけにする。
データはフォルダをブックとして、フォルダ内は連番のpngとする。 ページの入れ替えとかはファイル名のrenameで。 当初は足りない機能はファイラーとかPC上で編集したりしてしのぐ。
データはStorage Access Frameworkで普通にフォルダに保存していき、 それをGooglePlay: Autosync for Google Driveなどのフォルダsyncアプリで共有する前提で。
明示的なexport無しで共有出来て、将来デバイスを乗り換える時もそのまま続きのノートを書いていけるようにする。
開発記録
とりあえず時系列で簡単に経過を書いていく。
2021-07-23
カキオクからひっぺがしたキャンバスをpen SDKとつなげて、書いた物がpngとして保存されるまでが動いた。 setRawDrawingEnabledするとハロメニューが使えなくなるが、まぁこれは仕方ないか。
プロジェクト名にfor BOOXを入れ忘れたが、まぁ当面はBOOX用しか存在しないからいいか。
あとはページナビゲーションとページ作成だけ作れば最低限は使えるな。>つけた
たまにY軸が凄く下に飛んだ点が間に挟まるのだが、なんなのだろう?適当に差分見て無視する事に。
ActivityのonStop呼ばれたあとにonStartが来るケースで画面が真っ黒になるなぁ。 これはSurfaceViewとActivityをうまく紐付けていないからなんだが、こういうのってJetpack Commpose苦手なんだよなぁ。 まぁ適当なmutableLiveDataなboolをonStartとonStopで切り替えて処理すれば良いのだけれど。
丸一日コード書いている感じだったが、割と使える所まで来た。
ちゃんと完成させる決意をして、きみどり先生にアイコンを頼む。
2021-07-25
ドッグフードしつつ気になる所を直す。消しゴム回りが気に食わない挙動だったのが、だいぶ許せる感じになってきた。 あとはundo-redoがあればとりあえずは使えるかなぁ。 いちいちページの最後まで行くのはかったるいな。最後と最初は作りたい気もするが、スペースが無いなぁ。
undoとredoを実装しよう、という気になって、ついでに最初のページと最後のページのジャンプもつける。 これは限りなく完成に近い所まで来たな。
undoとかredoのステータスはペンのrawdrawingの合間に変更される事があるが、その間でre-composeが走って画面の表示の更新を要求しても、 間に合わないでraw drawingが始まってしまう事がある。 これはJetpack Composeという物とraw drawingというプラットフォーム固有の物の相性が悪いという話なんだが、、、
とりあえずrefreshした後すぐにペンが来た場合はもう一回リフレッシュする、という感じのコードを入れる。 最初の一回のあとちょっと詰まる感じが出てかっこ悪いが、これは仕方ないかなぁ。
残ったTODOはペンと消しゴムをアイコンにしてもうちょっとスペース減らすのと、ペンとブラシのサイズ変更を出来るようにする、という感じかな。 サイズ変更はraw drawingと相性悪そうだから無しにしようかな?今の所使ってないし。そうすると現時点でもとりあえず完成でいい気もするが。
2021-07-27
細かい所を直しつつだいぶ使ってみた。実用にはなっているな。 ちょっとBookListの表示は直したいが、他はこのままで一旦出してみるかなぁ。 トラブルシューティングを思えば、リフレッシュボタンくらいはつけるか。
pngnoteのデータをブログに貼る良い方法が欲しいな。 とりあえずGoogle Driveを共有してみたが、GoogleDriveはファイル移動したり整理したりしたくなるのでその時にリンク切れになるのは嫌だよなぁ。 やはりgithub pagesのレポジトリのどこかに置きたい。 適当なブランチに入れたらギャラリー的なのが生成される、とかが良い気がするが…
結局Github Pages Galleryを使う事に>PngNoteのノートの公開にはGithub Pages Galleryを使う事にした
2021-08-13
ノートのページ数が増えてきて、たまに途中を見直したい時に1ページずつ移動するのが面倒になってきたので、 グリッドビューを追加する。この辺はリリースして反応見てからやろうと思っていたが、自分が必要になったので仕方ない。
あと非BOOXなAndroid版のforkを作ろうと思って、なるべくやる事やってからforkしたいと思ったという事情もある。
結構手抜きな感じに実装したが、なかなかいい出来だ。Jetpack Composeは頑張らなくてもいい感じの見た目になるよなぁ。
2021-08-14
BOOXじゃないAndroid端末向けにBranchを作って通常のViewで実装した版を作る。 BOOXじゃないAndroid用なら良いノートアプリなんてありそうな気もするんだが、ちらっと探しても同じようなコンセプト(pngの連番をフォルダにそのまま保存)のアプリが見つからなかったので、手持ちのタブレットでもこれ使う事にする。
Google Playに登録するかは悩むなぁ。別にapkをgithubに置くだけでいいかな?
2021-08-19
きみどりさんのアイコンが上がってきたのでリリース。
Google Playのデバイスリストに入ってなかったのでgithubに置いてredditにスレを建てる事に。 割と反響はあった。うむうむ。 色の要望が上がってたが、いまいち良いUIを思いつかないので寝かせておく。
たまにおかしな状態になる事はあるので再現条件を詰めて直していきたい。 BOOXのノートアプリとしては結構いい感じの出来に仕上がったと思う。
非BOOXのバージョンは手持ちのタブレットのサイズが小さいのもあっていまいちだった。 こちらはちょっといろいろUIを工夫してみたい気もするので、別バージョンとして作ろうかなぁ。
今考えてるのは虫眼鏡みたいな感じで書くあたりを拡大していくようなUI。PngNoteLoupeと呼ぼうかしらね。