データベースの設計なう
ここのところの作業の中心は,コーディングよりデータベースが中心になってる.まずはデータベースを作らないとWebアプリケーションは完成しない.
最初は行き当たりばったりで作ろうかと思ったけれども,やっぱりこのカラムがないと困るとか,やっぱりこのデータベースいらなかったとかになってしまうと困るので,それなりに万全を期すつもりで設計をやっている.
RDSインスタンスに接続できるようになったので,自前でmigrationするコードを書いていたりもする.ActiveRecordを導入しようかなとは思ったけど,クエリを発行するのに,こいつ本当に効率的なクエリ投げてるのかな,と思うところがあったので導入していない.
確かに,ModelにActiveRecordとかを導入するのは便利なのかもしれない.ただ,効率的なクエリを発行しているのかどうかわからないし,JOINしたほうがいい場面でも分けて呼び出していたりするのが気に入らなかった.というより,Pixivの研究をやっていたとき,物凄くここでパフォーマンス落としているような気がした.
Modelにばっかり頼っていたらパフォーマンスチューニングできないし,これを期にクエリをフルスクラッチで叩くのもいいんじゃないかと思った.
ActiveRecordの利点はテーブル設計をRubyで書けるとか,外部キーの依存関係からcreate tableする順番を考えなくていいところにある.でも,書いている内容はクエリそのままだったりする.外部キーの設定の仕方が直感的じゃなくてうまく行かない気がすることもある.
確かに,テーブルがクラスになっているので便利,Validationも万全だから安全に使える.しかし,僕にとってクエリを直接書いたほうがわかりやすい気がするのだった…….
これってたぶん,他人の書いたライブラリを信頼していないから自分で書いたほうがいい,と感じるんだろうなぁ.ActiveRecordもなんかよくわかんない理由でエラーが出るし,そう考えると自分で制御したほうが精神衛生的に良いこともある.
逆に,数理的な部分はどうしてもライブラリに頼りたくなる.クォータニオンなんてどうやってデバッグするんだって感じもある.理論的に理解しているはずなのに,いざコードを組んでみたら全く動かない,変な動きをしてしまう.原因はわからない.
(正直なところ,擬似的なボーンアニメーションの実装に失敗して変なもん作ってしまったのでどうにかしたい……)
メンタル?的な話ばかりだとつまらないので技術的な話を.
この前まで作ろうとしていたのは,顔にボーンを埋め込み,それを操作することでモーフを作成する的なサービスだった.Unityで擬似的なスキンメッシュアニメーションを実装したのはいいものの,変形したメッシュがタコみたいに変形してしまってうまく行かない.理屈はわかった上で実装したつもりだったものの,どうやら何もかも駄目らしい.
と言うわけで,ここで実装できないできないと止まっているわけには行かないので,先にWebサービスのほうを実装することにした.いずれにせよ,Webサービス化を狙っていたので,だいたいの構想が伝わるものを作っておけば他の人に伝えやすい.たぶん,そのまんまの奴だと何をしたいのかストレートに理解してもらえないかもしれない.
と言うより,僕はプラットフォームを作る人でありたいので,全力で土台を固めたいところ.
1周間で構想したものが完成して,他の人に見せられる状態になればいいんだけれども.
修論ぶっちするつもりのはずなのに,なぜか卒論や修論関係の時間をめちゃくちゃ割いててなんだかなぁと思う.来週ぐらいには返還免除の申請書を完成させなきゃ.