2009/11/26

コンパイラのお仕事 番外編

ぐはーーーーーーー! 笑うしかない竹井です。「コンパイラのお仕事 その 3」を執筆してるぜー、みたいな話を友達としていて、その途中で壮大な過ちに気付いてしまって、もはや地下にいる人間で大爆笑状態です。

えっと細かい経緯を話すと、「その 3」では型システムについてのお話を書いてるんですが、うちのコンパイラには今のところ型システムが搭載されてないんですよね。というのも、実験の課題として与えられるレイトレーシングのプログラムは毎年同じように使われているもので、動くのが当たり前、、、つまり型の整合性も取れてて当たり前・・・という感じなんですよね。さらに、与えられているプログラムは (create_array というライブラリ関数以外) 単相型のみであってタイプ ジェネリックはない上に、O'Caml の演算子では整数は + なのに対して浮動小数点は +. のように、別の演算子を使うんですよ。だから、まったく型システムの存在を考慮しないで、コンパイラが書けちゃうんですよ・・・

少なくとも・・・ほんの 10 分前までそう思ってました

それでつい一昨日、うちの班でもシミュレータさんが初画像を出してくれたんですよ。まぁちょっと薄暗いんですが・・・。こんな感じです↓ まぁ新井さんが動くまでの経緯やなんかを記事に書いてくれると信じてますので、乞うご期待。

うちの班の出力画像正解画像

で、たまたま今日さっき生協購買部から帰ってくるとき、「最近 CPU 実験日記にマジメな記事が少ないんじゃないー?」みたいなことを言われて、「いや、その 3 を執筆中だけど、うちのコンパイラは型システムがないから、書くのが大変なんだ」的な返答をしたら、「本当に型の考慮しないでも平気なの?」と言われて、上に書いたような返答をしたら・・・「それ、不等号とかの型判定はどうしてんの?」と・・・。

ガーーーーン

えっと、不等号の型を変えるのを忘れていました、完全に。つまり、整数の大小比較も浮動小数点の大小比較も、まったく同じ slt というマシン命令を使ってました。いやー・・・本当に完全に大小比較について整数と浮動小数点を使い分けるのを忘れてましたよ。まさかこんな罠があったとは・・・。

それでも・・・急いで地下に戻って「いや、そんなことはない・・・」と言い聞かせながら(笑) シミュレータさんが僕に送ってきた命令実行の統計情報を見てみると・・・

統計情報

そーですね・・・たしかに slt という整数の大小比較命令は大量に発行されてるのに、fslt という浮動小数点の大小比較命令はなっしんぐ orz ナンテコッタ

でも、まいっか、画像でたし♪

2009/11/24

第60回 駒場祭

実は音楽部合唱団で指揮者をしている竹井です。事後報告ですが昨日まで 3 連休の間、駒場祭でした。東大では年に 2 回文化祭があって、5 月には本郷キャンパスで五月祭が、11 月には駒場キャンパスで駒場祭があります。五月祭は各学部の発表・展示などもあってよりアカデミックな雰囲気ですが、駒場祭は 1,2 年生が通うキャンパスで行われるので、模擬店が多かったり、バンドのライブやダンスのパフォーマンスなど若いイメージの企画が多かったりします。本当は事前に記事を書きたかったんですが、なにせ先週水曜に TDL 行って、木金と授業、さらに金曜午後は前日準備・・・ってな感じでまったく余裕がなかったんです。まぁそういうわけで、残念ですがお許しあれ。

駒場キャンパスの正門から 銀杏並木。今年は黄色くなるのが遅いかな?

まず、僕の所属している音楽部の話から。うちは合唱喫茶という名のカフェをやってまして、前で団員が歌っているのを聴いて楽しんでもらいながら、ケーキやコーヒー紅茶などを楽しんでもらうという企画。僕らは男声合唱団なんですが、この企画自体もう長くやっているんだそうで、僕の知る限りは 1999 年の記録まではさかのぼれました。普通に 30 年とかもっと前からやってたみたいな話も聞いたことありますけど・・・ (ちなみに団自体は来年で 90 周年だそうです)。日曜日には 900 番講堂というパイプオルガンもある場所で演奏もしましたよ。

