andante

0306

お昼から仕事画面構造の書き直しの続きとりあえず元の動作+αくらいのことは再現できたしさらなる改善の道筋も見えているのでとりあえず一旦このくらいであとはモデルオブジェクトのライフサイクルの管理をいろいろ検討しました一筋縄ではゆかないけれどとりあえず十分な機構ができたはず
そういえば昨日見つけたリリースビルドでしか発現しない不具合はどうにか解決しましたArray.mapでやると壊れるのでfor-inにしましたうーむ


そういえばなんだか忘れていたのだけど週末ですTwitterAPI叩いたりRedmineプラグイン試したりかなーそういえばメモリリークの件はSwift1.2の不具合であることがはっきりしましたdevforumに最小コードがあったautoreleasepoolがちゃんと動いていないようです
結局データの永続化をどうしようか迷っていますいや永続化だけならCoreDataで文句ないんだけど表示とかのことを考えるとちょっと悩ましいかもとはいえ最初は普通のCoreData Stackこれも最近ちょっと新しい構成の話を聞いたので調べたいけどで普通のFRCで100万件くらいさばけるのか試してからかしら

Redmineプラグインは会社の社内ツールを便利にしたいよね〜って話が発端でまあ優先度は低いけどやっとくとなにかとよさそう最近は自動化と可視化と知識共有がテーマです

0305

昨晩はTwitterのストリームを簡単にパースしましたこないだ書いたJSONMapperに投げ込んだらまあまあ動いたけどそういえばこいつは任意属性の子属性の必須属性が存在しないときに変換はしつつエラーを返すんだなってことと必須属性が存在しなくても残りを全部確認するのは無駄だよなと思ったのでこれはそのうち直します特に後者いろんな種類のオブジェクトが流れてくるときに判別するためにいちいち全属性探してたら時間がもったいない

一応動いてはいるのだけどどうもメモリリークがあるので困っていますこれはなんか行儀の悪い方法でマルチスレッドしてるコンソールアプリとして動かそうとするとRunLoopを作るとかで謎が多いから変則的な事が起こっているのか普通に書きかたが悪くて循環参照があるのか切り分けをこれからします今日はもう遅いしそれだけかなあ


お昼から仕事地味目なUI作りと画面遷移コンテナの書き直しコンテナ書き直しのほうはだいたい完了したけどいろいろ同期取ったりするところは未完成明日やろう

ところでリリースビルドの時だけ起こる不具合が見つかったので地獄のような気分ですどこが壊れているのかはわかったけど直しかたはまだわからないリリースビルドは冗談抜きで数分かかるからデバッグがほんとうにつらい

0304

昨晩はふわっとTwitterのUserStream APIを叩いたらふわっと結果が返ってきたので安心して寝ました一晩放置したところ20MBくらい受信してメモリ使用量は定常状態6MB程度だったのでこれはどうやらうまくいっているらしい今日はパースしますCoreDataに入れるとかはまた別に考えないとそもそもCoreDataなのか未定でもまあ一番手軽だしなあとどう抽象化するかとか


お昼から仕事ぐるぐる回るインジケータとかカスタムダイアログとか通信中にぐるぐる出したりエラーだったらダイアログだしたりなんだかちゃんとしたアプリらしくなってきました


さて今夜は上述のストリームクライアントにパーサを繋ぐ作業かなああいかわらず親不知が腫れてるでも気分はそこまで悪くないや

0303

昨晩はAFNetworkingにOAuthをしゃべらせるところまで書きましたトークン取得ハンドシェイクとかは書いてないけどまあそんなの最後にやればよいのです
今夜はストリームを受信するところができたらいいと思うけど具合が悪いから早く寝るべきのような気もするJSONのデシリアライズはSBJsonってのを使うのが適切らしいストリームデータに対応しているのだがこれはこないだ書いたJSONMapperと相性がどうかしらね


お昼から仕事ウィザード形式に連なる画面遷移状態の受け渡しが本当にだるくてオブジェクト一つに纏めたけどそれでもUUIDの受け渡しが八回くらい発生する八回代入を書いているとはいえコードがアレなだけで処理としてはグローバルに置くよりはマシだと思う
ちょうど関数プログラミングの本を読んでいるのでこういうときモナドがあるといいのになと思うこの場合はNavConに状態を持たせるのがいいのでしょうかそれはそれでやっぱり気味が悪い気もする状態を受けることは明示的であってほしいのよなだからやっぱりモナドか


