読書会で出てきたわからなかった言葉

 アジャイルソフトウェア開発手法の多くは、反復 (イテレーション) と呼ばれる短い期間単位を採用することで、リスクを最小化しようとしている。 1つの反復の期間は、プロジェクトごとに異なるが、1週間から4週間くらいであることが多い。(by wiki

  • ペルソナ

 リアルなユーザー像ペルソナ/シナリオ方というのがある

 タスク管理のツール(redmineのようなものかなと感じた)

  • ベロシティ

 Velocityとは、1スプリントでチームが開発できる開発規模(ストーリーポイント)を表している。未読だけど、良さそうなサイト

キーワード的に

  • アジャイル手法を誰もが気に入るわけじゃない
  • でも皆で一緒のバスに乗ろう
  • プロジェクトのゴールをチームで統一し、明確に
  • インセプションデッキ(10の手強い質問と課題)をプロジェクト開始前に決めよう
  • 課題(目の前にあるのがわかる→顕在している)とリスク(まだ顕在していない問題)の違い。→リスクを洗い出す難しさ
  • 属人化させないように
  • 時間、予算、品質を固定し、スコープを調整する
  • 見積りを細分化して捉える(重みは3パターンでつける)

アジャイルサムライ読書会(第1章から第7章)

社内の読書会に参加してます

アジャイルサムライ−達人開発者への道−

アジャイルサムライ−達人開発者への道−

014Integral

提出した結果はRuntimeError
013ができて、014がダメな理由はわからないが、値は合っています。

package levelZero;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Integral {

	/**
	 * @param args
	 * @throws IOException
	 * @throws NumberFormatException
	 */
	public static void main(String[] args) throws IOException {
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);

		String buf;
		while (!"".equals(buf = br.readLine())) {
			int num = Integer.parseInt(buf);
			int sum = 0;
			for (int i = 1; i * num <= 600 - num; i++) {
				sum = sum + num * i * num * i * num;
			}
			System.out.println(sum);

		}

	}

}

013Switching Railroad Cars

提出した結果はAccept

package levelZero;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class SwitchingRailroadCars {

	/**
	 * @param args
	 * @throws IOException
	 */
	public static void main(String[] args) throws IOException {

		List<String> numList = new ArrayList<String>();

		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);

		String buf;
		while(!"".equals(buf = br.readLine())){
			numList.add(buf);
		}

		while (!numList.isEmpty()) {
			for (int i = 0; i < numList.size(); i++) {
				if ("0".equals(numList.get(i))) {
					System.out.println(numList.get(i - 1));
					numList.remove(i);
					numList.remove(i - 1);
					break;
				}
			}
		}
		br.close();
	}

}

その他:Suffix Arrayについて

資料:http://www.hgc.jp/~tshibuya/classes/shibuya20040629.pdf
資料:http://sary.sourceforge.net/docs/suffix-array.html.ja
文字を接尾語で分割し、辞書順に並べることで検索したい文字を探すことを効率的に行える。

例:sakurasaku
1.sakurasaku
2.akurasaku
3.kurasaku
4.urasaku
5.rasaku
6.asaku
7.saku
8.aku
9.ku
10.u


これを辞書順に並べると
8.aku
2.akurasaku
6.asaku
9.ku
3.kurasaku
5.rasaku
7.saku
1.sakura
10.u
4.urasaku

となる。
ここで、「aku」という単語を検索した場合、indexの8と2に含まれていることがわかり、
2から8の間で2分探索する。
2
3
4
5←スタート
6
7
8
この仕組により、早く検索することができる