チヂミ作った
材料
- 薄力粉 120g
- 片栗粉 30g
- 水 150cc
- 卵 1個
- 塩 適量
- ごま油 大匙1
生地の基本になる具
- ニラ
- つぶしたニンニク
- 唐辛子
お好み焼きは焼くときに(フライ返しなんかで)ギュッと押し付けないらしいですが、チヂミは押し付けてムギューとやっていいらしいです。というかやるみたいです。
ところで昨日見てきたザ・マジックアワー面白かった。佐藤浩市いいよ佐藤浩市。デラ富樫。面白かった。
« 2008年06月01日 - 2008年06月07日 | メイン | 2008年06月15日 - 2008年06月21日 »
function LoadDynamicFeedControl()
{
var feeds = [
{ url: 'http://b.hatena.ne.jp/hotentry?mode=rss' }
];
var options = {
numResults : 10,
displayTime : 3000,
fadeOutTime : 1000,
scrollOnFadeOut : true,
horizontal : true
}
new GFdynamicFeedControl( feeds, 'feed-control', options );
}
var obj = new Array();
google.load( 'feeds', '1' );
google.setOnLoadCallback( LoadDynamicFeedControl );
public void listAbilityCollection(){
// 潜在能力コレクションの取得・・・
// 魔法コレクションの取得・・・
ArrayList ptntItems = potentialCollection.getAbiiltyItems();
AbilityItem[] mgcItems = magicCollection.getAbiiltyItems();
// 潜在能力コレクションはArrayListを返すのでキャストしてリスト
for( int idx = 0; idx < ptntItems.size(); idx++ ){
AbilityItem abiItem = (AbilityItem)ptntItems.get( idx );
System.out.println( abiItem.getName() );
// ・・・
}
// 魔法コレクションは配列をそのまま返すので直接参照してリスト
for( int idx = 0; idx < mgcItems.length; idx++ ){
AbilityItem abiItem = mgcItems[ idx ];
System.out.println( abiItem.getName() );
// ・・・
}
コードを見ると
PotentialCollectionのgetAbiiltyItems()も
MagicCollectionのgetAbiiltyItems()も
返す型さえ違わなければ、後はほとんど同じ動きをするクラスだお。。。
____
/ \
/ ─ ─\
/ (●) (●) \
| (__人__) |
/ ∩ノ ⊃ /
( \ / _ノ | |
.\ “ /__| |
\ /___ /
|
\ __ /
_ (m) _
|ミ|
/ `´ \
てことはとりあえずMagicCollectionのほうを
ArrayListにして合わせちゃえば問題は解決するお。
____
/⌒ ⌒\
/( ●) (●)\
/::::::⌒(__人__)⌒::::: \
| |r┬-| |
\ `ー'´ /
/ ̄ ̄\
/ _ノ \ おいおい。ちょっとまて。
| ( ●)(●)l 今は返す型が配列とArrayListだけだから
. | (__人__) |どっちかに倒せばいいと思ってるようだが、
| ` ⌒´ | 今後、Vectorでコレクションを実装してる
. | } なんてのが見つかったらどうすんだ?
. ヽ }
ヽ ノ
/ く
/ ヽ
// 忍術は魔法と違う扱い
public class NinpoCollection implements Collection {
Vector abilityItems;
// Vectorでアビリティを扱う。
public Vector getAbiiltyItems(){
return abilityItems;
}
}
___
/ ⌒ ⌒\
/ (○) (○) \ え。いけなかったのかお。。。
/ ///(__人__)/// \
| u. `Y⌒y'´ |
\ ゙ー ′ ,/
/⌒ヽ ー‐ ィヽ
/ rー'ゝ 〆ヽ
/,ノヾ ,> ヾ_ノ,|
| ヽ〆 |´ |
・・・オマエ、その日の気分で好き勝手に実装してるだろ。
今は忍術を潜在能力や魔法と全く違う扱いで動かしてるが
どうせそのうち企画がブースト機能とか言い出すんだから
とっとと手を打っとけ。
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__)
| ` ⌒´ノ
. | }
. ヽ }
ヽ ノ
/ く
| \
| |ヽ、二⌒)
for( int idx = 0; idx < ptntItems.size(); idx++ ){
AbilityItem abiItem = (AbilityItem)ptntItems.get( idx );
for( int idx = 0; idx < mgcItems.length; idx++ ){
AbilityItem abiItem = mgcItems[ idx ];
うーん。違うのは
1.走査の判定にsizeを返すかlengthを返すかと
2.要素の取得にget( idx )メソッドを使うか配列の添え字[ idx ]を使うかだけだお。。
____
/ \
/ ─ ─\
/ (●) (●) \
| (__人__) | ________
\ ` ⌒´ ,/ .| | |
ノ \ | | |
/´ | | |
| l | | |
ヽ -一ー_~、⌒)^),-、 | |_________|
ヽ ____,ノγ⌒ヽ)ニニ- ̄ | | |
つまり、カプセル化したいのは
1.「走査の判定」と
2.「要素を返す」だお。
/ ̄ ̄ ̄\
/ \
/ ─ ─ ヽ
| (●) (●) |
\ (__人__) __,/
/_______\
要は、
while( 走査の判定 ){
要素を返す
}
ができればいいんだお。インターフェイスは確定だお!!
public interface Iterator {
boolean hasNext(); // 次はあるのか
Object next(); // 次の要素を返す
}
____
/ \ /\ キリッ
. / (ー) (ー)\
/ ⌒(__人__)⌒ \
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ
| l \
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、.
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
/ ̄ ̄\
/ _ノ \ よくわかってんじゃねーか。そのとおりだ。
| ( ●)(●)
. | (__人__)
| ` ⌒´ノ
. | }
. ヽ }
ヽ ノ
/ く
| \
| |ヽ、二⌒)
ぎゃひひ!おいらに任せとけば全てがうまくいくお!
____
/_ノ ヽ、_\
ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ
/⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒)
| / / / |r┬-| | (⌒)/ / / //
| :::::::::::(⌒) | | | / ゝ :::::::::::/
| ノ | | | \ / ) /
ヽ / `ー'´ ヽ / /
| | l||l 从人 l||l l||l 从人 l||l
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
____
/⌒ ⌒\
. /( ―) (―)\ ふん、ふーん。
/ ::::::⌒(__人__)⌒::::: \ ふ、んー。
| |r┬-| |
\ `ー'´ /
ノ \
/´ ヽ カ
| l l||l 从人 l||l l||l 从人 l||l カ タ
ヽ -一''''''"~~``'ー--、 -一'''''''ー-、. タ
ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
┌┬┬┐┌┬┬┬┐┌┬┬┬┐┌┬┬┬┐
,. - ''"| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ρ ̄`l
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ノ ̄
____
/⌒ ー、\
/( ―) (―)\
/::::::⌒(__人__)⌒:::::\ んー?
| |r┬-/ ' |
\ `ー'´ /
____
/::::::─三三─\ ん・ん・んー?
/:::::::: ( ○)三(○)\
|::::::::::::::::::::(__人__):::: | ________
\::::::::: |r┬-| / | | |
ノ:::::::::::: `ー'´ \ | | |
___
____,./ \ すみません。
ノ / \ 既存のコードにインプリメントしたら
/ / \ドカドカ変更が入ってしまいましたお。
| |::.. ...::::|
ヽ `一ー――――-、;;;;::/`一ー―-、
ヽ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
public class MagicCollection implements Collection, Iterator {
static final int MAX_ITEMS = 6;
int numberOfItems = 0;
AbilityItem[] abilityItems;
// mod yaruo 何も返さない。使うな
public AbilityItem[] getAbiiltyItems(){
// mod yaruo
// return abilityItems;
return null;
}
// add yaruo
boolean hasNext(){
// 配列の走査判定
}
// add yaruo
Object next(){
// 次の要素を返す
}
}
いやいやいや。ちょっとまて。どこに手を入れてやがる。
冒頭のソースでMagicCollectionそのものを走査に使ったか?
クライアントはカプセル化された走査がしたいだけだ。
Iteratorって言うインターフェイスを返すメソッドを追加してやりゃ
既存のコードの修正は数ステップだろが。
/ ̄ ̄\
/ _ノ \
| ( ○)(○)l
. | (__人__) |
| ` ⌒´ |
. | }
. ヽ }
ヽ ノ
/ く
/ ヽ
public class MagicCollection implements Collection {
static final int MAX_ITEMS = 6;
int numberOfItems = 0;
AbilityItem[] abilityItems;
// remove method. sucks
// public AbilityItem[] getAbiiltyItems(){
// return abilityItems;
// }
// イテレータを返す。
public Iterator createIterator(){
return new MagicCollectionItr( abilityItems );
}
}
MagicCollection用のイテレータはこうだ
配列をパラメータにしたコンストラクタにしてある。
イテレータをimplementsしたクラスに走査処理を委譲してやればいい。
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__)
| ` ⌒´ノ
. | }
. ヽ }
ヽ ノ
/ く
| \
| |ヽ、二⌒)
public class MagicCollectionItr implements Iterator {
int curPos = 0;
AbilityItem[] abilityItems;
public MagicCollectionItr( AbilityItem[] abilityItems ){
this.abilityItems = abilityItems;
}
// 配列の走査判定を行う。
boolean hasNext(){
return ( curPos >= abilityItems.length || abilityItems[ curPos ] == null ) ? false : true;
}
// 次の要素を返す
Object next(){
AbilityItem curAbi = abilityItems[ curPos ];
curPos++;
return curAbi;
}
}
いいかやる夫。既存のコードに対する修正はできるだけ最小限に抑えろ。
仕様変更における既存のコードというものは、
「バグのない適切なコードにするために、多くの時間を費やしたモノ」
と考えるんだ。事実そうじゃなくてもそう思うんだ。
だから既存のコードで振る舞いを変更するみたいなことは極力するな。
今回で言えば、コレクションの走査はもともと
MagicCollectionやPotentialCollectionになかっただろう。
ココに走査するコードを突っ込んだのはオマエの勘違いだとして、
「変更」は最小限にして「拡張」を自由に行うように癖をつけろ。
俺が書いたMagicCollectionItrは、
MagicCollectionからコレクションを取り出して
捜査できるように拡張したコードだ。
今度はこのコードに時間をかけてバグのない適切なコードにするように
デバッグしてコードの品質を積み上げていけ。
/ ̄ ̄\
/ _ノ \
| ( ●)(●)l
. | (__人__) |
| ` ⌒´ |
. | }
. ヽ }
ヽ ノ
/ く
/ ヽ
いいかやる夫。
・・・・・・・・
今度はこのコードに時間をかけてバグのない適切なコードにするように
デバッグしてコードの品質を積み上げていけ・・・・?
`――――――――――――○―――――――――――――――’
O
o
____
/_ノ ヽ_\
/( ●) ( ●)\
/ ::::::⌒(__人__)⌒:::::\
|  ̄ |
\ /
/ ̄ ̄\ えー。単体テストくらいは自分でやってほしいお。
/ \ ___
|:::::: U | / \
. |::::::::::: U | /⌒ ⌒ \
|:::::::::::::: | / (●) (●) \
. |:::::::::::::: } | (__人__) |
. ヽ:::::::::::::: U } \ ` ⌒´ _/
ヽ:::::::::: ノ | \
/:::::::::::: く | | | |
―――|:::::::::::::::: \――┴┴―――――┴┴――
やる夫。オマエが以前デザインしていた マジックコレクションと言うクラスがあるだろう。 / ̄ ̄\ / _ノ \ | ( ●)(●) . | (__人__) | ` ⌒´ノ . | } . ヽ } ヽ ノ / く | \ | |ヽ、二⌒) あるお。魔法を配列で管理しているクラスデザインだお。 魔法をアビリティクラスで表現したやつだお。 ____ /_ノ ヽ_\ /( ●) ( ●)\ / ::::::⌒(__人__)⌒:::::\ |  ̄ | \ /
public class AbilityItem {
String name; // アビリティ名
String description; // 説明
double effectiveValue; // アビリティ効果値
public AbilityItem( String name, String description, double effectiveValue ){
this.name = name;
this.description = description;
this.effectiveValue = effectiveValue;
}
// プロパティアクセサメソッド・・・
}
この汎用アビリティアイテムを魔法1つ1つとして表現したお。
____
/⌒ ⌒\
/( ―) (―)\
/::::::⌒(__人__)⌒::::: \
| |
\ /
public class MagicCollection implements Collection {
static final int MAX_ITEMS = 6;
int numberOfItems = 0;
AbilityItem[] abilityItems;
// 配列でアビリティを扱う。
public AbilityItem[] getAbiiltyItems(){
return abilityItems;
}
}
このソースはアビリティアイテムを扱う
マジックコレクションクラスだお。
魔法は全部で6種類あったから配列の最大値を6として
スタティックに切ったお。
____
/⌒ ⌒\
/( >) (<)\
/::::::⌒(__人__)⌒::::: \
| /| | | | | |
\ (、`ー―'´, /
ああ。わかっている。ニコニコクロニクルプロジェクトに
入りたての頃に作ったクラスだな。
で、最近オマエが作った潜在能力クラスPotentialCollectionだが、
/ ̄ ̄\
/ _ノ \
| ( ●)(●)
. | (__人__)
| ` ⌒´ノ
. | }
. ヽ }
ヽ ノ
/ く
| \
| |ヽ、二⌒)
潜在能力クラスPotentialCollectionは
魔法を使えないキャラクターの魔法代替能力だお。
相変わらず企画はわけの分からん仕様を打ち出してくるお。
ポテンシャルに「邪鬼眼」ていったい何がしたいんだお。
/ ̄ ̄ ̄\
/ \
/ ─ ─ ヽ
| (●) (●) |
\ (__人__) __,/
/_______\
魔法が使えないキャラクターの魔法代替能力だと言うことは
一応わかってんじゃねーか。
だから、同じようにこのPotentialCollectionとやらを
使えるかと思ったんだが、
/ ̄ ̄\
/ _ノ \
| ( ●)(●)l
. | (__人__) |
| ` ⌒´ |
. | }
. ヽ }
ヽ ノ
/ く なんだこれは。こっちは
/ ヽ ArrayListで返してくんじゃねーか。
public class PotentialCollection implements Collection {
ArrayList abilityItems;
// 配列でアビリティを扱う。
public ArrayList getAbiiltyItems(){
return abilityItems;
}
}
そうだお。ArrayListは便利だお。
こっちを使うときはキャストして使えお。
____
/⌒ ⌒\
/(● ) (● )\
/:::⌒(__人__)⌒:::: \
| mj |┬-| |
\ 〈__ノ`ー'´ /
/ノ ノ ‐‐‐‐一´\
やる夫。仕様変更のメールは見たか?
潜在能力は魔法の代替ではなくなった。
つまり、魔法も使えて潜在能力も持てる
キャラクターを実現することになる。
/ ̄ ̄\
/ _ノ \
| ( ●)(●)l
. | (__人__) |
| ` ⌒´ |
. | }
. ヽ }
ヽ ノ
/ く
/ ヽ
そんなメール
____
/::::::─三三─\
/:::::::: ( ○)三(○)\
|::::::::::::::::::::(__人__):::: | _____
\::::::::: |r┬-| ,/ .| |
ノ:::::::: `ー'´ \ | |
全然知らないお
____
/:∪::─ニ三─ヾ
/:::::::: ( ○)三(○)\
(:::::∪:::::::::: (__人__)::::: i| ____
\::::::::: |r┬-| ::::ノ | |
リ:::::::: `ー'´ ::\ | |
邪鬼眼も、ベギラモも使えるキャラクターが出てくる様な
仕様じゃゲームバランスが崩れて
発売3日でワゴンに放り込まれるようになるお。。。。
______
/:∪::─ニjjニ─ヾ
/:::li|.:( ○)三 (○)\
(:::||!.:∪::::: (__人__)):::: i| ____
)::::::::::::: |r┬-| li::::/ | |
/::::::::::::::: `ー ' ::::::ヽ | |
/ ̄ ̄\ 2週間前には故障表と一緒に
/ \ 仕様変更メールが行ってるだろ
|:::::: |
. |::::::::::: |
|:::::::::::::: | ....,:::´, .
. |:::::::::::::: } ....:::,, ..
. ヽ:::::::::::::: } ,):::::::ノ .
ヽ:::::::::: ノ (:::::ソ: .
/:::::::::::: く ,ふ´..
-―――――|:::::::::::::::: \ -―,――ノ::ノ――
|:::::::::::::::|ヽ、二⌒)━~~'´
キャラクタークラスで保持している
魔法コレクションと、潜在能力コレクションをリスト表示する
メソッドがあるだろう。listAbilityCollection()だな。
魔法とか潜在能力以外にも
アビリティコレクションがさらに追加されたらどうすんだ?
/ ̄ ̄\
/ _ノ \
| ( ●)(●)l
. | (__人__) |
| ` ⌒´ |
. | }
. ヽ }
ヽ ノ
/ く
/ ヽ
public void listAbilityCollection(){
// 潜在能力コレクションの取得・・・
// 魔法コレクションの取得・・・
ArrayList ptntItems = potentialCollection.getAbiiltyItems();
AbilityItem[] mgcItems = magicCollection.getAbiiltyItems();
// 潜在能力コレクションはArrayListを返すのでキャストしてリスト
for( int idx = 0; idx < ptntItems.size(); idx++ ){
AbilityItem abiItem = (AbilityItem)ptntItems.get( idx );
System.out.println( abiItem.getName() );
// ・・・
}
// 魔法コレクションは配列をそのまま返すので直接参照してリスト
for( int idx = 0; idx < mgcItems.length; idx++ ){
AbilityItem abiItem = mgcItems[ idx ];
System.out.println( abiItem.getName() );
// ・・・
}
____
/ \ ・・・・ど、ど、
/ ─ ─\
/ (●) (●) \
| (__人__) | ________
\ ` ⌒´ ,/ .| | |
ノ \ | | |
/´ | | |
| l | | |
ヽ -一ー_~、⌒)^),-、 | |_________|
ヽ ____,ノγ⌒ヽ)ニニ- ̄ | | |
__ ____
//  ̄ \\ ど、どう、どし、ど
//--.-- -─\\ どう、どうし、どしうよう
// (● ●) ((●(●) \
.| |.| ( . ((_人_人__) | _ _== =
\\ ⌒ ` /,/ | |  ̄ ̄ ̄  ̄| ||
ノ \\| | | | ||
/´ | | | |
| l | | |||
ヽ -一ー_~、⌒)^),-、 | |_________| |
ヽ ____,ノγ⌒ヽ)ニニ- ̄ | | | =
