田舎ピーポーの個人ブログなんですが、見てくれている方、棒鱈という食べ物ってご存知でしょうか?
鱈(タラ)っていうのは漢字の通り、魚に雪と書くので、冬に獲れる魚なんですね。
うちの奥さんの両親は、時期になるとスケソウダラ漁をしている漁師なんですが、期間としては2月頃までなので、もうシーズンオフしているんですが、その獲れたスケソウダラを、真冬の期間ず〜っと外に干しておくんですよね。
そして干ささった鱈の事を「ボウダラ(棒鱈)」と呼んで、そのまま珍味として食べてもいいですし、保存食として調理する場合は水に戻して柔らかくしてから食べる、なんて事もあるみたいです。
実際の写真は、今食べきってしまったので無いのですが、、、w
奥さんの実家からお酒のつまみとして、アゴの筋肉強化するためのトレーニング食としても、この地区の人間であれば欠かせない食べ物なので、今度ゆっくりご紹介しようかな!
小顔効果もある可能性あるし!!
アフィリンクにも多分売っていると思いますが、1本100円とかで売ってはいないでしょうなw
あったけど、、、真鱈使用だなんて、贅沢すぎでしょw
真鱈は鍋とか刺身とかにして食べる高級魚なんだから、、、いだわしい、、、w
棒鱈はスケソウダラがいいのですよ!大抵、傷ついて市場に出せないスケソウダラを棒鱈にしてますからね。棒鱈になるまで3〜4ヶ月くらいかかるから、貴重な食材なんですよね、、よく考えてみたら。
もし1日1000PVとか見られるようになったら、棒鱈販売はじめようかなw
現状は波はありますが、1日1~10PVくらいで、UUにいたっては1~3人くらいですからね!
1000PVは夢のまた夢よw
もしそれ以上に見てくれる人が増えたら激安激ウマ棒鱈販売しますわw
産地直送の時代ですからね、間の手数料はなくなれば激安で販売できるようになりますし!
売り上げはもちろん漁師さんである、ご両親に返しますけどねw
、、あっ、当たり前かw
たらトークが盛り上がってしまったので本題に戻りたいと思いますw
CryptoZombies | イーサリアムでのゲーム開発を学ぶ
午後の部スタートします!
Interfaceの実践を開始します、という合図をします!
contract NumberInterface {}と宣言するのは前回の記事に書きましたね。
これを読んで理解できたのは、、、一番下の「関数がpublicやexternalである場合に限ることを忘れるなよ。」と行ってる部分だけ、、、orz..
こういう風に使えばいいんだよ、と言っているので、こういう風に使うんだ〜くらいでいいでしょうかね。。
って事で、テストだ!!
やべ〜、、どういうこっちゃいと思いつつも、「保存しておいた。」と言っているのでまず確認してみるか。。。
お〜、、、アドレスらしきものが入力されておりますな。。
ckってCriptoKittiesの略だろうな。初期化せよって書いているけど、初期化の方法なんてやったっけか?w
= 0を入れるわけにも行かないですからね、、、、、
少し分けて考えてみると、、、
①kittyContractという名前のKittyInterfaceを作成し、、という部分に関しては
KittyInterface kittyContract
となりそうだなぁと。
②ckAddressを使用して初期化せよ!と言っているので、ckAddressを入れてやればいいんだろうけど、そのまま入れていいのかわからないから、例を見てみようっと、、、
例:
NumberInterface numberContract = NumberInterface(NumberInterfaceAddress);
ってことは、= ckAddressではなくって、= KittyInterface(ckAddress);になるのかな?
組み合わせると、、
KittyInterface kittyContract = KittyInterface(ckAddress);
となると。。答え合わせしてみると、、、
なんとも課題クリア!!w
この作業をすることでkittyContractにckAddressのアドレスが代入されたって事になるって事なのね。
私の頭の中にはうまく代入されていないなぁ、、、w
まぁこのように初期化するよってだけは理解できたからまだよしとするかw
次っ!!
チャプター12:複数の返り値の処理
このチャプタータイトルを見て、思い出して欲しいのがgetKitty関数のreturnsの中身ですね。たしか10個ほど入ってましたよね、bool値とuint256型を指定してたパラメータが。
このチャプターではその複数ある返り値の処理について説明してくれてます。
※尻切れのため、multipleReturnsのreturnsの中身は、(uint a,uint b, uint c)が入ってます。
これが方法だという事ですね、、ふむふむ。。
multipleReturnsの返り値としては、、
a = 1,
b = 2,
c = 3,
という値が入っていると。
processMultipleReturnsでは複数に値を割り当てる方法として、
(a, b, c) = multipleReturns();
とすると、processMultipleReturnsの関数a,b,cにはそれぞれ、1,2,3という数字が代入された事になる。
getLastReturnValueでは、そのうちの一つの値だけ欲しいという例として、
(,, c) = multipleReturns();
とすることで、cに3が代入され、他の関数には何も代入されていないという事になると。。
テストでは最後のやり方が使われる事になりますので、テストに挑戦しましょう!
問題の根幹としてはkittyのgenesを取得するための関数を作成したいっていうのが目的ですな。
なのでそれを取得するための関数を作成して行きます。
1では、feedOnKittyという名前の関数を作れ、パラメータはどちらもuintで_zombieIdと_kittyIdで、publicで作成しろとのことなので、、
function feedOnKitty(uint _zombieId, uint _kittyId) public {}
となりますな。
2では、関数の中でまずはkittyDnaというuintの関数を宣言せよ、と言ってるので、、
uint kittyDna;
となる。
3では、関数を呼び出して格納せよ、と言っているので、呼び出す方法と格納する方法を思い出しながらやるのだが、注意書きがありますね、、、「欲しいのは最後のgenesだけだ」と言っているので、、先ほどの例を見直しつつ、getKitty関数の内容も見ながらやれればいいので、、、
kittyDnaに代入したいので、
kittyDna =
なのだが、このまま代入してしまうと、全てのパラメータが代入してしまうので、genesだけ代入したい場合は、、、
(,,,,,,,,,kittyDna) =
となる。。genesは10個目なので、コンマは9個入力してkittyDnaを入れると。
_kittyIdで、kittyContract.getKitty関数を呼び出し、という事なので、、
kittyContract.getKitty(_kittyId)
となるので、合わせると、、
(,,,,,,,,,kittyDna) = kittyContract.getKitty(_kittyId);
となる。
4では、feedAndMultiplyを呼び出し、_zombieIdとkittyDnaの両方を渡すのだ、と言っているので、
feedAndMultiply(_zombieId, kittyDna);
となる。
まとめると、、
function feedOnKitty(uint _zombieId, uint _kittyId) public {
uint kittyDna;
(,,,,,,,,,kittyDna) = kittyContract.getKitty(_kittyId);
feedAndMultiply(_zombieId, kittyDna);
}
となります。
以上でこのチャプターは完了となりますね!
長々とお疲れ様でした!!
明日でレッスン2終了できそうですな!!レッスン3からはなんかスムーズに行くかもしれないので、チャプターのペースが早くなるかもです!
なかなか難しいですが、やっていくうちにわかってくることも出てくるので、こればっかりはトライアンドエラーを繰り返して行くしか無いですね。
お互い頑張りましょう!!(自分に言い聞かせてますw)
ということで本日はここまで!!
明日も同じくらいのペースで更新していきたいと思います!!
アウトプットすることで自分の成長につながるので、ブログって良いものですよね。
学んで教えると、より学べるっていうね、、良いサイクルを生み出してますw
CryptoZombies | イーサリアムでのゲーム開発を学ぶ
明日も引き続き、更新いたしますので、見てくれている方、本当にありがとうございますね!
では、また明日!!