diary

1116

昨晩はなにしてたっけ。Webフロントエンドとバックエンドでやらなきゃいけないタスクを列挙して、優先順位で整理したのだった。趣味プロジェクトなので誰も管理してくれないから、こうして自分でちゃんとやっていかないとすぐ進まなくなってしまう。とりあえず優先度の高いタスクがいくつか見つかったので、そこを潰していくことにした。


今日はなんか風邪っぽい。喉が痛いし気怠い。気怠いとコードを書く気力が出なくて困る。いろいろ考えごとはした。招待システムのこととか。現状の仕様では人間は一つのチームにしか属せないので、別のチームに入っている人に招待が届くとチームを移るか断るかしないといけないんだよな。うーん、ただじゃあ複数チームを許容するとなるといろいろな複雑さがもっとすごいことになると思うので避けたくて、仕方なくこうしている。将来的にはもっとうまくやれるといいんだけどな。

今夜は招待システムを動かすところまでできたらうれしいんだけど、またVuetifyの未知の機能と闘っているうちに終わりそうな気がする。具合悪いから早めに寝たいしな。


明日は暇。体力を回復するのに使いたい。あわよくば風邪がなおって欲しいが、そんなぜいたくはもう言わないさ。


1115

昨晩はDjangoのコンテナをVPSにデプロイして、Let's Encryptで証明書とったりしました。いやー、こういうときフルDocker化しておいて良かったなあと感じますね。まあ証明書新しく取ることなんてそんなしょっちゅうあるわけではないんですけども。


仕事はまあ普通。ちょっと余裕あった、けどなんかXcodeのバージョンを行ったり来たりしているうちに時間が過ぎ去ってしまった。Swiftのバイナリの安定性のことは詳しくないんだけど、5.0時点ではまだ完全に安定というわけではないので(ABIは安定だけどまだ完全にバイナリ互換というわけではない?みたいなステータスだった気がする)、結局Xcodeが変わるたびにCarthageが走って、そしてそれがとても遅い。Carthageはどうしてあんなに遅いのか。githubからダウンロードしてきてビルドしてるだけのはずなんだが。そしてその点では結局CocoaPodsと大差ないはずなんだが。
Carthageは、ポストCocoaPodsになると期待されていたけれど、結局完成する前にSwiftPMがXcodeでサポートされるようになってしまったので別にいらなくなってしまった気配がある。アクティヴにメンテナンスされているライブラリはだいたいSwiftPMに対応しているし。まあパッケージマネージャを作るのってたぶん想像するよりずっと難しいんでしょうけど(依存関係の解決とかすごく大変だと聞いたことがある)。

夜はまたTypeScriptを書いたりしていた。画像の同時並行アップロード機構は、async/awaitだけだと書けなくて(for文とかで無理矢理書いてしまうと直列になってしまうようだ)、なのでそこだけPromise.all()を使うようにした。だいたいいい感じに動いたのでうれしい。ただエラーハンドリングをまじめにやっていないのでそこはあとで考えないといけない(まあ単なるアップロードエラーなら通知を出してスッと消せばいいように思う)。

やりたいことに対する技術的困難はおそらくほぼすべて解消されたので(パフォーマンスのことは一旦無視するけど)、あとは手を動かすだけのフェーズっぽい気がする。こうなってしまうと僕はわりと関心を失いがちなんだけど。それはよくないので、今夜は残りのタスクを書き出して優先順位をつける作業をしようかな。


週末だ!


1114

昨晩は何してたんだっけ。そうそう、Djangoのアプリをコンテナにとじこめて、docker-composeでなんとかするところまでやった。なんかファイルアップロード関係でおかしいことがあったんだけど放置して寝た。


仕事はまあ不具合対応。一応検証期間が今日までだったので不具合を全部倒した。やれやれ、なかなか骨が折れるプロジェクトだった。そろそろ別プロジェクトに重心を移さないとまずそう(なぜか今月中に納品することになっていることを昨日知ったため)。


今夜はDjangoサービスをなんとかVPSにデプロイするところまでやりたい。やれるかは知らない。でもまあコンテナ化に完全に成功したのでもうあとは「やるだけ」でしょう(フラグ)。


1113

風邪気味。というか風邪だなこれ。昨夜はここまで作っていた諸々をDockerに入れる実験とかしてました。Dockerに入れてuwsgi経由でnginxコンテナと接続して似たような表示がされることは確認した。よかった。

仕事は今日こそ見積もりをやろうと思っていたのになんかビルド依頼とか不具合修正とかやってたら結局終わらなかった。明日の夕方までに概算で出すことになってるから明日は本当にそれしかやらない。
Web API接続先が開発環境とステージング環境と本番環境くらいしかない世界観だったら、なんか適当なビルドフラグで#ifとか書いて分岐したらいいんだけど、どうもそうではなくてなんかドンドン新たなサブドメインのテスト用環境が出てくるとなると、これはそもそもサブドメインを引数にとるのがいいんじゃないかという気がしてくる。気がしてきた。そんなの事前にわかったら苦労はないんだけども。


明日はインフルエンザの予防接種。仕事はまあ見積もり。


1112

昨晩はなにしてたっけ。なんかそうだ、画像アップロード機構のプログレス表示をいい感じにしようとしたら二時間くらい溶けてしまったんだっけ。あとドラッグ&ドロップもうまくいっていない。うーん、そういう見た目の些細なことに時間をとられて重要な作業が進まないのは好ましくない状態なんだけど、でも見た目がつまらないとどうにもテンションが上がらないという問題はあるんだよなあ。うーん。