900 番で指揮しました

というか半ば仕組まれたかのようなポスターを作られてしまいました・・・。前日準備の際、いつもの教室へ向かっている途中、なにやら 1F の階段に大きな絵のキモいビラが数枚。よーくながめてみると自分の顔じゃありませんか! これはびっくりして、部屋に行ってみると責任者が、「あ、竹井さん! まことに申し上げにくいんですけど、竹井神の顔、ビラに使わせてもらいましたけど、いいですか? っていうかもう使っちゃったし、いいですよね、てへ!」とか言い出す始末・・・(笑) ナンテコッタ。まぁ・・・それにしても良くできてる。まったく悲愴感が漂っていない叫びだ。

何やら変なビラが・・・ そしてよく見たら自分だった・・・

次に、TSG (理論科学グループ) とか UTMC (東大マイコンクラブ) とか行ってきました。まぁ外の人間の僕から見ると、どっちも同じ空気が漂ってるように見えるんですけどねー。Team ksk の xyx さんとか iwi さんとか wata さんは TSG にいて、うちの班にも UTMC に所属してる人がいるんですよね。地下民にはこの 2 つのサークルにいる人間が多い気がします。まぁそんな縁もあって、僕も遊びに行ったんですけど。遊びに行ったら、何やら展示されてる人がいました。

その名も「プログラマ展示」、なんというか展示品を作るのが間に合わなくて、仕方ないから作ってる現場を展示しちまえ、的な何かという匂いがプンプン(笑) しかも、よーく目をこらして画面を見てみると、開いてるプロジェクトは CPU 実験のシュミレータだったり・・・。ははは、結局そのゲームとやらは完成したんだろうか・・・、彼はコミケも控えてるはずなんだが。

まぁその他、目撃したものなど↓

アドバルーンモザイク画
駒場祭 開祭中!60 周年記念 モザイク画
 
露店河童踊り
模擬店いっぱい水泳部の河童踊り
 
学内ツアーガベージ コレクション
人気の学内ツアー環境配慮。ゴミ分別は 9 種

いやはやお祭りは賑やかでいいものです。おかげで CPU 実験が進みやしない(笑)

2009/11/19

TDL 行ってきました

こんにちは、いつも陽気な竹井です。課題がそろそろたまってきて、だいぶ忙しくなってきました。そして我々 Team C# も 1st アーキテクチャがそろそろ大詰めを迎えてきました。僕のコンパイラもアセンブリを吐けるようになって、やっとハードウェア係に仕事がまわっていきそうかな、という感じです。だがしかしそんななか、実は月曜日に喰いタン班が実機でレイトレースを完動させてしまって、Team ksk の後を 2 位で追っていたつもりが、いっきに抜かれてしまいました・・・ショボーン。まぁ、そんなの気にしないで、今週末までにはレイトレースさせるぜ、なんていう目標で進めております。

さてさて、それで本題です。タイトルにあるとおり、昨日 TDL に行ってきました。あの東京ディズニーランド、夢と魔法の王国ですよ!! もうね、これでもかってくらいに 1 日遊びつくしましたよ。そもそものコトの発端は先週の中ごろ。喰いタン班の人が僕に「いつも社員はしゃぎすぎ、だけど面白いからもっとやれ! ってか、社員が一番はしゃぎそうな所で、興奮してる社員を見たい」とか言い出したのがきっかけ。ちなみに「社員」っていうのは僕の地下でのニックネームです、よくわかんないけど・・・。でもまぁ助教の先生たちにまでそう呼ばれてるんだから仕方がない(笑) まぁそんなこんなで、いきなりディズニーに行く社員旅行企画が発足したのでした (ちなみに 11/18 はミッキーの誕生日だったんですが、TDL では特に何もやっていなかった模様)。

集合写真!

