diary

0210

今日も特になにもしていない。起きてちょっと勉強しようとしたんだけど、なんかそわそわしちゃって落ちつかないから結局昼寝してやりすごした。すこしだけ読書をした。

そういえばCombineについてちょっと調べたけど、結局Apple的にもSwiftUIにはViewModelを載せるのがいいと考えているっぽい?でもそしたら結局ヒープの確保が毎回発生するからイケてないんじゃないかなあ。いや、まあ"Don't guess, measure!"なんですが。でもそれを避けるためにSwiftUIはViewをstructにしたんじゃないのか?やっぱWWDCをちゃんと観ないとだめかなあ(それはそう)。

アプリデザインを考えてみたけど、そういえばアプリのデザインを自分でやったことなかったなと思う。Webは素人なりに何度かやったことあって、たとえばこの日記も自分で(ふねさんの影響とかかなり受けてるけど)デザインしたんだけど、アプリだと一度に見せられる情報にかなりの制約があるから、機能の優先度を先に詰めておかないと画面遷移とかぜんぜん決められないなと思った。なのでいま機能のリストを書いている。でもこんなのもっと後で考えるべきことかもしれないよな。ただ必要な画面コンポーネントと不可分だから、特に今回のようにUIの制約がきつそうなケースでは先に不安要素を取り除いておきたい……。


明日はかしこまったランチに行きます。どきどき。


0209

仕事をした日だと「仕事は××だった」みたいに書き出せるのだが、そうでない日はなかなかそうもいかなくて困る。

今日は昼過ぎに起きて録画していたアニメを観た。今期は「映像研には手を出すな!」を観ている。キャラクターが非常に魅力的な作品だし、いま自分も(アニメ制作ほどクリエイティヴではないにせよ)ものを作ろうとしているので、共感する部分も多い。

夜はコードを書いた。昨夜悩んでいたこと、すなわちアクセストークン認証はビジネスロジックなのか単なる実装詳細なのかという問題については、少なくともアプリはログイン時にアクセストークンを要求し保存する必要があるし、それにトークン自動更新はビジネスロジックに含まれて然るべき、という観点からドメイン層にねじ込まれることになった。結果として結局DIを簡単に書く方法が要請され、それに伴ってコードが整理された。
とりあえずのトークン更新機構が実装できたのでよかった。おそらく試作二号機の役割、つまり本格的なプロジェクト構成とアーキテクチャ的な問題の洗い出しは完了したのではないかと思う。この先、UI的な限界の探究を二号機で継続するか三号機が作られるかはまだ決めていない。でもまあこのまま二号機で作ってもいいような気はする。もちろんエンティティさえ共通ならばどうにでもなるのがこういうアーキテクチャの強みだけど、だとしてもわざわざ乗り換えるのも面倒だし。


明日はいろいろ用事があるから休暇、のつもりだったのだけど、用事はだいたい消滅したので単に四連休を楽しむ人みたいになってしまった。まあ四連休はありがたいのだが。明日はUIのお絵描きをがんばろうかな。


0208

今日はなんだっけなあ。夕方に髪を切った。ちょっとひさびさだったので首回りがスースーして参った。最近はそうでもなかったのだけど。

夜はコードを書いていた。アプリ側のアーキテクチャはだいたい固まったのでサーバー側できちんとしたエラーを返すコードを書いたんだけど、じゃあアプリはこれを受けて誰が動くべきなのか?というところで悩んでいる。リソースが存在しないとかアクセス権限がないとか、そういうのは特に考えるところはないのだけど、アクセストークンが切れている場合に自動で更新しにいく、みたいな手続きはビジネスロジックの一部なのか、それともネットワーク固有の問題としていいのか。後者だと共通化は楽になるんだけど、論理的には前者であるべきのような気がする。ただ前者をとると、ほぼすべてのUseCaseはそのためのRepositoryに依存する必要があって、注入が面倒なんだよな。やっぱDI機能を実装すべきなんだろうか。でもあれってモジュールをまたいでも使える実装なんだっけ?使えるか。ウーン。でもなー。


なんとなく「火の鳥 復活編」を読み返したんだけど、やっぱりすごいというか、半世紀前にこれが描かれて、僕らここからなんか先に進みましたっけ?という気持ちになるな。火の鳥はこれと未来編が好き。こっちのほうが好きだけど。


明日はわりと暇なはず。午後ちょっと出かけるかも。


0207

自宅で仕事。今日は比較的余裕のある日だったので、開発完了したばかりのプロジェクトをXcodeGenでリプレイスする努力をしていました。基本的な設定は自宅でやったのと似たような感じでよかったけど、Code Signing周辺はまだ試していなかったので、そのあたりは手探りで。とりあえずビルドに通るところまではできたので、諸々の説明を書いたり手順を整理したりしてレビューしてもらおうと思う。でも正直こんなのレビューどころじゃないよな。ビルドできてるしぱっと見動いてるから、大きな誤りはないだろうと思う。

夜は趣味のコードを書いてた。WebAPI呼び出しを全部Promiseにして、初号機とほぼ同等の機能を実現した(はず)。こっちの方がずっと綺麗でいいね。メソッド切り分けなどをいい感じにしてもうちょっとViewとViewModelを分離させたい(var bodyはViewだが、struct自体はViewModelだと理解している)。
次は一旦サーバーサイドに戻って、きちんと整ったエラーを返すようにしたい。そうしたらアプリ側はエラーをハンドルできる。ここまでできたら二号機は終わりだろうか。三号機は不要?