今日は自宅で仕事。不具合対応はそろそろ終息……と思っていたがけっこうぽつぽつ上がってくるね。まあ明日くらいにはなんとかなるんじゃないかな。ならないとまずいし。やろうと思ってた見積もりタスクはできなかった。明日ぜったいやる。

夜は画像アップロード機構とGraphQLとDjangoのモデルとを接続する作業をやっていた。Djangoのabstract modelは思ったほど行儀の良い振る舞いをしない(たぶんテーブルを別々に作っている)。この「思ったほど」はCoreDataを念頭に置いているけど。いや、Django的には継承関係にあるわけだから、単にGrapheneが気が利かないって話なのかな。
あとそろそろコンテナとして動かせるようにいろいろ仕組みを整えたりしている。今夜のうちになんとかコンテナ化されたnginxと連携できるくらいまで育ってくれるとうれしいんだけど、それは無理というものかもしれず。そこまで行けたら次はpostgresとの接続かなあ。でも、よく考えるとアレなのよね、createsuperuserする仕組みがない気がする。どうしようかな。なんかコンテナにアクセスして直接叩く別のサービスがいればいいのか?(だってDBにさえ触れればええのでしょう?)


明日も仕事。しかしやはり週に二日を自宅で仕事できるってのはいいですね。お昼にスーパーに行くと何かと好都合だし。


1111

あずにやん、いや、中野梓さんももう27歳なんですね。生年月日の設定されているアニメ美少女に対しては、どうもこうして歳を数えてしまう癖があります。まあ、そんなことを言い始めるとエイラ・イルマタル・ユーティライネンさんなんかはそもそもご存命かどうかも怪しいわけですが。それはそれ、これはこれ。


仕事はなんか巨大な機能改修の見積もりなどをしていました。見積もりはまだしてないか。とりあえずすごく大雑把な要望が来たので何を固定しないと見積もりできないか、そしてそれらをどう仮定するか、について相談する会議をしました。これさあ、機能追加とか改修とかじゃなくて普通にリニューアルでしょ……という気持ちにはなる。明日あたりとりあえずすごい概算でもしてみるかなあ。こんなんすごい概算以外なにもできないけど。

あとは不具合を直した。僕はこのコードのこの箇所については本当にもう一分の隙も無く「狂っている」と断言するんだけど、まあ根拠は何と言われると何も言えないなあと思う(何もってことはないだろうけど)。難しいよね。「1+1=3だ」と主張する人間に対して何が間違っているか説明するのって実は難しいと思う。プリンキピア・マテマティカを持ち出せば勝てるんだろうか?僕たちは「ただ」規則に従っているのに!そんな説得になんの価値が?(これなんの話だろう?僕は何を説得しようとしているんだ???)


明日は自宅で仕事。不具合直すのはけっこう落ちついてきたんで、次プロジェクトに着手とかするといいかなあ。あとはAWS IAMの本を読む時間とか取れるといいなと思うんだが。


1110

昨晩はなにしたんだっけ。結局あの後わりとすぐ寝たような気がする。


今日は夕方近くまでぼんやりとインターネットばかりしてて、夕方からこれではいかんと思い立って画像のアップロード機構をなんとかした。STS経由でS3に直接PUTできる署名付きURLを発行してAPIが返し、Web側はそこにaxiosで投げ込む。こうやって書いてみるとまあ簡単じゃんという感じなんですけど、コンポーネント作ったりするのにけっこう手間取った。あとドラッグ&ドロップは検索して出てきたライブラリが「すごく便利だし何でもカスタマイズできそうなんだけど、僕好みにカスタマイズするのがすごい面倒そう」という感じだったので、結局自作しました。別にそれ自体はそんな難しいものじゃないし。ただ単にWeb側のそういう技術に明るくないってだけで。
とりあえずAWSに画像を上げることとVueコンポーネントを継ぎ足すことはできるようになったのでかなり満足しています。次はちゃんとDB上のモデルに紐づけるためのバックエンドの改修かな。それはまあ、明日以降。あと並べ替えにも対応しなくちゃいけないよね。


明日は仕事。何するんだっけな〜。今夜はもう寝ます。


1109

昨晩はなんかいろいろ試しているうちにGoogleアカウントでサインインすることに成功していた。とりあえずGoogleアカウントからDjangoのUserを作ることができて、そしたらまああとはTokenを発行したりやりたい放題なのでいろいろ捗る。これでバックエンドで解決したい問題の2/3くらいは解決したと思う。やったぜ。


今日はだいたい寝てた気がする。ちょっとだけコード書いたり調べごとしたりしてた。今はS3のバケットにアップロードする権利を一時的に与えるための方法を調べている。結局GraphQL APIでバイナリをアップロードするのはプロトコル的にもサーバー負荷的にも現実的ではないので、直接S3に上げてもらいたいんだよね。AWS STSという仕組みがそういうテンポラリな認証情報を提供してくれそうなのでそれを試している。いま。

あと「スイス・アーミー・マン」を観ました。いやあ、シュールギャグ映画なんですけど、でもまあやることはやってきたと思うし、映像表現の可能性を十分に生かしていると思う。しょうもない話なんですけど、でもいいなと思った。しょうもなさにもいろいろある。


明日もコードを書くと思う。AWSへの認証の件が今夜片付けばうれしいんだけど。そしたら本格的にステージング環境にデプロイすることを考えようと思う。