AI/DX活用

アプリを開かなくても、次の予定と着地が見える

Ryosuke Ishii

この記事は、自社の業務アプリ DataParade Core の事例の一部です。全体は 特設ページ にまとめています。

この記事が満たす要求: 「開いた瞬間に「今、最初にやること」が分かる」(特設ページ /00 の一覧)

iPhoneとiPadのホーム画面に、アプリのウィジェットを置いています。次の予定、今、最初にやること、きょう何をしていたかの小さな絵、今期の着地。アプリを開かなくても、端末を手に取れば見えます。

ウィジェットは小さな画面ですが、作るのにいちばん手こずりました。何を載せ、どう更新し、どこで止まったかを書きます。

ウィジェット(ダミー)
ウィジェット(ダミー)

載せるのは「次の一手」と「きょうの絵」

ウィジェットの中身は3つの大きさで少しずつ違います。小さいものは次の予定だけ。中くらいは次の予定と今、最初にやること、そしてきょうの絵。大きいものはそれに通知と今期の着地が加わります。

ウィジェットもアプリと同じ答えから描く
ウィジェットもアプリと同じ答えから描く

「きょうの絵」は、手を動かした時間を棒で、AIの作業と心拍と体の動きを線で描いた24時間の小さなグラフです。ホーム画面の「この日、何をしていたか」と同じ材料を、同じAPIから受け取っています。ウィジェットの中で計算はしません。数字はサーバーが1か所でまとめます。

予定の枠は「出せるだけ出す」ことにしました。行数を手で決めると、余白が残ります。何行入るかは端末の側で測って決めます。

更新は、端末を手に取ったとき

ウィジェットはOSが決めた間隔でしか動きません。朝いちばんに古い予定が出ていると、それだけで信用を失います。

そこでアプリの側からも更新を頼むようにしました。アプリが前面に来たとき、つまり端末を手に取ってアプリを開いたときに、最新の数字を取り直してウィジェットへ渡します。iPhoneを起動した瞬間、iPadを開いた瞬間に合わせる形です。

全端末が同じ名前で入っていて、iPhoneのトークンが消えた話

ある日、iPhoneのウィジェットが7時間止まっていました。原因はトークンの名前です。

ウィジェットはアプリとは別のトークンでサーバーに入ります。そのトークンに付ける端末の名前を、全部の端末で同じ「ios」にしていました。Macのアプリが自分のトークンを作り直したとき、同じ名前のiPhoneのトークンが取り消されたのです。iPhoneのウィジェットは、トークンが無いことに気づかず、古い絵を出し続けました。

直したのは3点です。トークンの名前を端末ごとに変える。トークンが拒まれたら、ウィジェットが自分でトークンを捨てて取り直す。アプリが前面に来たら更新する。「一度も使われていないトークン」を先に見る、という確かめ方もここで覚えました。

入るかどうかは文字数で数えず、実寸で測ります

ウィジェットの中で文字が切れる、余白が残る、という直しを何度も繰り返しました。

最初は文字数から「これなら入る」と見積もっていました。文字の幅は文字によって違うので、必ずどこかで切れます。次に、行の高さを実測して枠に何行入るかを計算する形にしました。3つの候補を用意して、入る中でいちばん多い行数を採ります。

「入るか」は数えるのではなく測る。この決めごとにしてから、iPadとiPhoneの両方で余白が消えました。

実機だけ仮の絵のままだった原因

シミュレータでは動くのに、実機だけウィジェットが仮の絵のまま止まる、ということがありました。

候補を16通り用意して「入るものを選ぶ」作りにしていたのが原因でした。実機のウィジェットには使えるメモリの上限があり、16通りを全部組み立てた時点で止まります。シミュレータにはその上限がないので気づけません。候補を3つに絞って解決しました。

この件で、確かめ方を1つ決めました。ウィジェットに渡す本物のデータを、ウィジェット側の型でそのまま読む試験を持つ。試験用の見本データでは、本物の16件の予定で起きることが再現できませんでした。

予定に「誰と」を結びます

カレンダーの予定には、同席する人を結んでいます。人の名簿と結ばれていれば、予定を押すだけで、その人の進め方や前回の話が出ます。

最初はメールアドレスで結ぼうとしました。予定に入っているアドレスと名簿のアドレスを合わせる形です。ところが、手元の予定を全部調べると、アドレスが入っているものはごくわずかでした。予定の本文に「参加者: 名前」と書いてあるものがほとんどです。名前で結ぶことにし、名簿の側に呼び方の揺れ(別名)を持たせて当てています。

案件が付いていない予定は、その場で「付ける」を押して結べます。付けた瞬間から、その案件のページにその予定が出ます。

週のカレンダー(ダミー)
週のカレンダー(ダミー)

毎年必ず来る手続きは、日付ではなく式で持ちます

法人には毎年必ず来る手続きがあります。決算、税の申告、共済の前納、届出の期限。これらをカレンダーに固定の日付で入れると、翌年に全部入れ直しになります。

そこで「期末の2か月後」「毎年9月の末」のように、式で持つことにしました。年が変わっても式は変わりません。

もう1つ、区分を足しました。「記録として持つが、通知はしない」です。担当が税理士の手続きは、私の手が要りません。カレンダーには残し、通知は鳴らさない。通知の設計は、ここでもホームと同じ考えです。

端末には、自分の名前を名乗らせます

働き方の画面に「どの端末で動かしたか」があります。これを作るとき、どの端末かを推測で当てようとして失敗しました。

最初は機種名で分けました。するとMacのアプリが「iPad Pro」と名乗ります。MacでiPad用のアプリを動かすと、機種名はiPad Proになるのです。私はiPad Proを持っていません。次に稼働時間の重なりで当てようとしましたが、メインのMacは24時間動いているので何とでも重なり、決め手になりません。

結局、端末に自分の名前を名乗らせることにしました。アプリが起動時にコンピュータ名を送ります。iPhoneが「localhost」と名乗った日もあり、それは名前として扱わないと決めました。

名乗りは台帳の名簿で1台1つに束ねます。同じ機械が、手を動かした記録では「main」、アプリを触った記録ではコンピュータ名、と2つの名前で数えられていた時期があり、同じ時間が二重に積まれていました。名前を足す場所を名簿だけにしてから、この二重は消えました。

まとめ

  • ウィジェットには次の一手ときょうの絵。数字はサーバーが1か所でまとめる
  • 更新は端末を手に取ったとき。トークンは端末ごとに分け、拒まれたら自分で取り直す
  • 入るかどうかは文字数で数えず実寸で測る。候補は3つまで
  • 端末は推測せず、自分の名前を名乗らせて名簿で束ねる

アプリを開いて確かめる回数は、ウィジェットを置いてから目に見えて減りました。開くのは、何かをするときだけです。

自社の業務アプリの全体像は 特設ページ に。次の記事: 会計の数字と、経営の着地は別に持つ

ABOUT ME
石井 亮介(りょうさん)
石井 亮介(りょうさん)
データパレード 代表取締役
㈱データパレードの代表取締役で、高田馬場の町中華「一番飯店」のChief Data Officerも務めています。BIツールのセールスエンジニア・システムエンジニア・カスタマーサクセス歴15年。大学のデータサイエンス教育で講師も担当してきました。現在は自社業務のほとんどをAIに移管し、AI10部署と50を超える自動処理が24時間動く「AI経営」を実践中。その実践知をこのブログで発信しています。
記事URLをコピーしました