キリンめも(技術)

記事を書いています #rails #swift #JS #UE4 #unity

スマホアプリ入門書を読んだ。(Unity)

今働いている会社がUnityの開発現場で、入門書を読む機会があったのでメモ。

覚えるべきこと

・リファレンスを読むべし
 
docs.unity3d.com

検索方法・質問方法

質問NGワード

【一度にすべてをやろうとする】
目的の動作を一度に達成しようとするのは、問題をあえて難しくするようなものです。課題はステップに分けて、ひとつひとつ解決していきましょう。それが、目的を達成する早道です。
テニスを習い始めたら、試合で勝ちたい、あるいはいいプレーをしたいと考えるのは当然です。ただ、だからといって、いきなり試合をこなして上達しようとするのは無茶です。サーブやレシープ、ボレーといった基本をひとつずつ練習し、場合によっては基礎体力も鍛えて、それから試合に臨むのが結果として上達の早道になります。

【具体的なスクリプトを教えてください】
その前に、具体的な処理の流れや考え方は理解されましたか? アクセル・ブレーキ・クラッチの機能を「理解」せず、単に操作の順番だけ「丸覚え」してたまたま車が走ったとしても、それは自動車を運転できたことにはなりません。それどころか、危険でさえあります。

【~してしまいます。どうしたらよいでしょう】
たとえば「道に迷ってしまいました。どうしたらよいでしょう?」と尋ねられても、答えようがありません。最低限どこに行きたいのかという目的地を伝え、現状はどうなっているのか具体的な説明が必要です。単に困っているという悩みを相談したいのでしたら、占い師か精神科医を訪ねるべきです。
もしかすると、たまたま同じ現象(エラー)に遭遇して、しかも原因をつきとめ、それが偶然にも自分と同じで、さらに幸運なことに解決策まで見いだした人に出逢えることを期待しているのかもしれません。しかし、それは「白馬の王子様」を夢見る少女と同じ幻想です。

【うまく説明できません】
「うまく」説明できなくて、結構です。ただ、へたでも何でも、説明はしてもらわないことには、話が先に進みません。
言葉の通じない旅先で、親御さんか恋人あるいはお子さんが原因不明の急病になったとしましょう。お医者さんに説明しようにも、言葉がわかりません。そんなとき、「うまく説明できません」といったきり、放っておきますか?辞書を調べ、身振り手振りを交え、絵を描いて見せたり、自分にできるあらゆる手段を使って、状況を詳しく正確に伝えようとするのではありませんか?

スクリプトはわからないので】
スクリプトを書こうとして、質問されているのではないのですか? でしたら、わからないでは済まされません。
回答者に希望のスクリプトを作成してもらって、そのまま使いたいということでしたら、それは「質問」とはいいません。「作成依頼」もしくは「発注」です。それなら、ご予算も伝えるべきでしょう。もちろん、それを0円とされるのも自由です。ただ、ご自分が生業とされている仕事を、見ず知らずの他人にタダでやってくれといわれたとき、どう感じるかは想像してみる価値があります。

スクリプトを見てください】
実際のスクリプトを見せるのは結構です。しかし、問題部分の切分けさえしていないスクリプトを、何の説明もなく羅列するのはやめましょう。正しく動作しないスクリプトというのは、チューニングの合っていない楽器のようなものです。そのまま何もいわず、全曲フルに聴かせるのは、嫌がらせでしかありません。
「ローマの一番よい三流のホテル」。これは、あるイタリアのホテルのホームページ上に、実際に記載されていた文です。もちろん、誤訳です。正しい日本語に直してくださいと頼まれたら、何と答えますか?「いったい何がいいたいの?」と聞返すのではないでしょうか。間違った日本語だけ見せられても、本当は何を伝えたいのかという意図がわからなければ直しようはないのです(なお、原文は"superior 3-star hotels in Rome"のようで、「三流」ではなく「三つ星」とすべきでした)。

