昨晩はあのあとお酒を飲みつつRailsのことを調べたりしましたとりあえずいろいろやってJSONをPOSTしたらメールが飛ぶってところまではできたのでそこで寝ました


今日はぼんやりしていますRailsのやつもちょっと作業したけれどYAMLで通知設定ファイルを書いてそれに合致するものだけ通知する機構とあとメール送信を非同期でやる機構と非同期化は将来的にSlackのwebhookにも飛ばしたいからですがまあメールも非同期でやって損はないでしょうということで一応動いたのだけどworkerが増えるのは面倒だなと思いますまあデプロイのことはあとで考えればよいでしょう会社の人に助言を求めてもよいかもしれない


微妙に具合悪いけどお酒飲みたいからちょっと飲むと思いますあと今夜はSwift書きますRails飽きたゲームもしたいかも

昨晩も早めに寝たおかげか今日はわりと具合が戻った感じがありますそういうわけで目一杯お酒を飲んでいますでもこれ飲んでるときの限界まで飲んでしまうとあとでしんどいことが知られているので非自明なセーブをかける必要がある


お昼から仕事ずっと気がかりだったリファクタに手をつけてどうにか倒しましたでもほかに進捗ないのでちょっとアーという感じ毎日進捗が可視化されるのはプレッシャでもあり心強さでもありでもやっぱりこういう局面ではプレッシャになりますちょっと遅れてるしねアー


夜は中退した研究室時代の同期の追い出しコンパに参加しました率直に言って会社の飲み会よりずっと楽しいと思ったけど年齢層は案外たいして変わらないのよね
人間は置かれた環境によってどのようにでもなり得てある環境で典型的であることが人間にとって普遍的なことであるとはまったく限らないという話なのでしょうそれは抗い得る種類の力学なんだろうか僕はどちらかというと今日話した人々のようでありたいと思う

ところで二次会で話し込んでいたら終電を逃しかけて肝を冷やしました一緒に居た同期の機転で都営地下鉄で迂回することで事なきを得ました大江戸線の奇妙な位相構造に翻弄されてまた逃しかけましたまあ逃したら逃したで同期と朝まで飲んで楽しかったのかもしれないけれど


さて今夜はもうちょっとだけほんとうにちょっとだけよお酒を飲みつつアニメを観つつちょっとコードを書こうと思います自作コレクションビューのことも気がかりなのだけどセルの位置計算は現実的な算法がまとまったので書けそうですそれより社内のQiita:Teamから適切な通知が飛ぶ仕組みを作りたいのでそれをやりますとりあえずはRailsでサクッとできると思うので練習がてら

昨晩は艦これアニメ観てさっさと寝ました今夜もそうすることで体調を維持することができないかと目論んでいます
timelineの表示についてもちょっと考えたけれど高さ可変のCollectionViewを作るのって思いのほか面倒なのですね途中のセルの高さを全部キマジメに計算するのは避けたいのだけどそれで整合性が維持できるのか……考えどころです

既製の道具がどんな風に動いていているのかを理解して再現できてやっとそこにあった限界がこの宇宙の限界ではなくその道具の限界にすぎないと知ることができるのでしょうそして僕はようやくその足許までたどり着いたと烏滸がましくも思いだから乗り越えて見せようと思うわけですアラウミートゥデモンストレイト


お昼から仕事地味目の仕事がサクッと終わったけどCoreDataとまた喧嘩をしていたので進捗はさほどはかばかしくないCoreDataっていうかこれはCocoaかSwiftが悪いなSCNVector3やSCNVector4をNSValueに格納するとそういうコンストラクタも提供されているのですが型エンコードが謎の値"t"になります普通はたとえばCGSizeだと"{CGSize=dd}"みたいな型名+内部構造を表現する文字列になるのだけどそうなるとNSKeyedArchiverでNSDataにするとかに失敗するようですそういうのほんとやめてよねー仕方ないので[Float]としてNSKeyedArchiverに投入しました


そういえば艦これアニメ赤城さんはあんな夢を見るし長門戦艦さんはあんなことを問うけれどそこにどんな意図があるのかはよくわからないし余白は永遠に足らないのでしょう
でもやっぱり史実を意識する必要なんてなかったんじゃないのとは思うそもそもあの世界における僕らの知っている内容の史実って一体どういう存在なのとかが結局わからないままだしそれでも僕ら視聴者はその史実をだいたい知っているから赤城さんの不安のことがなんとなく理解できるけど艦娘的にはぜんぜん謎の妄想なのではとも思うでも長門戦艦さんもなにかしらの宿命めいたものを感じているようだったから案外あるあるネタなのかもしれない
でもやっぱりあの世界の日本史の教科書が気にはなる冒頭で明言されている通り彼女たちはかつてのあの世界の艦船と全単射のある存在でありであるからにはあの世界の艦船がどんな結末を迎えたかについて知ろうと思えば知ることができるはずなのだあるいはそれがすべて逸失してしまうほどの戦禍がーーこのあたりの事情をなにも決定的に明らかにしないのはちょっとがっかりする
でも大和さんの出撃はちょっとかっこよかったですやっとだもんね誰よりも期待を掛けられていながら誰よりも悔しさを知っている君
あと赤城さんがあんなにいろいろ心配しながら結局あっさり慢心に陥ってしまうところは抗えない宿命というものを強く感じていいなあと思いましたそして赤城さんは自分に対して深く深く失望するのですそうだよそうこなくっちゃ