行ったメンツは総勢 8 名。喰いタン班から nnnuu さん含め 4 人、Team C# から岡原と僕、Team ksk から ksk さん、あと工学部の方が 1 人。なかなか賑やかなメンバで本当に楽しかったですよ。あぁ社員旅行とはいっても、別に企画したのは僕ではなくて、その言い出しっぺの彼です。ただ、なんでディズニーになったかというと、僕の地元が浦安だから、っていう至って単純な理由。行ってみれば友達をお庭に呼んだ気分ですね。そんなんだから、インパークしてからは色々ガイドっぽいこともやったり・・・。最初に半分に分かれて、4 人はビッグサンダーの FP を取りに行って、僕ら 4 人はレストランのプライオリティ シーティングの予約に行ったり。なかなか計画的にパークを回ると、2 倍も 3 倍も楽しめておいしいですよ、本当に!

nnnuu さん 党員さん

僕個人のお勧めでは、ショーやパレードなどはいいですね。どうしてもアトラクションはいつ行ってもあまり大きく変わらないですけど、ショーとかパレードなんてのは生身の人間が演じてるので、ダンサーの活きいきしたところがとても躍動的で大好きです。あー残念だったのは、ショーベース 2000 でいつもやっているワンマンズ・ドリーム II が事前に抽選する形式に変わってしまったこと。11/10 からだそうで、お昼頃にそれに気づいて急いで席を取りに行ったのに、抽選から外れ。抽選とはいってももちろん、早い時間に行ったほうが当たる確率は高いみたいです。ちょうど先月までディズニーシーのアメリカン ウォーターフロント前特設ステージでやっていたハロウィーンのミステリアス マスカレードと同じシステムです。あーあ、ワンマンズ ドリームはぜひ見たかったのに残念・・・

ちなみに浦安市民として補足しておくと、浦安市では成人式がディズニーランドで行われるというのはとても有名な話で、僕も今年の 1 月に行ってきました。ちょうどゲスト リレーション横の広場で、市から送られてきた封筒とパーク チケットを交換する形になっていて、ショーベースで特別イベントが行われます。市長の挨拶のほか、ディズニー アンバサダーからも一言あったり。ミッキーたちも出てきてなかなか楽しい雰囲気でした。成人式実行委員会への立候補し忘れたのが悔やまれて仕方ない・・・。イベント後は 1 日パーク内で遊べるので、小学校時代の友達と再会して遊べるということで素敵ですよ。まぁ着物姿でアトラクションに乗ってる人だらけですごく異様な感じですが。ちなみに残念ながら、パークのキャパシティとか市の予算とかの問題で、この成人式も来年くらいで終わりっぽいような話を聞きました・・・残念。

話を戻して・・・結局この日は、うちの班の党員 (岡原さんのニックネーム) の強い強い要望により、アトラクションを中心に回りました。行ってそうそうビッグサンダーマウンテンとスペースマウンテンに朝から乗ったり、お昼前にはカヌー漕いだりもしました。あー、カヌーはなぜか猛烈に速かったです・・・ふつうの 2 倍近くのスピードでてて、みんな本気で漕ぎまくってたような気がー(笑) 他には、コーヒーカップに乗って、カップを回しまくったりー、、、僕は ksk さんと一緒に乗って、二人でぐるんぐるん回してて、いやー本当に調子乗りすぎた、、、あはは♪ 夕飯は結局、カリブの海賊の横にあるブルーバイユというレストランでゆったりと。夜のエレクトリカル パレードもちゃんと見たし、満足満足。花火を見た後は、閉園前で空いてたホーンテッド マンション。クリスマスの装いかと思いきや、「ナイトメアー・ビフォア・クリスマス」からジャックが来てて、アトラクション内が素敵な飾り付けのスペシャル バージョンになってました。そして最後の締めに It's a small world. へ。僕はこれ大好きですよー!

はい、そんなこんなで 1 日 CPU 実験を放り出して遊び倒した日なのでしたー。今度はディズニーシーにでも行きたいな。

2009/11/16

素数

久しぶりの安息日を楽しむつもりが・・・先週末は猛烈に忙しかった竹井です、こんばんは。昨日の日曜日、家に帰ってテレビつけたら、NHK スペシャルでリーマン予想についての番組やってて、ちょっとそれにそそられて記事を書きたくなっちゃいましたもんで、ちょっと。