【第三者から見てわからない】
119番に「隣の家が火事です!!」と叫んでも、当然のことながら消防車は出動できません。「隣の家」はあなたにとって明らかなのでしょうが、あなたがどこにお住まいなのかわからないからです。
「読込んだ画像がちゃんとした大きさで表示されません」などというご質問も同じです。ちゃんとした」大きさというのはどういう状態で、どうなると「ちゃんと」していないのでしょう。もとのファイルの大きさが、変わってしまうといいたいのかもしれません。しかし、何かサイズ変更の処理をしたのであれば、もとのままの大きさであれば逆に問題です。つまりどうしたいのかという意図がわからなければ、表示されている画像を見ても、「ちゃんと」しているのかいないのか判断できないのです。
ご質問は、複数の第三者が文面を見て、そのポイントにおいてほぼ同じイメージを想い浮かべることができるように客観的にご説明ください。そして、問題や希望とする動作のご説明は、第三者がその内容を手元で再現できる程度に、具体的にお書きいただく必要があります。

【問題を切分けない】
診察で「今日はどうしました?」と訊かれて、「実はうちの嫁が...」と愚痴をこぼし始めるお年寄りの笑い話があります。お嫁さんの話は、診察には関係がありません。では、「足を挫いてしまって」だったら? そこが内科の診察室でしたら、やはり場違いということになります。
ムービーを実際に作成するには、さまざまな作業があります。しかし、質問されるときには、その問題に関連する部分を切分けて説明しましょう。
よくある例が、「外部テキストを読込んで~したところ」から延々と説明を始められる、診察室のお年寄りに近いパターンです。「外部テキストから読込まずに、直接テキストを設定すると問題は発生しませんか?」と訊かれて、もし答えが「発生する」でしたら、外部テキストの読み込みは問題と直接「関係」のない話です。
あるいは、胃の検査をする際には、空腹にしてくるよう指示されるはずです。胃に余分なものが入っていたら、胃の状態を正しく知ることができないからです。
胃が満腹のままどこが悪いのか調べるのは、名医でも困難で、無謀といえます。また食事も抜かず、胃に余分なものが入った状態で、どこが悪いのか教えてくれとオーダーするのは、傲慢な態度と思われても仕方ないでしょう。

【問題を絞込まない】
道に迷ったとき、やみくもに歩き回るのは危険です。まずすべきことは、立ち止まり地図を開いて、今自分がどこにいるのか見当をつけることです。事件が発生したら、犯行時刻を推定します。そして、その時刻をもとに、容疑者を絞込みます。同じように、問題が起こったとき、それがどこからどこまでの処理の間で発生しているのかを絞込む作業が大切です。その絞込みをせずむやみに検索したり試したりするのは、犯行時刻を特定せずにキャッチセールスのような聴込みをするのに等しいです。
どうしても見当がつかない場合には、ムービー中の要素(Flashなら、フレーム・シンボル・インスタンス。あるいは、スクリプトステートメントや式の項)を片っ端から削除していきます。その都度動作を確認して、問題の現象が消滅したら、その直前に削除した要素の中に容疑者がいます。そうして、これ以上ひとつの要素も削除できないという状態になったら、改めてその内容を詳しく確認しましょう。おそらく、この時点でおおよその目星はついてくるはずです。

【問題を単純化(シンプルに)しない】
お手玉を初めて覚えようとするとき、まずふたつか3つで始めるでしょう。いきなり10個でやれといわれたら、ほとんどの人は無理だと答えるはずです。ところが、複雑な処理が意図どおりの結果にならないとき、処理を複雑にしたまま頭を抱える人が少なくありません。
10個のお手玉を目標にするにしても、いきなり10個を投げたのでは、到底できるはずがありません。まずふたつか3つで練習して、それができたら徐々に数を増やしていくというのが賢明です。処理内容も、いくつかのステップに分けたり、あるいは本質を変えない範囲で単純化したり、1回に取組む規模をできるかぎり小さくする工夫が必要です。

【よくわかりません】
これは、お医者さんの診察室で「どうしました?」と尋ねられて、「具合が悪いのです」と答えるようなものです。確かに、そのとおりでしょう。でも、お医者さんには、基本的に具合の悪い人しかきません。「具合が悪い」というのは、何も情報を伝えたことにならないのです。
必要なのは、どこまでならわかったのか、そしてどこからわからないのかという、具体的なご説明です。「よくわかりません」という答えが適切と考えられる例は、警察で取調中の容疑者と、国会で証人喚問を受けている政治家くらいでしょう。つまり、何も答えたくない場合に、使うことばです。