woshidan's blog

あいとゆうきとITと、とっておきの話。

Webさーびす開発してました

10月末日にインターン先を出てから、

自己分析の沼にはまったり、webさーびすを開発したりして暮らしていました。

一応、テスト版として動作するところまで行ったので、いったん開発作業は休憩して、まとめておこうと思います。

 

開発していたのはこれです。

うしログ  http://www.ushilog.com/web/signin

ご自分のメールアドレスを入れていただいても構わないんですが、初期値の入力が結構面倒くさいので、とても暇な人は、

ushilog.taro@example.com というメールアドレスと

ushilog.taro というパスワードで遊んでみてください。

 

目的

企画に思いがあるのは企画の人で、私は、プログラミングの練習かつ就活で書類に出すデモ用プログラムが無かったため。

(インターンで開発していたのは社内システムが中心だったので、なかなか書類に載せる形では公開できるものが無かった)

畜産とか面白そうという感じで書いていました。

 

開発期間

11月~12月+9月,10月の休日のどっちかでぼちぼち、という感じです。

まあ、やっぱり12月にかなり集中して作業してました。

工程が進むことで見えない作業が見えたりとか、もう少し機能を追加したくなったりとか。

サーバ関係の沼にはまったりとか。

 

開発担当部分について

企画者(画面案+css)+自分(他)。

サーバ設定したり、ぐぐりながら利用規約書いてみたり、

普段使わないことやって面白かったです。

企画者の人はもともとコードが全然書けなかった人なのですが、

私の開発がぐだった作業が思ったより多くて時間があったので、

本買って勉強してgitの使い方もついでに覚えていただきました。

デザインに苦手意識があったので助かりました。

 

自分について

この記事、たぶん就活でも使うので書いておくと、

プログラミングを始めて1年3ヶ月で、Railsエンジニアとしては10ヶ月くらいです。

24歳、休学中大学院生(退学しようとしたら無謀だとしてボスに休学にしておきなさいと言われている。学割万歳)という名のニートです。

 

開発環境について

サーバサイドはRails 4.1、フロントエンドはAngularJS v1.2、データベースはmysqlです。

テストはサーバサイドをMinitestで書いてました。

もともとインターン先で使っていたものをそのまま使っています。

開発を始めた時はインターン先で勉強したことを出し切ろう、と思いながら書いていたため。

サーバはさくらのVPSを借りて、Apacheの上にPhusion Passangerを動かして、PassengerからRailsを動かしています。

ソースコード管理はgitでbitbucketに入れて管理していました。

デプロイはcapistranoバッチ処理はwheneverizeで登録しています。

途中パソコンをクラッシュさせるという大ぽかをしたのですが、リモートにあげておいてよかったです。

タスク管理をもっとしっかりやればよかったです。

 

どんなサービスなのか

牛の個体(農家の方は牛一頭一頭のことを個体と呼ぶそうです)登録して、その牛の画面や、一覧画面の一括操作からワクチン接種情報などの病歴を記録したり、

去年(集計期間は変更可能)にかかった経費を元に牛一頭一日あたりの経費を計算して、個体それぞれ今日時点でいくら使っていることになるか、という計算をしたり、

要するに畜産農家のデータ管理補助アプリです。

 

この手のアプリ、最近の有名どころだと、Farmnoteというものがありますが、

それが個体に一対一対応みたいな操作になっているのと比べると

結構大雑把に使ってもいい感じにしよう、という風に考えていました。

(ちなみに業界一番手は牧場の王子様というらしいです。世界は広い。)

 

どうしてテスト版なのか

  • データベースが最適化されていないので重い(現在、表結合とかActiveRecordのhas_manyやらのメソッドが走りまくっている)
  • もともと搭載したかった機能の一部が搭載できていない(カレンダー機能や分析系機能)
  • ユーザインタフェースがまだまだ(操作説明やチュートリアルが無い)

分かっているなら、やれよ!という話ですが、現状でだいぶ開発が伸びたので、

 

一応ログは取れるし、いいでしょ!

 

ということで、一旦公開することにしました。

その後の展開次第で優先順位つけて取り組むかもしれません。

 

今回の開発で学んだこと

wetな話題はこのブログではあんまりしないと決めているので、

主に、技術的なことについて書こうと思いますが、

 

1つだけ。 

相手や自分を信頼して仕事を投げるのには技術的・知識的な裏打ちがいるのかなぁ、と思いました。

 

今回の開発では、お互い勉強しながら開発していたため、

タスクを投げてもこなせたりこなせなかったり、思っていた出来でなかったり、

ということが多くて、事前にこういうことを調べたらいいとか、

こういう風に作業すればいいとかがもっと分かっていたらいいのになぁ、

ということをじっくりことこと煮込んでいくような2ヶ月でした。

 

エンジニアは私だけなので、

主に私の知識不足技量不足器量不足なんですが、

チーム内の誰かが道筋を分かってないと迷う!不安倍増!

ですね。

 

1人でやるならそれをたのしんでいいんですけど、

誰か一人でも他のメンバーがいるとその人の期待とか目とかあるわけで

うまくタスクや短期の目標設定できないと、楽しくないですね。

 

インターン先でも割と開発を任せていただいて少しは出来るかも?という気持ちになっていたのですが、

気づいてないだけでだいぶ背中支えてもらっていたんだなぁ、

という当たり前のことを黒い画面をにらみながらひしひしと感じました。

 

そして、ひしひし感じているのに自覚が出来た頃にサーバの設定のところで少し質問したりしました。

その節はありがとうございました。

 

技術的にはAngularJSのディレクティブや他のコントローラとの連携について、

railsのアセットパイプラインについて苦戦した分、身に付いた気がします(といってもまだまだですが)。

サーバの設定をいちからしてみたりとかも1人で少し書いてみるかーというだけでは絶対いじらないことなので、刺激的でした。

後は、全体のデータベースやAPIの設計について開発しながら迷うことが多く、

開発終盤になってから、

O'Reilly Japan - Web API: The Good Parts

Amazon.co.jp: 達人に学ぶDB設計 徹底指南書 初級者で終わりたくないあなたへ: ミック: 本

を見つけたのでこれから読もうと思います。

あと、最後のほうで心が折れてテスト書くのを放棄し、今日の最終デバッグに時間がかかったので反省です。

 

最後に

「食べて開発がんばるぞい!」を繰り返した結果、

牛になってしまったので、やせたい。