実は昔、素数が織り成す理論に心底から陶酔していた時期があって (いまでも素数は大好きですけど)、整数論についての本を色々読んでみたり、素数列挙のアルゴリズムを色々書いてみたり・・・、挙句の果てに RSA 暗号のシステムを自分の手で作ったことさえありました。思えば中高生のころ、まだ若かったですね。ちなみに、番組の途中で、マーカス デュ ソートイというオックスフォード大の教授が出てましたが、この方が書かれた本の訳書「素数の音楽」を読んであまりにもそれが面白くて、原著まで買ってしまったほど。

素数の音楽 (原著と訳書)

最初に僕が RSA 暗号を作りたいと思ったモチベーションは良く覚えてはいませんが、妖精現実 フェアリアルという Web サイトにはだいぶお世話になりました。ここでは JavaScript を利用した RSA 暗号の構成方法などが事細かに説明されていて、巨大整数を扱う方法、素数の探し方 (素数判定方法)、実際の暗号化のアルゴリズム、そして高速化など多くのことを学びました。

// C# によるエラトステネスの篩の実装
var n = 1000;
var sieve = new bool[n + 1];
var m = (int)Math.Floor(Math.Sqrt(n)) + 1;
for (var i = 2; i <= n; i++) sieve[i] = true;
for (var i = 2; i < m; i++)
    if (sieve[i])
        for (var j = i * i; j <= n; j += i)
            sieve[j] = false;
for (var i = 2; i <= n; i++)
    if (sieve[i])
        Console.WriteLine(i);

僕自身は中学 3 年のころ、もうそのときにはすでに C# を使っていて、RSA 暗号の実装をマネするのに UInt4096 という多倍長整数の実装などからガリガリやりました。先ほどの Web サイトの JavaScript 実装では、内部に文字列で長整数を保存するという方法をとっていたみたいでしたが、C# で実装するにあたって高速に演算させることを念頭に置きました。そこで byte 型の 512 要素配列を使って、加減算はポインタを利用して short 型の演算に置き換えたり、乗算についてはなるべくループ回数を減らしつつ楽に演算を行えるようにするなど・・・本当にいろいろ今の自分の原点のようなところがありましたね。今よりも、断然頭が柔らかかったと思います。そしてそれだけあの時に書いたプログラムへの思い入れも大きいです。

RSA 暗号 (1024 ビット) の鍵生成のデモ

そういえば高校の時、かなり感動した証明がありました。ベルトランの仮説というものをご存知ですか? いかなる 2 以上の整数 n について、必ず n と 2n の間に少なくとも 1 つは素数がある、というものですが、これはチェビシェフによって初等的な証明が与えられています。ほとんどが二項係数 (組み合わせの数 nCk のこと) をいじくりまわすだけで示すという感じでして、高校生でも十分理解できる内容でした。素数が登場するこんなに素朴で根源的な命題に対して、自分が持ち合わせているツールで証明が与えられるということを知ったのは、本当にうれしかったですね。

RSA 暗号の原理

というところで、ここで唐突に RSA 暗号の仕組みをちょろっと紹介してみましょうかね。やっぱり、素数が一番活躍している場所って言ったら暗号系だと思います。ただ暗号っていうと、結構複雑なイメージがあるかもしれませんが、原理はすごく単純です。あくまで触りしか書かないので、バックグラウンドの理論が知りたければ適当に調べてください。では、はじまりはじまり。

まず、最初におっきな素数を 2 つ見つけてきます。こいつらを p, q としておきます。そして n = pq, u = (p - 1)(q - 1) という 2 つの値を計算します。ここで、適当に素因数に p, q を持たない適当な数 α を選んできて、うまい具合に αβ ≡ 1 (mod u) となるような β を求めます (まぁ実際には拡張ユークリッドの互除法というアルゴリズムを使いますが) これで準備は終了です。公開鍵は αn、秘密鍵は βn になります。