ニューラルネットワークを使ってものの集まりの中から部分集合Aを判別することに成功したとするしかしこのときこのニューラルネットワークのどこを見てもAのA性と本質的に関係あるような部品は見つけられないこのことは証明という考えかたと正面から対立している
証明できないものにどこまでを任せられるかが今後の人類の課題だろう自動運転車だったり医療行為だったり責任を負わせられるかどうかという話でもあるしかし負わせられないのなら人間が代わりに負うことになるのならそれは結局人間がやったほうがいいという話になるだろう人間が負える責任の量には限度があるあるいは責任という概念は耐用年数にきているのかもしれない

0302

昨晩はOAuthのいろいろを移植しようとしていましたが結局あまり進みませんでしたまあゆっくりやればよい


お昼から仕事今日は比較的UI寄りの作業を進めましたテーブルをがりがり作ったりとか入力させたりとかキーボードを避ける機構は昔考えたのを移植すればいいかしら画面回転とかしないしあとUnwind Segueがなかなか便利だったけれどiOS8.0で壊れてるらしいから確認しなきゃいまのところ動いているのがなおさら不気味だ


さてちょっとだけ具合が悪く具体的には親不知が腫れていますうーむ

0301

昨晩はJSONMapperによる書き替えを終わらせてあといくらかリファクタリングをしましたでももうちょっとやりたいよねもっと共通化できるはずそうするメリットがあるかはともかく
どうでもいいけど成功失敗コールバックをcompletionに統合したのは失敗だった気がするよな失敗はすっごいシンプルで定型的だから失敗だけ隔離することにはメリットがあるまあこれを直すこと自体はそう難しくないし暇になってからやろう

あとObjectiveCランタイムを触ってNSUserDefaultsへのアクセサを動的生成するのもいろいろ試したのだけどやっぱりC構造体の一般的扱いが無理そうですこれはobjcの時から無理だったけどさらに無理になってる感じがある構造体は値渡しなのでキャストでどうこうできるわけではないし可変型をどうこうするのはちゃんと調べてないけどSwiftとobjcの互換性の問題でダメそう結局一般に扱うのは諦めるほかなさそうですうーんまあ僕はこれそんなに使いたいと思って作ってるわけじゃないのだけどもとはいえ別に誰に頼まれたわけでもなく単に練習問題として解いている


今日はTwitterクライアント作る計画のためにいろいろ調べごとしていましたOAuthのためのいろいろは昔自分で書いたものがあったのでそれを参考にすればよさそうAFNetworkingにどのくらいそのまま載せられるかはまだわかっていないけれどトークン取ってしまえばRequestSerializerでどうにでもなりそうそれより問題はUserStreamへの対応でこれはSessionManagerを継承していろいろオーヴァライドする必要がありそうそれより標準で対応していない理由が気になる素朴なアプローチではうまくゆかないのだろうか

夕方は美容室で髪を切ってもらいました雑談がしんどかった趣味とかありますかって言われていや〜本を読むのとかまあまあ好きですけどなんかこういうのって趣味感ないというかそのために外出したりコスト払うわけでもないから話題にもならないし使えないですよね〜みたいな話をした途中で思い出したけど僕は数学を趣味にしようと思っていたのだしあと最近どう見てもプログラミングが趣味になりつつあるなと思ったまあでもいずれにしてもこれ話題として不適切なのよね共感のしようがないから


なんか頭がぼうとしているので早めに寝たほうがいいかもしれませんやれやれこの週末は多少具合がよかったと思ったらこれか

0228

昨晩はJSONのマッパーを書いていましたとりあえず必要なものは作れたのでよかったというか僕の気分としてはかなり便利に使えるものになったような気がするのだけどいろいろのケースでどう振る舞うかは知らないとりあえず今回の案件では十分だろう

結局APIの応答のスキーマをCoreDataとは分離した上でそのいくつかをCoreDataに変換できるようヘルパを各ことにしたAPIがRESTful?に書かれているからスキーマの大部分はCoreDataにも現れるモデルで書けるこのことは圧倒的二度手間感を生むが同時に変換を容易にする完全な結合はSwift1.1時点ではコンパイラの不具合のため不可能で1.2では修正されていると聞くけれど別にあえてそうすることもないのではという気もするなにが返ってくるかわからないAPIをCoreDataに近づけすぎるのはたぶん不正解でそれを吸収するためにいろいろ気にしなきゃいけないのならそのためにクラスが挟まるくらいどうってことないのかもしれない