さて髪が乾いたら早く寝ようと思うけどそれまでは可変高さCollectionViewクローンのことを考えましょうイェイ

昨晩はNSScrollViewのことをいろいろ調べましたAppKitのクラスことごとくUIKitの対応物が邪魔をして検索が難しいし情報が少ないとりあえずどこに何をおいて誰が何を管理すればいいかはだいたいわかった気がするけれど座標系が上下逆なのはかえって好都合だといっても本当にただ反転するだけなので手間が減るわけではないけれど
そういえばテスト用アプリがときどき短時間フリーズする件どうもビューのどこかがなにかをしているらしいのでこれはビューを取り替えれば直る気配がありますなので放置とはいえメインスレッドがアレするだけで受信スレッドが止まるのは不可解な気もするPSC分けてるんだしそれともどこかでメインスレッドを経由しているのだろうか


お昼から仕事どうも能率が上がらないなと思っていたら夕方からなんだか具合が悪くなってしまいましたウェー暖かくなってきたと思ったらこれかいな


さて具合が悪いので早く寝たいですが髪が乾かないと寝られないし艦これアニメもあるのでそれまでは起きてますウェー

昨晩はCoreDataのマルチスレッディングと格闘しました削除通知からの処理を非同期でやっていたのが悪かったらしくよく考えると当然だそこを同期にすると落ちずに動き続けるようになりましたやったね
ただしばらく動かしているといきなり数秒固まることがあって謎ですなんか優先度が間違ってるのかなとりあえずJSONパースのスレッドを優先度下げてみたけれど

あとUIのこともちょっと調べましたAppKitのUIはあんまり気の利いたものがないらしくすこしずつ新しくはなっているようだけどやっぱり根本的に古い結局自作することになりそうUICollectionViewのクローンをやっている人はいたのだけどそこまでの柔軟性は不要なのと挿入削除のアニメイションがないのとで結局それを参考に自作かなCVDisplayLinkというCADisplayLinkの対応物があるらしいのでこれをベースにアニメイションすることになるでしょうそのあたりは最近仕事で似たようなの書いたしCollectionViewとしてのセルの再利用もなんとなく方針はわかってるしあとは挿入削除のアニメイションかなあレイアウトの一般性を捨てつつちゃんと考えれば単純にできそうだけど


お昼から仕事いろいろの状態管理とかプッシュ通知のハンドルとかUIとかそろそろデザイン適用のフェイズが近いけどすでにできたパーツを組み合わせるだけの作業が思いのほかしんどいことは最近わかってきたのでまだまだ先は遠いしかし納期はもうそんなに遠くないううむ


今夜は上述のUI検討試作まで入れるかな

昨晩はCoreDataStackを書き直しました一応動いてはいるのでこれでMagicalRecord依存性をほぼ追い出すことができます実はsqliteファイルの場所とかキマジメに計算するのが面倒だったからそのへんのヘルパメソッドだけまだ流用している目論見通りというほどはっきりと意図していたわけではないけどスレッド絡みの見通しが改善されて前より素直に動くようになってくれましたやったね
だけどまだちょくちょく落ちます要調査それにそろそろUIの検討を始めないとねおそらくNSTableViewそのままは使えないんだけど自作が現実的かどうか最近仕事でUI自作することが多いのでちょっと慢心している


お昼から仕事あいかわらずチケット化されていなかったタスクがモリモリ出てくるので進捗は芳しくないともあれ作業としては順調だったからそれで喜んでおくしかない
こういったことがなぜ起こるかというと設計をちゃんとやらなかったからなのよね言い訳としては開発とだけラベルされた期間に設計までやることを考えてなかったって話でいやこれはぜんぜん言い訳にならないけれどうーんじゃあ教訓
とはいえ書き始めてみないと見えてこない課題ってのはたくさんあるから結局事前にどのくらい見込めばいいのかよくわからないのだけどそれにしたってまず枠を取れという話だし少なくとも今回の僕の見積もりはぜんぜん足らなかったということは確実に言えることであろうフムン
あんまり関係ないけどモチベイションの残っているうちにCODE COMPLETEを読めという話なのかもしれないこれは関係のない経路で思ったことだけど