はい、いよいよデータの暗号化の段階です。あらかじめデータは数値データに変換しておきます。たとえば d とでもしておきましょう。暗号化は単に dα mod n という式を計算するだけです。この値が c という暗号化されたデータになります。復号化するには逆に cβ mod n という式を計算するだけ。本当に単純でしょ? 実際にやってみましょう。

素数を 2 つ選んできます: p = 83, q = 79
n = pq = 6557, u = (p-1)(q-1) = 6396

そして鍵のペアを作ります。まず片方の α を決めます: α = 89 (公開鍵)
この α に対し、αβ ≡ 1 (mod u) となる β を計算します: β = 3737 (秘密鍵)

実際に暗号化してみましょう。適当にデータを選びます: d = 231 (平文)
(d^α) mod n = (231^89) mod 6557 = 1912 (暗号文)
そして元に戻してみます。
(d^α) mod n = (1912^3737) mod 6557 = 231 (復号化した後の平文)

というわけでうまく行きました!

そんなこんなで、なんか取りとめもない記事になっちゃいましたが、、、やっぱり素数って美しいですよね! こんなまとめ方でいいのか・・・ははは(笑) ではでは

2009/11/14

麻雀で学ぶ計算機アーキテクチャ

こんにちは。team C# の花元です。今日は地下 (学生控室) で大流行している麻雀について語りたいと思います。え、麻雀と計算機アーキテクチャに何の関係があるかって? 先日麻雀で鳴くとき、その関係性に気付いてしまったのです。

実物の牌にあまり触れていない人はこんな打ち方をします。

  1. 鳴くことを宣言する
  2. 自分の牌をさらす
  3. 相手の捨て牌から牌を持ってくる
  4. 打牌

ところが雀荘なんかで打ちなれている人は鳴くときも進行が速いんですね。どういうことかというと、こういう打ち方をします。

  1. 鳴くことを宣言する
  2. 自分の牌をさらす
  3. 打牌
  4. 相手の捨て牌から牌を持ってくる

打牌の速さに無頓着だった僕はこの打ち方に大変感心しました。どうしてこの打ち方をすると進行が速くなるのかというと、麻雀の進行に重要なのは打牌だからです。打牌が決定されることによってあがることが出来たり、次のツモが出来たりするんですね。一方、相手の捨て牌から牌を持ってくるなんて事は当然のことで進行に影響しない。

この考え方を採用したアーキテクチャがあって、これを遅延分岐と言います。先の例と対応させてみましょう。まず、打牌に相当するのが分岐命令です。その人が白を切るならば対面が鳴くのでツモを飛ばし、それ以外なら下家のツモに移れといった感じです。遅延分岐が実装されたアーキテクチャでは、このような分岐命令の次に「分岐するしないにかかわらず必ず実行される命令」を持ってきます。つまり例で言えば「相手の捨て牌から牌を持ってくる」です。

こうすることによって、分岐命令をじっくり実行しても皆イライラしません。鳴いた人が牌を持ってくる間に「この牌鳴いて喰いタンにしようかなーそれとも鳴かずにメンタンピンを目指そうかなー」とじっくり考えることが出来るのですから。その分、速くなります。高々鳴きの動作と侮るなかれ、実際のプログラムは 20% が分岐命令で出来ていますから、塵も積もれば結構速くなるようです。

こう考えると計算機アーキテクチャ高速化のヒントって、意外と身近なところにあるのかもしれませんね。

2009/11/12

近況報告

こんばんは、班長の竹井です。ポケモンを大絶賛する記事を書いてくれた岡原氏、じつは先週の中ごろに嘔吐と発熱という症状がでる風邪のテンプレート的なものを引いてたらしいんですが、そうとは知らない僕が席となりで授業受けてしまったがため、先週末から今週頭にかけて体温が 37°C 付近を単振動したり、空腹なのにスタマック オーバーフローしたりして、いろいろ大変でした。とはいうものの風邪だけに、本人はどこ吹く風、他人に風邪をうつせば治るんだそうで、彼は週末ピンピンしてたみたいです。マッタク。・・・と、しばらく更新をサボった言い訳をしたところで・・・、えと、写真つきで僕個人の出来事ふくめ、最近あったことを紹介していきます。