今夜はそれに伴う書き替えほぼ終わっているけれどをしますこれでJSONエラーのハンドリングがいい感じにできるようになったので今度はCoreDataのエラーハンドリングをちゃんとしようかな昔書いたヘルパをそのまま使っていておおむねよく動いているのだけどエラーを握りつぶす悪い癖があるというかエラーを返せるようにできていないクラッシュはしないけれど


そういえば美容院の予約を入れました記録によれば九ヶ月ぶりです明日の夕方どきどき

0227

昨晩はなんか不具合直したりしていましたUIがなぜかもたつく件原因に気づくまでけっこう大変だったけどずっと気に掛かっていたので直ってよかった

あとTwitterクライアント作りたいな〜と思っていたののデザインめいたものを考えていました漠然とした雰囲気〜という感じの想像はあるのだけど細部をちゃんと整合させようとするとぜんぜん考えてなかったことに気づくというまあよくあるアレ
それよりまずはCocoaでアプリを作る作法をどこかで勉強しなくちゃいけないそれはまあほぼ純粋にUIの話だけれども


お昼から仕事APIの残りの部分を叩いてそれからホーム画面のUIをほぼ完了させて残った時間でJSONのハンドリングを改善しようとしたのだけどSwiftとCoreDataとは相性が悪すぎてだめでした厳しい結局これはJSONのスキーマを表現するクラスなり構造体なりを別に用意してその上でそこからCoreDataに投入という二段構えをするしかない気がする土日にちょっとそれを模索してみたい

0226

お昼から仕事計算系をがりがりあとUIとの接続をどうにかしましたちょっと進捗挽回できたかしらそのはずだ

しかしちょっとだけ具合がよくない


やりたいことがいろいろあってしかしどれから手をつければ良いか困っているというわけでもない状態悪くないんだけどやりたいことがなかなか減らないのは困る最近はコードを書くので数学が先延ばしになってる$x^3+y^3=z^3$に自然数解がないことを示す手前


艦これ八話長門戦艦さんはああいう一面を持ちながら提督代行業をやっているのどういう気分なんだろうか最初からあんな人だったのだろうか気になる

ところで結局あの世界の艦娘は史実とどういう縁で結ばれているのかいまいちはっきりしないし艦娘も特に触れないしそのくせ史実を元にした冗談を説明なしに挟んでくるの視聴者はいろいろ知ってるからいいけど艦娘同士で会話が通じないのではとか思ういいですかホテルみたいなのは戦艦大和であって艦娘のあなたではないし今のあなたに対してホテルみたいという形容はほとんど意味が取れないのですよ我々はその背景を知っているから理解できるとしても

0225

なぜか指が08と入力しました人類は八月暦を採用しましたというジェスチャ


昨晩はまたObjectiveCランタイムとにらめっこしていましたproperty_copyAttributeList()とかでプロパティのメタデータが取れるのはいいのだけど型がSwiftの配列だったり文字列だったりするとどうもうまくゆかないというかid型と同じでオブジェクトであることしか明示されないこれは困ったなと思う代入時にどうキャストするかという問題もあるしNSCodingへの適合性を代入するまで検出できない問題もあるいやそれは諦めてもいい話なのかもしれないけれど


お昼から仕事まあまあ順調加速度センサをどうこうするコードを移植してそれから集計するクラスとか作りましたよい感じになってる気がするちょっと手癖でGCD使いすぎてる気はするけどでもまあそんなに頻繁に走る処理ではないしdispatch_queueは軽量だってどっかで読んだ気がするし

あと謎の計算ロジックについて調べました大学で物理を勉強したので謎の公式を見るとその模型は本当に妥当なんですかとかその定数は何なんですかとかいろいろなところに違和感が目について厳しいべつに僕はこの理論を理解する必要なんかないのだが自分で信じていない計算を書いて世に出すというのも気味が悪いなと思うまあ書くけど


多くの人たちにとって大学で得た知識というのは昔の思い出のようなもので日々使う道具だとは思われていないような気がする数式が出てくるとやあ懐かしいみたいなリアクションが出てくるのとかまあ僕だってドイツ語見たらそういやこんなのあったねえと言うだろうけれども
なんにせよ僕は数学記号に懐かしさを感じるような大人にはなりたくないなと思う