さて今夜もCoreDataせっかくゲーム買ったのに遊ぶ時間がないじゃないかしかし悪くない日々であろう数学も最近やってない

昨晩は何したのだっけFRCクローンやってたけどやっぱりまだデッドロックするんだっけやっぱりMagicalRecordのStackに上乗せであんまり繊細なことをしようとするのが間違いなのではって気がするのでStack作り直します今夜こないだHighPerformanceCoreDataで見たPSC二台構成を試してみようと思うけど準備が大変そう


今日はCities:Skylinesという街作りゲームで遊んでいましたけっこう楽しいこの手のゲームは好きなのだけどわりとすぐ手が回らなくなってしまって市民たちにごめんねごめんね無能な為政者でごめんねと謝りながら遊ぶことになります今回も交通渋滞が解消できなくて市民の皆様にはご迷惑をお掛けし誠に申し訳ありませんでしたトロピコのときもそうだったけど渋滞って難しいよね地下鉄とか使えばもうちょっとよくなったのかなでも序盤はお金がなくてあんまり計画的に街作りできないしやっぱりむつかしい資金無制限モードとかってないのありそうだけど


さてお風呂入ったらCoreDataの相手をします

昨晩は結局ずっとお酒を飲んでいました飲んでるときはそうでもなかったのだけど明け方にすごい苦しかったこないだもそういう感じだった気がするし若さが失われつつあることの一側面なのかもしれませんやれやれ

あとTwitterクライアントの実験をちょっとしましたFRCクローンだいたいできてArrayControllerに頼らずNSTableViewにツイートを流せるようになったのだけどどうもマルチスレッドの闇に落ちているらしくときどきデッドロックしますなんじゃこれそもそも通知がうまく受け取れないせいでrootSavingContextを監視しつつdefaultContextを操作みたいなことをしていて不正解感が高いしかしどんな構成が正解なんだろうか……


今夜ももうすこしそのあたりを調査しますIDのキャッシュじゃなくFetchBatchSizeを指定しつつオブジェクトのキャッシュを持つべきなのかもしれないフムン

昨晩はFetchedResultsControllerの再現に取り組んだのだけどいまいちうまくゆきませんでした二分探索とか配列の挿入は十分高速にできたのだけど配列の挿入が実はボトルネックになるのではという危惧があったのだけど杞憂でした逆に直感に反するMagicalRecordとの相性がよくないですうーんあのStackを棄てるべきときが来たのかもしれませんいやNotificationからのマージでやる限り逃れられない問題っぽいけどあとなぜかクラッシュする
とはいえ二分探索と挿入が十分高速にできたのなら本質的な困難は解決したと言えるでしょうあとは些細な問題だいまのところは


お昼から仕事設定画面系のつまんない作業をサクッと終わらせるつもりがなにかと手間取ってしまいましたうーむこういうことがあるから作業工数の見積もりは難しいというよりこういう事態の存在は作業工数の見積もりという概念自体の信頼性を揺るがし得るまあ平均化できるという仮定が有効ならば十分か

あと月次報告会のあとに打ち上げ何のだがあってお酒を飲みましたひさびさに上機嫌に飲酒しました


さて今夜は何をしようお酒飲んじゃってるしこのままもうちょっと飲むつもりだからあんまり有意義な作業はできないと思うけれどFRCクローン絡みかしらね

人の数だけ世間がある


昨晩はCoreDataの本を読んでいました本の中でFRCクローンを作っていたけど本物ほど便利ではなさそうでもあとで考えたら状況を限定すれば十分実用的なものに改良できるように思いました具体的にはセクションを無視するのとIDソートに限定する今夜やってみようかな


お昼から仕事用意したものを繋ぐだけ〜と思っていたら案外と手間取ってしまったりCoreData絡みでデッドロックを踏んでしまったりこれは前からこうだったのに今日気づいただけっぽいですがデッドロックの件これはOSの不具合なんじゃという気はしつつだからって無視していいわけでもないのでいろいろと実行順序を調整してみたりで一応は対応できましたでもこれ昨日くらいからずっと思ってるんだけどもっとリファクタすべきだよな同じ画面に出す同じデータを別々に取得している一箇所に纏めたほうがあらゆる点でよいしかしそんなことをする時間があるか……

なんだかだんだんとそれっぽくなってきたって毎日言ってる気がするけどデザイン適用とか全部ほったらかしてるから最後死ぬ気がするなまあそれは単純な手数の問題だからそれほど深刻な状況ではないと思うけれど


さて今夜は上述のCoreData監視を試します