diary

0131

今日は仕事の前に耳鼻科に行った。とりあえずしばらくはアレルギーの薬で様子を見ましょうかという感じになった。個人的には抗生剤長期投与とかで根絶やしにしてほしい気持ちはあるけれど、それはそれでリスキーなのも知ってるし、まあ様子見ですねという気持ち。

仕事は不可解なクラッシュの対応。OSを巻き込んで落ちるやつなので、いろんなプロファイラでいろんな数字を見ては理由を考えてたんだけど、最終的には「よくわからないがビューの高さが小さすぎると落ちるらしい」に落ち着いたのでそこだけレイアウト制約をつけてなんとかした。本質の追究よりも現象の観察のほうが役に立つ一例。

夜はYの書類仕事を手伝っていた。こういうの、たぶん何らかの装置からのアウトプットなので、こちらがちゃんと処理系を書いたら自動で済ませられるのではという気持ちにはなる。そのコストを誰も払わないのはわかってるんだけど。あれでしょ、学部一年の英語の教科書の(ネットで出回ってる)和訳が雑なのと似たような理由でしょ。どうせこれを作った人たちはもうこれに関心はないんだ。


明日はお休み。SwiftUIのディープリンクについて引き続き調査をしたい。まあ最悪諦めてもいいけどさ。


0201

今日は大して何もしていません。何かしたっけ。SwiftUIのNavigationLink回りのことを調べていたけど、こいつやっぱりバグってるんじゃないかなあと思う。Xcode11.3だとシミュレータでisActiveがちゃんと動かない問題が知られているようだし。とりあえずtagとselectionによる画面の切替は動作していないように見える。厳しいなー。実機では一度も試してないからわからないけど、実機でもこういう感じだったら、ディープリンクへの対応そのものが厳しくなると思う。もうrootから全部入れ替えてしまえば状態の整合性という点では問題ないのかもしれないけど。そしてそれはそれでまあいいよな。ちゃんと動くなら。
テンションけっこう下がっちゃったんだけど、まあめげずに違うことを調べるとかしましょう。ViewModel不要説とかさ。


明日はほこらんさんとへぼさんとn_tomさんと鍋を食べに行きます。それまではコード書いてよう。あとノートパソコンを郵便局に持っていってリサイクルしてもらわないと。


0202

今日は…… まあ午後まではボンヤリしていたような。ああ、いろいろ考えてたけど全部やめにしたというか、考え直しにしたんだった。具体的には、非同期処理のあれこれをCombineでやろうとしていたけど、これはPromiseの仕事であるべきだという結論になった。CombineはCombineで、たくさんの値が流れてくるストリームに対しては適切なんだけど、単に一度きりのAPI呼び出しを受ける手段としてはオーヴァスペックなんだろう。これらをうまく組み合わせる手段について、試作機第二号で試そうと思う。今はXcodeGenの初期設定について考えているところだけど。

夜はアンキモとか白子とか牡蠣などが入った「痛風鍋」を食べた。味が濃厚だな〜という感じのやつ。味とはあんまり関係ないけど、ちょうどいいくらいの満腹感を得られたのでとてもよかった。


さあて、明日はまた仕事ですね。不具合対応をちょっとやるんだけど、それより、XcodeGenを使ったプロジェクトファイル自動生成の道を探りたいと思っている(なぜなら僕の趣味開発とも接続するから)んだけど、そこまで時間があるかなあ。これ、思ってるよりはたぶん険しい道なんだよね。一度準備すればいろいろなところで使い回せる資産になるんだけど。


0203

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


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

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


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


0204

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


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

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


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


0205

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

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


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


0206

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

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


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


0207

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

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


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