11/1 (日) ... 歌舞伎座に、仮名手本忠臣蔵という演目を見に行ってきました。しかもこの日が初日上演だったそうで。結局お仕事は休み。

歌舞伎座

11/2 (月) ... 終日お仕事。コンパイラがりがり。でも横では、ほぼみんなマンガ読んでるとか・・・。本から知識を得ることも重要な研究らしいですよ。

テスト中! マンガ読書中

11/3 (火) ... バイト先でヒマしてました。レジスタ割り当てとかプログラム書きました。写真ないよ。

11/4 (水) ... コマバック。植物科学概論のレポート提出しました。「植物を題材に研究を行うとして、そのテーマを提案し、具体的な研究手法と使用する対象を説明せよ」的な課題に、大真面目に「発電する植物」とかいうレポートを出しました。そしたら、先生の目に止まってしまって、一番前で立たされて発表させられてびっくりしましたよ。「合格!」とか最後に言われたけど、単位的な意味での合格なんだろうか・・・あれは。

レポート書いた

11/5 (木) ... リバーシ大会。実は先学期の実験に、O'Caml を使って「リバーシの強い AI を作れ」なる課題があったんですよ。その AI を戦わせて順位を決める学科内のコンテストが毎年 10 月末にあるんですが、実は決勝戦に残った人間が ICPC という別のコンテストのアジア地区予選に行ってて、決勝戦が延期されてたんですよね。それで結局、この日に決勝が行われました。ちなみに準優勝賞品が完全にネタなる Virtual Boy

リバーシ大会 準優勝賞品

11/6 (金) ... 岡原さんがくれた風邪で発熱しました。おかげで学校にいる間中、ふらふら。

11/7 (土) ... 特に何もなし。バイトとか部活とか。ちょっとプログラム書いたかも。

11/8 (日) ... 終日、布団でうなってました。あと、家でふすま張替えした。

11/9 (月) ... ラムダ計算ならいました。といっても、うちの学科の場合、すでに 3 分の 2 の人はどこかしらでチャーチ数とか Y コンビネータとかそこらへんの概念は、何かしらの授業で聞いたことがあるはず。

11/10 (火) ... ひさしぶりの実験報告。各班とも目立った進捗はなし。「チームくいたん」とうちの班は、あともう少しでシミュレータ上で画像が出せるんですけどね・・・。そういえば始めて、うちの班がガント チャートを出しました。夕方、アセンブリ第 1 号エミット。

ガント チャート

11/11 (水) ... 午前休講。ゆえに地下には行かなかったー。岡原さんがポケモン記事書きました。でも、ポケモンをやったことがない僕には何のことやらサッパリ。

はい、というわけでこれから、がんばって綺麗なアセンブリを吐けるように頑張ります。それと、「コンパイラのお仕事 その 3」もそろそろ書きたいです。ではではー。

2009/11/11

ポケットモンスター

党員こと岡原です。ご無沙汰しております。
Team C# で超絶大流行 (現在 2 名) のポケットモンスター (Pokemon) について語ります。

ポケモンといえば、ポケモンバトルでしょう。
そのバトルに欠かせないのが、ポケモン育成です。
今回は、そのポケモン育成について注目します。

育成には、3 段階のステップがあります。

  1. 計画立て
  2. 収集および選別 (個体値調整)
  3. 努力値調整

それでは、それぞれをみていきましょう。

1. 計画立て

これが一番要となります。

この後紹介する個体値、努力値をどんなにがんばったところで、
パーティー構成を間違えてしまえば、勝てません。

パーティー構成のやり方は人それぞれこだわりがあるもので、
人から教えてもらうようなものではありません。

たとえば岡原は、外見重視でウルトラマンの怪獣みたいなモンスターを集めたりします。

こだわりを追求する、でもその中で勝てる構成を考えていく。
この段階が一番重要で、一番楽しいところです。
このあとに紹介する個体値調整と努力値調整は、正直のところ苦行でしかありません。
なんなら、やらなくてもいいと思います。

