andante

2020-02

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だと理解している
次は一旦サーバーサイドに戻ってきちんと整ったエラーを返すようにしたいそうしたらアプリ側はエラーをハンドルできるここまでできたら二号機は終わりだろうか三号機は不要


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

0208

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

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


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


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

0209

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

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

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


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