ページ

2014年3月13日木曜日

スクラム開発の特徴と、チームメンバーの役割

特徴

・実践するのは簡単です!でも、修得するのは難しいです!
・スクラム開発はフレームワーク(枠組み)です
 ・複雑で変化の激しい問題に対応するためのものです
  X 対応する手段
  O 対応する手段をみんなで模索しながら、製品を作り上げる

スクラム開発に登場する役割


プロダクトオーナー(1人)

・「何を作るか」の責任者
  ・技術的な知識は必ずしも必要ではありません
  ・作成する優先順位を決定します
   ・ちゃぶ台返しOK(優先順位の変更、仕様の追加、変更、破棄)
  ・製品が仕様どおりかどうかチェックします
  ・製品をリリースするかどうか判断します

開発チーム(3〜9人)

・協力して製品を作り上げます
  ・見積もりは開発者が決定します
  ・作業分担は立候補制です
   ・一つの作業に複数人でとりかかってもよいです
   ・むしろどんどん協力しましょう。スクラムですから!
   ・専門外の仕事も積極的に手伝いましょう

スクラムマスター(1人)

・「どのように作るか」の責任者
  ・「スクラム開発よくわかんない」ってときはこの人に聞きましょう
  ・チームにスクラムのルールを守ってもらうよう促します
  ・チームを守り、支えます
  ・技術的な知識は必要です


※リーダーやマネージャーはいません
※スクラム開発にじゅうぶん慣れたら、
 スクラムマスターもいなくてOKです

2013年5月28日火曜日

Rails3.2 ActiveRecordに関するメモ

ActiveRecordのサブクラスであるModel(以下Model)の機能に関する覚書。


一意性制約を定める
Modelに次のように記述する
validates_uniqueness_of :column_name
Migrationに次のように記述し、実行する
add_index :table_name, :column_name, :unique => true


validate?の挙動
前提条件:ModelAとModelBの間にリレーションが定められている
ModelA.valid?の戻り値がfalseの場合、
ModelB.valid?の戻り値もfalseとなる。
つまり、リレーションが定められているModelをsaveするときには、
すべてのModelでバリデーションが実行される。


saveで保存されるオブジェクト
前提条件:ModelAとModelBに多対多のリレーションが定められている
ModelA.saveを呼び出すと、下記のModelが保存される

  • ModelA
  • ModelB
  • ModelAとModelBの関連テーブルのModel

(関連テーブルのインスタンスは自動的に生成される)

つまり、下記のようなコードで事足りる。
modelA = ModelA.new(hoge: 'hoge') #モデルAをインスタンス化
modelB = ModelB.new(foo: 'foo') #モデルBをインスタンス化
modelA.modelBs << modelB #モデルAとモデルBを関連付ける
modelA.save #関連テーブルのModelが自動生成され、すべてのModelが保存される

2013年2月25日月曜日

2013年1月30日水曜日

coffeescript+jQueryでDOM操作

やりたいこと

coffeescriptで生成したjavascriptでDOM操作をしたい

今回学んだこと

coffeescriptの1行目に
$ ->
と記述することで、それ以下の命令がdocument読み込み完了時に実行される。
jQueryの下記の記述と同等。
$(function() {
  //何らかの処理
});

ディレクトリ構造

shusuke@shusuke-VirtualBox:~/practice/coffee$ pwd
/home/shusuke/practice/coffee
shusuke@shusuke-VirtualBox:~/practice/coffee$ tree
.
├── bin
│   └── hello.js <-coffeescriptをコンパイルしてできたJSファイル
├── lib
│   └── jquery-1.9.0.min.js
├── src
│   └── hello.coffee <-coffeescriptのソースファイル
└── view.html <-練習用のHTML

view.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Language" content="ja" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  <script type="text/javascript" src="./lib/jquery-1.9.0.min.js"></script>
  <!-- javascriptを読み込む -->
  <script type="text/javascript" src="./bin/hello.js"></script>
</head>
<body>
  <div id="apple">りんご</div>
  <div id="banana">バナナ</div>
  <div id="hoge">HOGE</div>
</body>
</html>

src/hello.coffee

$ ->
  console.log "LOG TEST"
  hoge = $('#hoge')
  msg = if hoge is null then "hoge is null" else "hoge is not null"
  console.log msg
  console.log hoge.html()

bin/hello.js

// Generated by CoffeeScript 1.4.0
(function() {

  $(function() {
    var hoge, msg;
    console.log("LOG TEST");
    hoge = $('#hoge');
    msg = hoge === null ? "hoge is null" : "hoge is not null";
    console.log(msg);
    return console.log(hoge.html());
  });

}).call(this);

実行結果(HTML表示時のjavascriptコンソール)

[23:24:31.514] LOG TEST
[23:24:31.514] hoge is not null
[23:24:31.515] HOGE

2012年3月5日月曜日

在庫数量の決め方(1)

必要以上に在庫を抱えないためには、必要以上に商品を仕入れないようにすればよい。では、仕入れる量はどのようにして決めればよいだろうか。
例えば、現在の在庫が最大である60個だとしよう。発注から入荷までに必ず2日かかり、1日に必ず20個の商品を売り上げている場合、発注数量はいくつにすればよいだろうか。
在庫数量(個)60/60
発注から入荷まで2日
売上ペース20個/日
今日発注すると2日後に入荷する。売上ペースから計算すると、入荷時の在庫数量は20/60個となり、40個を補充することができる。よって、40個発注すれば、品切れを起こさず、かつ倉庫内に収めることができる。
では、在庫量をより少なくすることはできないだろうか。これを考えるには、発注から入荷までの時間と、売上ペースに注目するとよい。最大在庫数量を40個に設定すれば、2日に1度、商品を40個発注することで在庫を維持できる。
まだ改善の余地はある。発注から入庫までには2日かかるという制約はあるが、2日に1度しか発注できないという制約はない。つまり、毎日20個発注すると決めれば、最大在庫数量を20個まで減らすことができる。
これが、在庫管理の根本となる考え方だ。実際には、様々なことを考慮して、最大在庫数量や発注数量などを決定することになる。ここでは、説明を簡単にするために極端な例を示した。

2012年3月2日金曜日

在庫を抱えすぎることによる弊害


在庫を抱えすぎると、店の経営に様々な問題が発生する。
第一に、在庫スペースの維持に費用がかかることだ。倉庫が大きければ大きいほど、地代や固定資産税がかさみ、経営を圧迫する。
第二に、需要の変化に対応するのが難しくなる。古い製品が在庫スペースを占領していると、新商品を仕入れることができなくなる。結果として、新商品を販売する機会を逃してしまう。
第三に、現金や預金が少なくなることで、資金繰りを悪化させる。仕入れに大量の資金を費やしたばかりに、取引先への支払いや借金の返済が遅れてしまうことがあり、黒字倒産になりかねない。
これらを踏まえて、適切な量の商品を仕入れることが在庫管理の基礎といえる。では、具体的にはどのように仕入れたらよいのだろうか。それについては次回。