見積もりで気を付けること

「ざっくりでいいから見積もってみて」と言われると、いわゆるPG工程の範囲内でやることを洗い出して「これだけのボリュームだから3日ぐらいかなぁ」と計算していたけど、そろそろPG工程以外のことも考えましょうということ。

  • 未確定部分があれば(=仕様が決まっていない)SE工程を追加する
  • PG工程には、、、
    • 既存のコードがあればそれを理解する時間も若干考慮する
    • 既存のコードがあればそれを利用するのでリファクタリングする時間も若干考慮する
    • 単体テストも含めて計算する
  • モノを作ったらシステムテストは行うのでシステムテスト分も追加する
    • テストデータの作りやすさや、テストケースの難易度も考慮して日数を計算する
  • どうやら正直な見積もり(人日)らしいので、はじき出した人日の1.5〜2倍で考えて良いとのこと

Mayaa で span + m:with + m:if を使ったメッセージ切り替え

条件によって表示するメッセージを切り替えるときに。

HTML

<span m:id="message">
  PCからアクセス
</span>

Mayaa

<m:with m:id="message">
  <m:if test="${ '条件を記述' }" >
    <m:write value="PCからアクセス" />
  </m:if>
  <m:if test="${ '条件を記述' }" >
    <m:write value="携帯からアクセス" />
  </m:if>
</m:with>

Mayaa で m:attribute でフォームを作成する

こういう書き方もできるんだと発見したのだが、ちゃんとドキュメントに書いてあって、でもせっかくなのでメモしておく。

サンプルとしてラジオボタンで実装してみた。HTML から。

<label><input m:id="radio" type="radio" name="selected" />これを選択する</label>

続いて Mayaa

<m:echo m:id="radio">
  <m:attribute name="value" value="${ SELECTED_VALUE }"/>
  <m:if test="${ NOW_SELECTED == SELECTED_VALUE }">
    <m:attribute name="checked" value="checked" />
  </m:if>
</m:echo>

echo の要素に attribute で属性を設定したり、if を使ってチェック済みにしたり、と。

Mayaa で確認ダイアログを使う

「○○を削除」リンクをクリックしたときにJavaScriptで「本当に削除してもよろしいですか?」と再度確認させる、ってのをやってみたのでメモ。

JavaScript

function confirmDelete() {
  if(window.confirm('本当に削除してもよろしいですか?')) {
    return true;
  }
  return false;
}

HTML

:
:
<script src="./path/to/js/confirm.js"></script>
:
:
<a m:id="deleteLink" href="">○○を削除</a>
:
:

Mayaa

<m:echo m:id="deleteLink">
  <m:attribute name="href" value="delete/${ id }" />
  <m:attribute name="onclick" value="return confirmDelete()" />
</m:echo>

Mayaaで以下の処理を行う

  • onclick属性の追加 → confirmDelete関数の呼び出し
    • confirmDelete関数が false を返した場合は遷移しない
  • href属性の値を設定

Mayaa で List を使う

これも何てこと無いんだろうけど便利でうれしかったのでメモ。

Javaファイル

public List<String> testlist = new ArrayList<String>();
testlist.add("1st");
testlist.add("2nd");
testlist.add("3rd");

HTML

<div m:id="testlist">testlist</div>

Mayaa

<m:with m:id="testlist">
  <m:for init="${ var i = 0 }" test="${ i &lt; testlist.size() }" after="${ i++ }">
    <m:write value="${ testlist.get(i) }" />
  </m:for>
</m:with>