諦めました
頑張ってDanbooru動かそうと思いましたが諦めて,可能な限り小さな機能にまとめたDanbooruもどきを作ろうかと思いました.理由は以下のとおりです.
4日使って動かない
ちょっとRails + PostgreSQL + nginx + Capistrano + unicornの構成でサーバを立て,一連の動作をさせてくれた人がいました.最初は大変うれしかったのですが,サーバの再起動すらできないという問題にぶち当たりました.
その次にbundlerとrailsを組み合わせて,WEBrickでサーバを立てる方法を試しましたが,諸々の行く手を阻まれてダメです.
Linux使う
Linuxのオペレーション無理です.いや,操作はできるんですけど,トラブルシューティングになるとダメです.Windowsの環境で動かしたものをLinuxで動かすのなら再現性取れそうですが,全部Linuxでやらなきゃならないのでダメです.時間かければできなくはないのかもしれませんが,限度というものがあります.
RDS使えない
pg_languageがrdsadminの権限で操作できないため,発生したエラーを解消できません.EC2でPostgreSQLサーバを立てればいいんでしょうけど,PostgreSQLのサーバを立てたり設定したり,そういうの勉強してる余裕がないので無理.
Capistranoとunicorn専用に作られてる?
どうもRailsでWEBrickしようとすると,エラーが頻発してなかなか進まない.さすがにいつ終わるのかわからない.最初からこの2つのモジュールで動かすこと前提に組まれているので,いろいろなところで依存していてまずい.ソースコードレベルで依存している可能性が物凄く高い.例えば,Danbooruユーザじゃなくてrootでやるとなんかおかしいとか.ディレクトリを少し変更しただけで動かなくなる.
Modelを変更するのがすごく面倒くさい
Danbooruにはタグにカテゴリを振り分けることができて,どうやらシステムレベルでたったの4つのカテゴリしか分けられないことになっているっぽい.確かに,一部のコードを弄れば種類は増やせるけれども,カテゴリごとにテーブルがあったりして物凄く気持ち悪い.rails d modelを実行したら終わりそうなのでやめておく.
トラブルが起きた時に物凄く時間をかけて対処しそう
4日かかって成果なしなのに,これ以上,深入りすれば深入りするほど,トラブルが発生した時の対処時間はたかが知れています.
それで次はどうするか?
時間を物凄く無駄にしてしまった感がありますが,DanbooruのレイアウトからRailsで組む見通しがついたので,さっさと作ることにします.幸い,Danbooruのソースコードがあるので,参考にしながら組んでみようと思います.
一方で,Railsはかなり慎重な操作を必要とする実体験があるため,以下のことを気をつけながら実装しようかなと思っています.
コマンドログをベースにRailsを操作する
Git Bashでsourceコマンドを使うと,テキストファイルに書いたコマンドを実行できることがわかりました.マイグレーションのように厳密ではないですが,Railsの操作をここに書いて実行することに.
何かを消したり変更するときはrailsコマンドを使う
依存関係が複雑なので,どこかを消したりするとそれだけでたくさんのエラーが出ます.探すのが大変で,見つけるのに物凄く時間がかかって面倒くさいので,なるべくこういうことを起こさないよう,コマンドベースでコードを書くように心がけます.
なるべくテストをする
特にモデル周りできちんとしたテストを重視しようかなと.今までテスト用の何かを投げて動いたら終わりという感じだったのですが,なるべくそういうのはなしにして,RSpecなりなんなりテストツールを使いながら実装を進めようかなと.
MVCを意識する
急いで書くとクラス設計とか無視しながらガシガシ書き始めるので(MikuMikuDance for UnityはCEDECの期間中に書くべきじゃなかった),ボトムダウンでMVCを意識しながら書こうかなと思います.今更,書くべきようなことではないのですが,文章にしたら意識できるかなと思うので念のため書いておきます.
せめて20日までにシステムを完成させないとかなりまずいことがわかってます.本当は今日にはDanbooruのタグをテコ入れしている段階のはずなのですが,動かないものはしょうがないです.さっさと諦めて次のことをやらないと追っつきません.
どうやら小田急線や神奈中バスが完全にお亡くなりになった感じなので,しばらく大学から出られそうにもありません.集中してやれる環境があるのが幸いです.