勝てる構成を練る中で考えるべきは、対戦する形式にあわせてあげることです。

レベルについて Lv.50、Lv.100 など
数については 3 on 3、6 on 6 など

たとえば、 Lv.50 と決めれば、バンギラス、カイリュー (一部除く) などは使えません。
使えるモンスターの中でも、覚えられない技が生じます (ドサイドンのがんせきほう)。

6 on 6 では、ステルスロックなどの “場に設置される技” が驚異になります。
これに対抗し “こうそくスピン”、毒ポケモンをパーティーに入れるなどの対策をしましょう。
当然、設置に依存するパーティーは “こうそくスピン” 対策にゴーストポケモンを出してくるはずです。
それに対する対策も考えていく、、、。
ほかには能力アップのわざに対して “アンコール”、状態異常のわざに対して “みがわり” や “挑発”、
回復ポケモンに対して “どくどく”、対策は尽きることはありません。エンドレス。

パーティーの構成とともに考えるのが、ポケモンのわざです。
ポケモンのわざには、タイプ、威力 (効果)、命中の3つがあります。
わざのタイプと、わざをつかうポケモンのタイプが一致すると、威力が 1.5 倍になります。
ポケモンのタイプには、相性があり、これがポケモンの戦略をおもしろくしています。
必ず勝てる、というポケモンは存在しないのです。

2. 収集および選別 (個体値調整)

育てたいポケモンを考えたら、強いポケモンを捕まえましょう。

同じ種類のポケモンの中でも、強い弱いはあるのです。
これを決める要素に “とくせい”、“せいかく”、“個体値” があります。

とくせいは、その名の通りポケモンそのものがもつ特殊な能力です。
複数あるポケモンはランダムで決まります。このせいでかなり泣きます。
お目当ての個体値、せいかくになったとしても、とくせいがお目当てでないと、
泣く泣くそのポケモンは育てやさんに預けるしかありません。

せいかくは、一つの能力値を 1.1 倍、一つの能力を 0.9 倍します。
個体値は、能力に多少のブレをつけます。最高で 31、最低で 0 です。
以上からわかるように、影響力は “せいかく” > “個体値” になります。
調整しやすいのも"せいかく"です。
ポケモンをつかまえるときに、お目当てのせいかくと、とくせい"シンクロ"をもつポケモンを先頭にすれば、
出てくるポケモンはお目当てのせいかくを持つ確率が 50% になります。

個体値を調整するのは茨の道です。
まずは、お目当ての個体値が高いモンスターをゲットします。
お目当ての個体値が一つの場合はこれでおしまいなのですが、ふつうは一つに収まりません。
二つ三つあるのがふつうです。ですが、2 つにするのが現実的です。
これに合わせてポケモンを複数つかまえます。♂♀別でなくてはなりません。
♀をお目当てのせいかくできれば万々歳です。
先ほどのシンクロポケモンを使って、併せてお目当てのせいかくをねらっていきましょう。

そして捕まえたポケモンをそだてやさんに預けて、そこで入手できるタマゴを利用します。
お目当てのせいかくするのも、これを利用します。

タマゴからうまれてくるポケモンは、両親の個体値を 2 - 3 個受け継ぎます。
また、♀のポケモンに"かわらずのいし"をもたせることで、♀のせいかくを 50% で受け継ぐことができます。
さらに、♂のポケモンの覚えているわざを受け継ぐことができます。
これにより、本来覚えられない技を身につけることができます。
これと、メタモンはどのポケモンの♂♀ともタマゴを作れることから、
高い個体値と優れたせいかくをもつメタモンを使うことで、捕まえる作業を代替できます。

以上から必要なポケモンは、

  1. お目当てのせいかくと個体値 1 を持つ♀のポケモン
  2. お目当ての個体値 2 を持つ♂のポケモン

が必要になります。

まずは 1 と 2 を捕まえる作業にかかる時間ですが、意外とたいしたことありません。
1 と 2 からお目当てのせいかくと個体値 1、2 をもつポケモンを生ませることの方が時間がかかります。

