Windows 版も、同じコードで。
スマホで使っているカレンダーを、仕事中はパソコンでも開きたい。そう思って、Windows 版を作っています。スマホ版でできることは全部できるようにするつもりで、諦めたのはウィジェットだけです。ただ、ここで書くのは機能の話ではありません。同じアプリを 2 つ作ると、ふつうは中身が食い違っていきます。そうならないようにした話です。
「写す」のをやめました
同じ機能を 2 回書くと、必ずどちらかだけ直す日が来ます。これはスマホ版の中でも経験しました。日表示と週表示で「開いたときにどこから見せるか」を別々に書いていたせいで、同じ予定なのに画面によって開く位置が違う、ということが起きました。いまは 1 か所にまとめてあります。
画面が 2 つでそうなるのですから、アプリが 2 つなら確実にずれます。しかもずれたことに気づくのは、たいてい使っている最中です。
そこで Windows 版は、スマホ版のファイルをそのまま読む形にしました。コピーを置いていません。いま 30 ファイルほどを両方で共有していて、Google カレンダーとのやりとり、終日予定の詳細と費用の読み書き、日付の計算、ToDo、圏外のときの控え、履歴は、どちらも同じ 1 つのファイルが動いています。
直すのも 1 回で済みます。片方だけ直して、もう片方を忘れる、という形がそもそも作れません。
1つ混ざると、共有できない
ただ、どのファイルでも読めるわけではありません。Android にしかない部品が 1 つでも混ざっていると、そのファイルはまるごと共有できなくなります。99 行が計算で、1 行だけ Android のものを使っている、という場合でも駄目です。
なので、そういうファイルは計算のところだけを小さく切り出しました。圏外で保留している操作の形、予定一覧の日時の書き方、同じカレンダーが 2 つ出てきたときにどちらを残すか、編集画面の選択肢。どれも、どちらでも同じでないと困るものです。
逆向きに切り出したものもあります。背景に写真を敷いたときに文字を読めるようにする計算は、ほぼ全部がただの計算なのに、写真の明るさを測る関数 1 つだけが Android のものを使っていました。それを外へ出したところ、ファイルごと共有できるようになり、そこに付いていた 58 件のテストも Windows 側で走るようになりました。
テストが、両方で走る
共有しているのはアプリの中身だけではありません。テストも同じものを読んでいます。いま Windows 側で 574 件が通っています。計算を 1 か所直せば、両方のテストが同時に答えを返してくれます。
おまけもありました。スマホ版のテストでは、JSON を読み書きする部品が「呼ぶと落ちる」偽物に差し替わっているため、圏外用の控えが正しく往復するかを確かめられずにいました。パソコン側には本物が入るので、ずっと確かめられなかったところが、ここで確かめられるようになりました。
諦めたのはウィジェットだけ
スマホのホーム画面に置く 2 種類のウィジェットは、Windows には置き場所がないので作りません。その代わりが常駐です。窓を閉じてもアプリは終わらず、通知領域に残ります。2 分ごとに予定を取り直して、時間が来たら Windows の通知で知らせます。
画面が大きいぶんは、一度に見える量を増やしました。月表示の右に予定の詳細がそのまま出ますし、検索は Ctrl+F で開きます。終日予定に「集合 8:00 / 現場 9:30〜17:00」のような行を書き足す欄も、スマホとまったく同じ部品です。だから同じ書き方で、同じ形で保存されます。
残っているのは「包む」ところ
まだ配れません。そもそも、まだ作っている途中です。動くところまでは来ていますが、人に渡せる形に包むところと、ストアへ出す手続きが残っています。通知を出すと差出人が「OpenJDK Platform binary」と表示されるのも、そのときに直るところです。
配り方は、いまのところ Microsoft ストアを考えています。置き場所とアップデートをストアに任せられるからです。いつ出せるかは、まだ書けません。できたらここでお知らせします。
Android 版は、いま Google Play で公開に向けた準備をしています。こちらも進み次第、この開発日誌に書いていきます。
前の回 — 架空の予定次の回 — 紙の別紙をやめて、26:00 と書く。開発日誌の一覧

-150x150.png)