2012年6月9日土曜日

開発進捗(06/06)

MTG-GUILDですが、開発から1年以上たっている割には進捗悪いんです。
余暇を利用して開発しているので、予算0円、納期未定なので、ずるずる進行なのは想定内ではあるのですが・・・。

もうちょっとなんとかしたいので、現状を整理してみました。



=============================================
<開発目的>
[Magic:the gathering におけるデッキの構築・テストプレイを効率化して少ない時間投資でトーナメントで勝てるようにすること。

<必須機能>
・デッキ構築支援(カード検索、デッキの記録・共有・意見交換)
・テストプレイ支援機能(記録されたデッキを二つ選んで一人回し(一人で二人分プレイする))
・(イッシーがスマホを保有していないので)携帯電話とPCでの利用をメインとする

 <実現方式>
GAE Python2.7のアプリとして構築中。

主な利用ライブラリ
ベース:Webapp2, Jinja2, NDB, wtforms
ローカルテスト:unittest + webtest + (Beautifulsoup)

* ローカルテスト用のライブラリやテストケースは、app.yamlで本番環境にもっていかないようにしている。

<進捗>
携帯サイト用のフレームワークのベースが完成。
初期ページと、管理者ページの元が完成。

<遅延理由>
業務ロジックを設計する際にDB設計を同時に行うことで
最初から最適化されたデザインをしようと 考え始めた結果、
デザインが頭に入りきらなくなり、設計で詰まってしまっている。

<解決策>
テストコードを作りながら、ボトムアップ的に開発していく。
適宜リファクタリングをしていくことで、設計を美しく保つ。
(そんなに大規模なアプリではないので、DB設計なんて後からついてくる)

=============================================

納期より機能が優先される特殊な開発ですけれど、
やっぱり、アジャイル開発の教科書どおりに開発しろ、ってことですね。
(普通すぎる結論だ・・・orz)


あんまり進捗はないのですが、この1年でベースの知識はだいぶ習得したので、
これはこれで、大きな収穫だったと思います。

当初は、関連するライブラリの使い方が、よくわかっていなかったのですが、
webapp2をベースにオリジナルのフレームワークを作っていく過程で、大分わかりました。

同じような道を進む人の為に、所感をメモって見ます。
  • Python2.7(とスレッドセーフ)は、そんなに難しくない
    (Webapp2でセッション毎にインスタンスを作ってくれるので、スレッドセーフはあんまり意識しなくてOK)
  • webapp2は、けっこう改造しやすくできている
    オレオレフレームワークのベースとしては優秀
  • Jinja2は、使わないと大分損
    日本語のドキュメントも充実しているので楽
    SphinxもJinja2使っているので、覚えて損はない
  • NDBは、開発当初から使うならあり
    日本語情報は少ないが、ベースをそのまま使うのとあまり違和感はない
  • wtformsはいちおう使ったほうが良い
    そんなに凄い感じはしませんが、手で書くと面倒なので無いよりはずっとまし
  • unittest大事
    Eclipseが用意しているテストランナーを使うと半自動的にガンガンテストしてくれる
  • webtestかなり便利
    画面遷移に関するテストコードがかなり楽に書ける
  • BeautifulSoupは、単体テスト用としてはほぼ不要
    内部的なフレームワークのテストに利用したけど、普通は使わなくても大丈夫
    (もちろん、アプリから外部のサイトにアクセスさせる場合は使ったほうが良いと思います)

    ・・・いろいろ状況を分析してみましたが、最近趣味でSphinxのオリジナルテーマを作っているのが、最近の進捗がストップしている主要な原因な気がしてきた・・・。
    仕事でSphinxを使い始めたのですが、テーマいじり、結構面白いんですよね。
    ま、Jinja2(とhtml)の練習にはなっているので、これはこれで良い事にしよう。

    0 件のコメント:

    コメントを投稿