明日はちょっと忙しい。髪を切りに行ったりする。この週末は大変だぞ。


0206

仕事は何してたっけなあ。なんか最近は仕事終わってから寝る前にもコードをいろいろ書くので仕事で何やってたかが思い出しづらい。単なる加齢の可能性はある。
ああそうだ、勉強会資料を作ろうと思ってちょっと着手したんだけど、リアクティヴプログラミングってなんのためにあるんでしたっけ、という疑問に自分がうまく答えられないことに気がついた。いやまあ、何ができるかとかはもちろん知っているけど、これでないとできないことってなんかあるんでしたっけ……みたいなところで詰まる。もちろんRxのほうが表現力はほぼ純粋に高いのだから、そういう例はいくらでも構成できるだろうけれど、現実で使うことがどの程度あるかというと、怪しい。すくなくとも普通に非同期WebAPIを呼び出すだけならPromiseで足りるし、そのくらいのほうがフットワークが軽くていい。なのでそういう「動機」ベースの説明をするとよくわからなくなりそう。まあ、Combineって追加されたんでどう使えばいいですかね、みたいな「機能」ベースの説明をして、「あ、そうそうこれはRxとだいたい同じですね」みたいな感じのことを言えばだいたいいいかなあ。その後で「こいつ思ったほどSwiftUIとなじまないですね」という話をするんですが。

夜はコードを書こうとしたんだけど、なんかXcode11.2の不具合のせいで思うように進まなかった。11.3だと問題ないらしいんだけど、11.2までのSwift Package ManagerはなぜかBuild Configuartionが"Debug"か"Release"のどちらかの名前であることを前提しているらしくって(いまだに信じられていない、そんな狂った実装があるか?)、そこから逸脱するとうまく依存関係を読み込んでくれないらしい。仕方がないのでXcodeをアップデートしているが、遅いのでだるい。
暇だったのでSwiftLintとかSwiftGenを導入してみた。こいつは所詮試作機なので別に必要ないのだけど、まあ設定とかはいまのうちに作っておくと使い回せそうだしね。


明日は自宅で仕事。ちょっと余裕ありそうだから、仕事のプロジェクトもXcodeGenにできないか試してみようかなあ。


0205

今日は自宅で仕事。でもコードはほとんど書いていない。リモート勤務制度のトライアルが終わりつつあるのでその結果報告をスライドにまとめた。事前にアンケートをとっておいたからそれを貼るだけなんだけど、なんかスプレッドシートの使いかたに不慣れだったので手間取ってしまった。あとなんか円グラフ大好きな人みたいになってしまったけど、まあアンケートの集計ってそういうもんだよなという気もする。やれやれ。

夜は趣味のコードを書いていた。とりあえず試作機第二号もAPI呼び出しを行うところまでできてきたんだけど、Google Sign-InのSDKはObjC対応の関係もあってか単なるデリゲートにもNSObjectを要求してくるのでいろいろ難儀した。最終的にはそれ用のクラスを作ることになったけど、まあこれもある程度は仕方ないよねと思う。この先はクラス間の依存関係をどう整理するかを考えていかないとな。


明日もまた資料作ったりしたら終わりそうな気がする。やれやれ。まあ案件状況は落ちついている時期だしな。そういえばリニューアル案件のキックオフのために準備をしないといけないんだった。なんとしても綺麗に書くぞという強い気持ち。


0204

今年の恵方は「過去」です。みなさん過去を振り返りながら海苔巻きを食べましょう。


仕事はなんか打ち合わせとかしてたら終わった。打ち合わせは今日はちょっと長めだったので疲れた。技術的な話題と、すこしのライブデバッグ手伝いなどをしたので、まあ役には立ったと思う。疲れたけど。

夜はまたXcodeGenをいじっていた。だいぶいい感じのテンプレートが作れた気がするので、ちょっと改変して会社に持っていったら喜ばれるかもしれない。テンプレートをインポートしてちょっと手を加えるみたいなこともできるようになると、プロジェクト間で共有できて効率化できるかも。そのためには多少作業フローに手を加える必要が出てくるだろうが、ちょっとの変更で問題が解決するなら安いものだろう。
コーディング自体はあまり進んでいないけど。PromiseKitの導入まではやった。試作品第二号なのでもうちょっと実践的なコードも書いていくと思う。明日は第一号では雑にやりっぱなしだったログイン周辺を再設計するところをやりたい。


明日は自宅で仕事です。たぶんなんか事務的な仕事が多いんじゃないかと思う。WWDCのCombineの回を観る時間とか取れるといいんだけど。あと時間あったらLT資料を作り始めたりもしたい(まだだいぶ先だけど)。


0203

前にもこの話をしたかもしれませんが、節分が二月三日固定なのって実はこの四十年間くらいだけのことで、来年は二月二日になるらしいですね。そういうことってあるんやねという感じだ。


仕事はなんかまあ不具合対応とかしてた。時間があったらXcodeGenのこととか調べたかったけど、なんだかんだでそういう時間は取れなかった。やれやれ。

夜はXcodeGenの設定を詰めてた。なんとか一通り形になるところまでできた、ような気がする。まだ細部はいろいろ雑だけど、とりあえず動かせるっぽい。なのでこれは一旦打ち止めにして、API呼び出しをPromiseKitにするところとかをやろうかなあ。


明日は打ち合わせに行ったりします。あとはなんか事務作業とかやらないとだめかな。やれやれ。