しかも、、、これには “せいかく” と “とくせい” の罠があります。
たとえば、せいかくが♀でないと進化できなかっり、とくせいが違ったり、、とにかく泣きをみますが、
ポジティブに考えてください。そのポケモンを新たに親にすることで、お目当てのポケモンが出てくる確率が 2 倍になります。
人生ポジティブにいきましょう!!!!

3. 努力値調整

努力値の調整はとても簡単です。
ですが、知識が必要です。

努力値とは、各能力を上げることができるものです。
タウリンなどの薬を使うか、ポケモンを戦わせることか、パワーベルトなどの持たせるアイテムで手に入るポイントです。
タマゴから生まれたてのポケモン、捕まえたばかりのポケモンは努力値が 0 であり、自由に各能力値に振り分けることができます。

薬は一つで 10 努力値が手に入りますが、その能力値の努力値が 100 を超えると使うことができなくなります。
ポケモンを倒すことで手に入ることができる努力値は、ポケモンによって異なります。ぐぐりましょう。
ですが、ポケモンの長所と対応しているので、だいたいわかります (ワンリキーはこうげき +1 、イシツブテはぼうぎょ +1 etc.)。
もたせるアイテムは、上の倒したポケモンによる努力値とは別に、+4 上乗せすることができます。

全部で 510 振り分けることができますが、各能力には 255 までしか振り分けることができません。

また、ちょうど 4 の倍数になるように調整しましょう。
4 で割った商が有効になるので、 252 振り分けたものと、 255 振り分けたのは同じことになってしまいます。

以上です。

では、おさらいに、ポケモン育成の一例を紹介します。
金銀で大人気、ハッサムを育てるとします。

バトンタッチが使えるハッサム (進化前はストライク)
せいかく  :ゆうかん (攻撃 UP、素早さ DOWN)
引き継ぐわざ:バトンタッチ (グライガーから遺伝)
個体値   :攻撃 31、特殊 31
努力値   :攻撃 252、特殊 252、HP 4 (2 あまる)

まず、とくせいがシンクロ、せいかくがゆうかんなポケモンをつかまえる。

つぎに、そのポケモンを先頭に、ストライクを捕まえる。
攻撃の個体値が 31 (あばれるのがすき)
特殊の個体値が 31 (イタズラがすき)
をつかまえるまで、ポケトレを使って捕まえまくる。
どちらも♀でなくてはならない。♂は倒せ!

これとは別に、特殊か攻撃の個体値が高い♂のグライガーをつかまえる。

捕まえたら、ストライクの♀とバトンタッチを覚えたグライガーを育て屋に預け、タマゴを生ませる。
これにより、お目当てのせいかく、お目当ての個体値、引き継いだバトンタッチを持ったストライク♂をてにいれる。

最後にストライク同士を預け屋にあずけて。お目当てのものがでるまで頑張る!

お目当てのポケモンが捕まえられたらこっちのもの。

まずは薬 10 個で努力値を、攻撃 100、特殊 100 まであげる。
つぎに、特殊をあげる道具を持たせて、ポケトレをつかってワンリキー (攻撃 +1) と戦いまくる (38 回)
一回の戦闘で攻撃 +1 特殊 +4 されるので、 38 回の戦闘により、攻撃 138、特殊 252 となった。
次に、攻撃をあげる道具を持たせて、ポケトレをつかってワンリキーと戦いまくる (23 回)
一回の戦闘で攻撃 +5 されるので、 23 回の戦闘により、攻撃 253 特殊 252 となった。
最後に、HP をあげる道具を持たせて、ワンリキーと戦う。
これにより、攻撃 +1 HP +1 されるので、攻撃 254 特殊 252 HP 4 となり、努力値調整終了。
戦闘回数をかぞえるのにさえ間違えなければ大丈夫です。
回数分の道具を持って行き、毎回戦闘で必ず使うようにする、などがおすすめです。

これで、念願のハッサムをゲットです、おめでとうございます!!!