Awaken the power to apply for Ph.D. programs

はじめに

f:id:aerith7:20190424165909j:plain

私は2019年9月よりUniversity of WashingtonのAeronautics & Astronautics Doctoral programに進学予定の大学院生です。専門分野は航空宇宙工学であり、修士課程はISASJAXA宇宙科学研究所)にて小惑星における着陸軌道生成について研究を行ってきました。進学先の研究室は、SpaceXのFalcon9ロケットの垂直着陸に使用されているガイダンスアルゴリズムを研究開発した教授のラボで、かねてよりの第1志望の研究室です。この分野で世界でもトップの大学・研究室であり、受かったことが信じられないという気持ちとともに、次なる冒険に心が燃えております。そして2019年3月に東京大学大学院工学系研究科電気系工学専攻における修士号を無事取得し、現在渡米準備を進めています。

一年間、本当に苦しい戦いでしたがCU Boulder, UTAustin始め、出願校全てから合格を頂くことができました。このような望外の結果を得ることができたのは、助けてくださった数多くの方々のおかげだと思っています。本当にご支援ありがとうございました。文字通り僕の人生を変えてくださいました。受験中何より感動しましたのは、助けてくださった航空宇宙に携わる方々が口を揃えて「自分にお礼はいいから後輩に同じことをしてくれ」とおっしゃっていたことでした。このご恩は僕なりに後輩たちを精一杯手助けすることでお返ししていけたらと思っております。

その一環として、ここでは海外大学院受験において僕の得た知見を残していきたいと思います。航空宇宙の分野に限らず、工学部全体向け、特に海外大学院受験を考え始めた人向けに書くことを心がけるつもりですが、ある程度の偏りはご容赦ください(特にCSは分野として競争がかなり激しいので、感覚がかなり異なると思います)。「どのくらいで受かるのか?」ということにはあまり触れず、モチベーションがある人に向けてそれぞれの基礎的な紹介を行い、その後の海外大学院受験へのとっかかりとできればと思います。昔非常にご好評いただいた「 アポロのソースコード全部読む記事」を執筆してから3年あまり、宇宙という未開の地の探索で最も難しい過程の一つである着陸というミッションに魅せられるあまりついにアメリカでのPh.D.留学というところまできてしまいました。時間のない人は海外大学院受験で得た教訓と後輩に伝えたいことの項だけでも読んでいっていただければと思います。

aerith7.hatenablog.com

海外大学院受験で得た教訓と後輩に伝えたいこと

まずはじめに、今回の大学院受験への挑戦で得た留学における教訓について書いていきたいと思います。

結局、リソースは無限ではない。

海外大学院受験はSOP・推薦状・テストスコアなど様々な要素で総合的に合否が決定されます。そのため、全てのスコアをMAXにしようと頑張ってしまいがちです。しかしながら、時間は有限なものです。特に志望校選びや指導教官とのコンタクト・TOEFLのスコアアップ や所属研究室での研究そのものの忙しさなど不確定事項が数多く存在し、時間が足りなくなるのが常です。研究を頑張りつつ、海外大学院も受験して、、、となると、どれだけ余暇の時間を削っても、物理的な時間の制約に直面するかと思います(1日は残念ながら24時間以上ありませんし、身体的な制約が先に来る可能性も)。このようにリソースが限られている中で自分の長所を冷静に把握し、いかに第1志望校に通していくべきかの戦略を練っていくことが肝要かと思います。

一人では不可能な目標である。持てるものは全部使っていくこと(ただし心からの感謝を忘れずに)。

自分の持っているスキルセット・人脈は遠慮することなく全て余すところなく使うという気持ちは合格に必須だったと思っています。ここまで困難な目標になりますと皆総力戦になります。海外大学院受験では推薦状やSOPの添削、TOEFLの勉強、教授への紹介といった場面で必ず他の方の手を借りる場面が訪れます。感謝を忘れず、最高の助力がいただけるようにベストを尽くしましょう。そして願わくば、他の人に頼まれた時にも同じことを。。。

教授には積極的にコンタクトを取りましょう

世界中から人材が集まるため、本当に競争が激しいです。中には1日に20通以上博士課程進学の照会メールを受け取られている先生もいらっしゃいます。そのような中でコンタクトを取り、自分を認知してもらい、合格させて一緒に研究しようと思ってもらうためにはおとなしいコンタクトではダメです。国際学会・メール・現地訪問、ありとあらゆる手段でコンタクトを取りましょう。日本人の感覚で「ちょっと図々しいかな?」くらいでちょうどいいと思います(後ほど事前コンタクトの項で説明します)。

ランキングで選ばない

志望校を選ぶ際、大学ランキングで上から選んでいくのはあまりオススメしません。ある程度のランク以上の大学になりますと、Ph.D.の教育体制としては世界最高水準の環境が揃っているのに加え(当然その中でもTopにいくほどその傾向が強くなります)、専攻よりもさらに絞った専門分野で見た時にどこがベストかは大学ランキングと大きく異なる場合があります(専門分野ごとのオススメ度≠大学ランキングという意味)。自分の研究したい専門分野内でのベストの研究室・大学が必ずあるはずです。根気強く探すことを強くオススメします。また、志望しているラボの最新の研究動向によりそのラボの採用したい人材は年単位で容易に変化します(例えばそのテーマで科研費が取れるかどうかなど)。常にアンテナを張り続けるだけでなく、柔軟に対応できるように。

研究成果・活動の重要性

Ph.D.は研究能力を養う場です。「どれだけ優秀か」ではなく、「どれだけ研究能力がありそうか」という基準で選考を行なっていることに留意する必要があります。テストのスコアアップに時間をつぎ込みすぎ、肝心の研究で成果を残せず、したがって研究計画でもしっかりしたことが言えずそのまま・・・となってしまうことが多々あります。そしてそれは今後の本業である研究に悪影響を及ぼしかねません。個人的な意見ですが、研究にかけるリソースを減らしすぎた場合必ずどこかで苦しくなってしまうように思います(自分の現在の研究が強くない・志望動機書がかけない・インタビューを乗り切れない等)。あくまで自分の研究がメインであり、延長線上に留学が必然として存在している状態であることをオススメします。目の前の研究がある場合、まずはそれに注力しましょう。また、学部からでも、修士からでも、研究をしっかり行なっていないで受かっている人を僕は見たことありません。ここではあまり触れませんが、成果物はかなりシビアに見られているのでしっかり結果を残すことを意識しましょう。

人生の目的について

なぜPh.D.をとるのか、取った後に人生で何がしたいのか、そしてなぜ留学したいのか。これらの質問は受験中に何度も聞かれる質問です。自分の中でこれらの事項について一本筋の通ったストーリーを持っていてください。貴重な大学生活を通して、後輩の皆様方が自分だけの人生の筋書きを見つけることを願っています。

受験に関する情報は全て英語で探しましょう

慣れた人にはすごく当たり前の事に聞こえるかと思うのですが、今回読者として学部2-3年生または修士以降での進学を考え始めた学部3-4年生を想定しているため、ここに書いておきます。米国大学院の博士課程への進学競争は世界的に加熱する一方ですが、残念ながらそれに参加する日本人は非常に少ないのが現状です。そのため日本語で海外大学院受験に関して調べて得られる情報というのは体験談ベースの個々人の話であるのがほとんどであって、体系的なメソッドを記した信頼のおけるサイトというのは需要の少なさからか、ほぼ存在していない状態です。一方海外のサイトでは体系的な対策方法や情報はあふれんばかりの量です。繰り返しになりますが、受験に関する情報は全て英語で探しましょう。以上の前提を踏まえ、今回の記事では、受験において日本人がハマりがちな話・英語で情報を探索するに至るまでのとっかかりの話に絞って書いていければと考えています。

スケジュール

日本から海外大学院を受験し、留学する際の大まかな流れとしましては以下の通りです。

  1. 奨学金申し込み(8-9月)
  2. 海外大学院にApply(11-12月)
  3. Skypeなどによる面接(翌年2月頃)
  4. 格通知(翌年3月後半)
  5. 渡米(翌年9月-)

次に必要・必須なものを列挙していきます。

奨学金出願で必須 大学院出願で必須 平均所要時間
TOEFL 3ヶ月
GRE - 1ヶ月
GPA -
CV - 2週間
推薦状 1ヶ月
SOP - 1ヶ月
奨学金 - - 出願のみは2週間
事前コンタクト - - -

これらを総合して考えると、TOEFLの勉強は出願年の4月には遅くとも始めておきましょう。すでにTOEFLが終わっていても4月には動き出しておいたほうがいいです。ちなむとTOEFLを3ヶ月で100点に載せるのはかなり生存バイアスのかかった情報だと思います。出願年の1年前にTOEFLのスコアアップが終わっているのが一番望ましいのではないでしょうか。またここまでに出願に十分な量の研究成果・リサーチインターンの成果をきっちり収めておく必要があります。6月あたりに決心して動き出すとかなり忙しくなり、厳しい戦いを強いられてしまうかと思います。なるべく早めに準備を開始しましょう。参考までにですが、僕が知っている中で最も遅く海外大学院受験を開始した方は8月に開始しています。事前コンタクトについて後ほど説明します。

何が評価されるのか?〜合格する3タイプについて〜

結局博士課程の学生として採用したいのは「入ってから優秀な研究を行なってPh.D.を取得する見込みがある」学生です。その観点から 十分な研究経験が必須 なのは言うまでもないですが、他の評価点は以下の通りに大別されるのではないかと思います。概してトップ校に合格していく人は以下の3つの要素を複合して持っていると個人的には思っています。

  1. ポテンシャル型 : 「自分はリサーチのポテンシャルが十分ありますよ」というタイプ。
    • GPA・TOEFLのスコア・GREのスコアがよくあるべきですね。
    • 学部の間のリサーチインターンを数多くこなして来ることも必要です。
  2. 即戦力型1 -研究の強さ- : 「自分はAという分野でこのように素晴らしい成果を残してきているので、ABという分野に変わったとしても同じような成果を残すことが期待できますよ」というタイプ。
    • Publicationをかなり出しているタイプ。分野にもよりますが、トップカンファ2とかからこの項目が評価されるイメージ
    • 年数・環境にも依存することに注意
  3. 即戦力型2 -研究の関連性- : 「自分はA-1という高度に専門的な分野でこのように成果を残してきて、専門知識をしっかり持っているため、A-1分野の研究室ですぐに研究を始められますよ」というタイプ
    • 自分のPubでその研究室の論文から何本か引いているレベルでイメージしてください。
    • 面接などで事前の知識をしっかりアピールして行く必要があります。

何が言いたいかと言いますと、現在自分が持っている強み・経験を並べてみて、どのタイプで売って行くのに相応しいか見極めをするべきだということです。ここでどのタイプで売って行くかの見通しがたちますとSOPや面接などで一貫した主張をすることができると感じます。まずは自分がどのタイプで行くことができるのかよく考えて見ましょう。学士で出願するべきか、修士で出願するべきか も自ずと見えて来るはずです。

それぞれの対策について

ここでは前項で挙げた、留学に必要なものに関して知見を書いていきたいと思います。

TOEFL iBT(必要条件 : 100点以上)

TOEFL iBTとは言わずと知れた英語力測定テストです。海外大学受験ではこれまたはIELTSのスコアにより留学に適切な英語力かどうかが判断されます(TOEICは全く評価されないので気をつけましょう!)。基礎的な事項はすでに日本語でも大量のサイトで説明されておりますので、とりあえず公式サイト の説明に譲ります。

まずはTOEFLの扱いについて。TOEFLのスコアは選考過程の足切りとして機能しています。逆にいうと、足切り以上の点数を取ることにあまり旨味はありません。足切りの点数は大学毎に異なるため、必ずHPを確認しましょう。通説として言われている「100点あれば理系のどこの大学院にも出願可能」というのは、100点を越えれば理系の大学院のほぼ全ての足切り点を超えることから言われています。そしてその言葉通り、100点さえ超えてしまえばそれ以上のスコアを目指す理由はないと思います。大学によっては、合計点に加え、特定科目の点数を要求される場合があります(後述)。注意してください。最後に足切りの肌感覚を補強する情報としてでしかないですが、基準点よりはるかに低い点数でも他の要素が素晴らしい場合合格している例も0ではありませんでした。

一つ第n志望の教授との話で印象的だったのが、「TOEFL iBTが100何点だろうが90何点だろうが、ネイティブから見たらまとめて英語の話せる非ネイティブに括られるし、一年も経てばそのくらいの点差は容易に埋まってしまうので1点の増減に敏感になる必要はないよ(意訳)」という言葉でした。確かに。

次に所要時間についてです。参考までに大学一年次の僕の英語力を書きますと、東大英語で60点程度の英語力でした(これは海外大学院留学に成功した人の中ではかなり低い方ではないかと)。その状態からTOEFL100点を超えるまでにだいたい3ヶ月・6回程度の受験を繰り返しました。ただ大学入学後の研究生活や経験で文法面・reading面にはほぼ問題がなかったこと、大学4年生から現在に至るまで、研究のメンターが日本語の喋れないネイティブであり、研究室で毎日英語を喋り続けないと研究・卒業できない状態であったことを付記しておきます。正直これだけの期間でここまで点数を伸ばせたのは運によるところが大きいように思います。4ヶ月程度は勉強時間を見込んだ方がいいと思います。

Speakingの点数とTAについて

大学によっては、TA付きのオファーを出すために必要なSpeakingの条件が設定されている場合があります。その点数を下回っている場合はTAでの給料が支給されない・別途面接が必要となります。学費・給与の供給源となる選択肢を減らさないためにも、Speakingのスコアには気をつけましょう。

使用参考書・サイト

受験に際し使用した参考書は以下の3つのみです。まずは単語帳とフレーズ100を覚えきったら、Official Guideを3週、その後はひたすら過去問を回していました。100点という基準点をどのようにとるかの戦略次第ですが、単語帳は最後のLevel4をやるよりはその時間をlisteningやスピーキングの時間に割いた方が効率的なように思います。

【CD3枚付】TOEFLテスト英単語3800 4訂版 (TOEFL(R)大戦略)

【CD3枚付】TOEFLテスト英単語3800 4訂版 (TOEFL(R)大戦略)

TOEFL iBTテスト必修フレーズ100-スピーキング・ライティング攻略のための

TOEFL iBTテスト必修フレーズ100-スピーキング・ライティング攻略のための

The Official Guide to the TOEFL Test with DVD-ROM, Fifth Edition

The Official Guide to the TOEFL Test with DVD-ROM, Fifth Edition

listeningはTEDでひたすら字幕とにらめっこしていました。PodCast版で毎日の電車の中で聞き続けるのもオススメです。 TED: Ideas worth spreading

GRE

GREアメリカの大学院受験において基礎学力を測るテストのことです。ほぼ100%出願時に提出を求められます。Analytical Writing(通称W 筆記), Verbal Reasoning(通称V 国語), Quantitative(Math) Reasoning(通称Q 数学)の3種目が存在しています。学科によってはさらに専門科目に特化したGRE Subjectの受験を求められる場合があります。受験機会は4、10、11月の年3回のみ、試験日の一ヶ月半前には申込み締め切り、開催場所は数カ所という厳しい条件のオンパレードです。自分の志望分野において必要なのかどうか、注意深くチェックしてください。GREに関する基礎事項に関しては公式サイト 等を参照してください。

誰しもが苦戦するGREですが、特にVは本当に苦しかったです。わかりやすく例えると、センター試験の現代文を外国人が受けるようなものというのがいいのでしょうか。TOEFL100点レベルの英語力でも、選択問題でサイコロを振らざるをえない現象が頻繁に発生します。ネイティブすら1ヶ月程度勉強する試験を非ネイティブが1ヶ月とかでなんとかしようとするのが無理な話なのでした・・・

僕の場合は完全に切羽詰まった末、Vはある程度捨てた上で、Wで3.5~4.0, Qで満点を出すことに注力することにしました。そこにリソースをさくならSOPに力をさいた方が良いという判断からです。志望先の教授から、「(全く良いテストではないので&非ネイティブが高スコアを叩き出すのは本当に難しすぎるので)Vはほとんど評価項目に入れてないよ」という発言を聞いていたこともこの決断を後押ししました。結果としては良い方向に転びましたが、時間的・肉体的・精神的リソースを限界まで使い切っていたがゆえの苦肉の策だったのであって、なにも積極的にVの手を抜くのが正解というわけではないです。リソースが残っている限りはしっかりと点数の向上に力を入れましょう。

GREの扱いについて

GREに関しては特に足切り点は存在しません。受験校のHPに行って、合格者の平均点を調べてみましょう。そのスコアが目標スコアです。自然科学系の日本人留学生として求められるようなスコアはだいたいこの程度でしょうか?

  • Q : 170 (満点。全受験生の下から数えて約99%に相当)
  • V : 150 (全受験生の下から数えて約39%に相当)
  • W : 3.5 (全受験生の下から数えて約42%に相当)

使用参考書・サイト

使った参考書は以下の通りです。アゴス・ジャパンの本をまずは一通り読んでからGREの大まかなテスト形式を勉強した後、単語帳、公式参考書と進んでいきます。参考書を紹介しておいてあれなのですが、過去問・単語に関してはこのサイトで基本的には全て事足りると思います。有料プランに加入して一気に模擬問題回せばだいたいの感覚をつかむことができるかと思います。非常にオススメです。

新テスト対応版 大学院留学GREテスト 学習法と解法テクニック

新テスト対応版 大学院留学GREテスト 学習法と解法テクニック

500 Essential Words (Manhattan Prep GRE Strategy Guides)

500 Essential Words (Manhattan Prep GRE Strategy Guides)

The Official Guide to the GRE General Test, Third Edition

The Official Guide to the GRE General Test, Third Edition

GPA

特にポテンシャル型の人はよくみられるかと思います。日本の大学のGPAがアメリカの評価基準と異なるのは彼らも100も承知ですが多ければ多いほど良いと言う認識で取りに行きましょう。具体的な数値は学部・大学で異なるのであげればきりがありませんが、全て優のつもりで。注意点としては、成績表を英語版にした際に訳が適当すぎる場合があることが挙げられます。Applyしている専攻に必須な知識をしっかり勉強しているか?そしてそこ良い成績を取っているか?を判断材料にする例もあるようですので、あまりにわかりづらいなと思った場合はAdmission Officeに連絡を入れておくのも手でしょう。

学歴について

大学・修士までの学歴はどう評価されるのでしょうか?体験談ベースでしかないですが、最終面接で残っていた外国人たちは、皆それぞれの国のNo.1大学出身者でした。向こうの先生方と話していて、GPAの信用性という意味でも学歴は足切りとしてみられているのではないかな?という印象を持ちました。学歴による利点の一つに、周りにコネクションを持ってる人が多いということが挙げられます。東大生であれば、内部で必死でコネを探せばどこかで志望研究室に繋がる可能性がかなり高いかと思います。

CV

CVとはCurriculum Vitaeの略であり、ラテン語で人生の道筋を意味します。簡単に言いますと、履歴書のことです。教授に初めてメールをする際に添付したり、出願時に提出したりするなど、簡便に自分スキルを伝えられるため様々な場面で必要になります。CVに何を書くべきか?などの議論に関しましては"How to write a powerful CV"などの文言で検索すればたくさんの資料が出てきますので、説明はそちらに譲りたいと思います。僕としては以下の4点を書き記しておこうと思います。

  • デザインに細心の注意とこだわりを。
  • 志望先が求めている人材に合うようなCV作りを心がけること。CVに一貫性を。
  • 長すぎず、はっきりした構成で記入すること。
  • 文章は単語1個レベルでこだわること。

推薦状(〜3通)

候補者のこれまでの行動を評価してくださる方を探し、推薦状を書いてもらいます。平均して3通ですが、2通だったり4通だったりします。基本的には研究能力を裏打ちしてもらうわけなのでPh.D.を持っていらっしゃる方であるべきだと思います。奨学金の締め切りを考えると6月には打診する必要があります。先生方は本当にお忙しいので、数ヶ月前から早めに頼むことを心がけましょう。

推薦状の役割・意味・価値

「この推薦者は成績も大変よく、研究もできている。またコミュニケーション能力にも優れている。これらを総合すると、これまで見てきた中でNo.1の学生である。」 多くの方が思い浮かべる推薦状はこのようなものでしょうか。では海外大学院受験このような推薦状にどのくらい価値があるでしょうか?

0です。なんの根拠もなく褒めているだけの推薦状は全くもって評価されません。評価されないどころか真っ先に足切りの対象になります(最終面接で向こうの方々と話した中での体感ですが、クオリティの低い推薦状を持っている人がまず最初に落とされて行きます)。留学を考える方は、以下の点に関して認識を改める必要があります。

  • 「推薦状」ではなく「評価書」である。
  • 関わりの薄い先生に「この人は最高である」と根拠なく書いてもらっただけの推薦状はむしろ最悪である。
  • 推薦状を書いた学生がダメな学生だった場合、先生の評判が落ち以後後輩に影響が出る(そのため、嘘はかけない)。そのくらいの覚悟を持って書いてもらうものである。

このサイト から序文を引用します。

毎年秋になると,米欧の大学院留学志望の学生や社会人から,推薦状を依頼されます。John Nash の指導教官は,「この学生は天才である」という推薦状を書いたそうですが,そこまで極端でなくとも,「今まで指導した学生の中で一番」という推薦状を私に書かせるのが神から与えられた権利だと,多数の学生が信じているようですが,大きな誤解です。私は Northwestern大学,Pennsylvania大学,Columbia大学で,大学院入学委員会(Graduate AdmissionCommittee)の委員や委員長を勤めたことがあるので断言できますが,私の強い推薦状により入学した学生がカスだとわかれば,私の推薦状はそれ以降一切信用されません。そういうことになれば,私の推薦状によって正当な評価を受け,本人にふさわしい大学院に留学しようとする将来の学生に重大な不利益が生じます。

海外大学院に精通している先生方はこのようにシビアに推薦状のことを考えています。このサイトは内容に関してかなり参考になることが書いてあるかと思います。ぜひ一度目を通して見てください。

では何を書いてもらうべきなのか

先ほど述べたように、推薦状とはエビデンスベースで客観的に自分の研究能力を裏打ちする文章であるべきであることを考慮すると、SOPで書いた自分のこれまでの勉強・研究・インターンなどを推薦状で具体的に裏打ちしてもらえる形であるのが簡便であり、理想であると思います。それを踏まえるとどなたに頼むべきなのかは自ずと絞り込まれてくるはずです。

SOP

SOPとはStatement Of Purposeの略で、志望動機・研究計画などをまとめたエッセイです。大学によって指定された文字制限は異なりますが、A4で1~2枚あたりであることがほとんどです。大まかには以下の内容を盛り込むこととされています。

  • Ph.D. を取る理由
  • 来歴(インターン・教育・研究成果など)
  • 研究計画
  • なぜこの大学/なぜこの教授なのか

大学ごとに書いて欲しい事・文字制限などが微妙に異なることがありますので、当然ですがサイトは入念にチェックしましょう。残念ながら日本語で「SOP 書き方」とかでググっても有益な情報はほとんどでてこないのですが、「how to write a good SOP」などでググると基礎的な話は数多出てきますのでぜひ参考にしてください。これに関しては僕が何かいうよりも、優秀な現地の人のブログやサンプルなどを見た方が有益だと思いますので、以下においておきます(随時更新します)。

以下僕なりのアドバイスを簡単に書いていきたいと思います。

一貫性・具体的なエビデンスによる裏打ち・オリジナリティ

良いSOPの評価指標は上の一言で片付くのではないでしょうか。上の3つを意識して書きましょう。「自分の将来の目標への過程にPh.Dがあり、(その取得のため/行いたい研究のため)にはこの大学の(優れた専門知識/研究環境/指導教官)が必要」という論の流れを意識し、その肉付けとしてリサーチ・インターンの経験を具体的に書いていくとともに、自分オリジナルの目標を最初の段落に据えるというのが良いSOPに共通する論の展開方法なのではないでしょうか。

アドバイザーのススメ

学振と同じような話になりますが、アドバイザーはごく少数の方に絞るべきです(複数のアドバイザーの意見を同時に取り入れようとするとごちゃ混ぜ感が出てしまう)。できればネイティブの方で、海外大学院受験経験のある方が周りにいらしゃればその方にお願いするのがベストだと思います。

一段落目を必死で考える

審査する方は自分以外にも何百枚ものSOPをよむということを想像して見ましょう。一段落目で"I want to なんとかかんとか. There are five reasons."みたいな文章を書こうものならその後の文章がどんなに良かったとしても読まれずに終わってしまうことでしょう。 目を引く自分だけの経験をベースにしたオリジナルの一段落目を作ること。これを念頭におきながら作ってください。

志望校ごとの書き換えについて

志望校ごとに志望理由を全て書き換えるのは労力的にかなり難しいと思います。基本的な流れは同じにして、最終段落を書き換えていくことになるかと思います。僕は「自分の将来の目標への過程にPh.Dがあり、(その取得のため/行いたい研究のため)にはこの大学の(優れた専門知識/研究環境/指導教官)が必要」という流れでSOPを書き、最終段落に書いてあった「(その取得のため/行いたい研究のため)にはこの大学の(優れた専門知識/研究環境/指導教官)が必要」という内容を志望大学ごとに細かく変えていく戦略を取りました。

事前コンタクトの重要性

もしかしたらこれが一番重要かもしれません。受験において必須事項にはなりえませんが、出願前の教授への事前コンタクト・面識は非常に重要です。アメリカはかなりのコネ社会です。コネというとかなり薄汚く聞こえてしまうかもしれませんが、「しっかり評価される前の予選の段階でその他大勢の候補者の中に自分が埋もれてしまわないようにするためのツール」だと思った方が良いように思います。コネクションなりなんなりを利用して事前にコンタクトがあった方が選考において非常に有利になるのは他の受験生の話を聞いても明らかです。最初に書いた通り、遠慮は無用です。あらゆる方法を駆使してコンタクトを取りましょう。ではどのような方法で取っていくべきなのか。ここではその知見について書いていこうと思います。

事前コンタクトを作るためには主に以下の4種類の方法が存在します。

  1. CV付き・奨学金受給証明付きのメールを送信する(必須)
  2. 教授・知人の方に紹介してもらう
  3. 国際学会で直接話しかける
  4. 現地突撃・プレゼン

1は志願する教授全てに送信しましょう。必須です。僕の場合は「私は〜なものです。あなたのラボでのPh.D.に興味があるのだけれど、今年は募集していますでしょうか?」という文面で6月に一度、「奨学金に受かりました!興味がありましたらぜひCVをご覧ください」という文面で12月に一度の合計二回に渡って志望する全ての指導教官にメールを送信しました。忙しい教授が目を通すことを考えて文面はなるべく短く・シンプルにすること、必ずCVを添付することを意識しましょう。返信率は6月の時は50%程度だったのに対して、12月の時は80%程度でした。外部資金がいかに受験において大きかったかが伺えます。

2は正直個々の状況によると思いますが、教授や知人に積極的に聞くことから始めましょう。ある程度深い専門分野になってくると何かしらの繋がりがあるはずです。打算的なことをいうつもりはないですし、これは当たり前のことですが、周りの人との関係は常に良好に保つことを心がけましょう。

3は少し勇気のいることかもしれませんが、事前にリサーチして興味のある教授には積極的に話しかけに行きましょう。教授とすれ違いざまに肩ぶつかって「肩ぶつかってごめんなさい!ところで僕は〜の研究しているんだけども・・・」って突然プレゼン始めるくらいの気概で。オススメなのは名刺を作っておくこと・iPhoneKeynoteアプリの中に自分の研究スライドを仕込んでおくことです。これでいつでもどこでも自分のセールストークができます。ぜひご活用ください。

4は実際に自費でキャンパスビジットして教授にプレゼンすることを指します。メールをやり取りするなどして研究に興味を持ってもらえたら、キャンパスビジットの打診をしてみます。OKが出たら現地に飛びましょう。国際学会のついでなどで行けるのが理想ですが、またとないチャンスです。完全な自費でも出費を厭わず行くべきだと思います。季節にもよりますが、教授にもらった30分-2時間程度の時間で研究プレゼンを行って興味を持ってもらい、残った時間で研究室見学をさせてもらう流れになるかと思います。僕は第2志望・第1志望の大学についてはこれを行いましたが、このキャンパスビジットで教授とかなり話し込んで気に入ってもらえたことは合格において非常に大きかったのではないかと考えています。プレゼンの内容としましては以下の内容を20-30分程度でプレゼンしました。参考にしてください。

  • 自分の来歴
  • Ph.D.をとる目的
  • これまでの実績・研究成果
  • Ph.D.での研究テーマ
  • なぜこの研究室を志望するのか?
  • この研究室で自分が貢献できることのアピール

奨学金について

以下の話に出てくる奨学金は全て給付型のことです。念のため。

奨学金をとる目的

基本的に奨学金をとる目的は合格率を上げるためです。海外大学院において、博士課程の学生は教授の科研費から雇う形になります。そこで奨学金による資金を持っている学生が応募してきたらどうでしょうか?科研費からの出費が抑えられる学生は言うなればセール品です。これによって「1000円の英語ができて美味しいトマトと500円で英語ができないけどおんなじくらい美味しいトマトのどちらを買いたいですか?」という比較の勝負に持ち込めるというわけなのです。それに加え、奨学金自体の競争率の高さにより、とったその事実自体が本人の能力の一つの証明になります。これらの奨学金を獲得していらっしゃる方で海外大学院受験で全て落ちてしまったという話を僕は聞いたことがありませんし、奨学金を獲得していないで海外大学院に合格し、在籍している方を僕はほとんど知りません。トップ校に受かるレベルの人は必然的に奨学金を獲得できるレベルにあるという説もありますが。どちらにせよ奨学金はかなり大事です。教授からのリアクションも目に見えて変化するので、必死になって取りに行きましょう。

奨学金の探し方

東大生のみなさんは このサイト にアクセスして自分に合う条件の奨学金を検索しましょう。全ての奨学金を調べてリストにまとめるのはかなり大変だったので、主要な理工系学生向け奨学金を列挙する呪文を唱えておきます。ぜひ最初の参考にしてください。締切は大まかな把握のため僕のメモに残っていたものを引っ張ってきたものです。記載日程に関して責任は一切負いかねますのでご注意ください。

ここで注意点が一つあります。学校毎に願書を回収する形式の奨学金の場合、ネット上に書いてある奨学金の締め切りよりも実際の締め切りが早いことが往々にしてあります。先述のサイト内に大学内の締め切りが全て書いてあればいいのですが、書いてないことの方が多かったです。その場合は逐一電話で全て確認する羽目になります。東京大学工学系事務室に電話をかけましょう。

奨学金足切り・面接について

まず英語でシステマチックに足切りされます。場合によってはTOEFLのスコアを応募条件にしている時もあります(90点がほとんどであったような)。TOEFLでまずは90点を夏頃までに取りましょうと言っているのはそのためです。頑張りましょう。その後書類審査を通過すると面接に呼ばれ、その結果がよかった場合合格となります。各位から話を聞く限り、11月初旬頃に面接し、合格は11月終わりに発表となっているものが大半のようです。

奨学金の「〜向け」の話

奨学金の募集要項にはしばしば「〜の分野であること」「〜に貢献できる人材であること」が条件とされるため、「自分の分野は〇〇だけど、応募できるの?」という疑問が頻出します(この手の条件がある奨学金のサイトのよくある質問コーナーには必ずと言っていいほどこの質問があります)。まず、大体の場合聞いてもあまり有益な答えが帰ってくることはありません。ここで諦めてしまうかでふるいにかけている節すらあるのではと思います。諦めるのではなく、どうやったら自分の研究を絡めて条件に沿うようなストーリーを描けるか?という観点で考えてみることをオススメします。奨学金は数が少ないです。諦めずにチャレンジしてみましょう。

面接について

最初にスケジュールの項で書いた通り、海外大学院受験は志望大学院へのApply後に面接を経て合格となります(面接がない場合もありますが)。英語能力・研究力を一度に評価され、大学院受験の中でも最も重要なプロセスです。面接は主にSkype面接、現地での面接の二種類に分類されます。僕の場合どちらも経験したのでその知見を書いていきたいと思います。

Skype面接

一般的にはSkypeを通じて30分-40分程度現地の教授と面接を行います。面接というと、ドアをノックして入室して・・・という堅苦しい形式を想像しがちですが、画面に映るのは教授の居室、相手は教授一人のみという場合がほとんどです。画面に映るので襟付きのシャツを着る程度の最低限のことに気を配るだけで十分だと思います。聞かれて話す内容としては基本的には以下のようなものがあげられます。思いつくような質問事項に関しては事前に3分程度の回答を用意しておきましょう。

  • 簡単な自己紹介
  • なぜ研究するのか
  • Ph.D.の目的、その後の展望
  • この大学である必要性
  • この教授を志望する理由
  • 現在の研究の簡単な説明

ここからわかるようにしっかりしたSOPを書いていてその内容が頭に入っていれば淀みなく答えられる質問なはずです。

現地面接

現地面接とは、大学側に招待されてキャンパス見学・研究室見学を兼ねつつ教授との面接を行うものです。丸1日かけて行いますので、Skype面接よりも遥かに多くのことをみれますし、遥かに多くのことをみられます。僕としては正直精神的に凄まじく疲弊しました。流れとしては、朝に集合してパネルディスカッションや大学の紹介を経た後に志望先教授や他の受験生とランチ、昼から夜まで続く研究室見学と教授達との面接ラッシュを乗り越えて終了、最後に現地の大学院生にHappy hour と称して飲みに連れて行ってもらって就寝というところでしょうか。

アドバイスとしては、人として非常識なこと・リスペクトに欠けることをしない。これに尽きます。例えば、前に所属しているラボを批判する人がいたらどうでしょうか?そこまで露骨でないにしても、前のラボではこんな嫌なことがあってね・・・と冗談交じりに話す人がいたらどうでしょうか?そのようにリスペクトに欠ける行動をする人は進学して同僚になってからもリスペクトに欠ける行動をする人と見られる可能性があります。特に気をつけるべきは教授との面接以外の場所です。これは一朝一夕に対策ができるようなものではありません。普段の言動から気をつけるようにしましょう。

僕みたいに英語が苦手な人へ送る面接ハック

僕みたいに英語が苦手な人向けの面接サバイバル法を一通り置いておきます。ぜひ活用してください。あまり道徳的によろしくないかもしれないですが、できることは全部しましょう。それくらいの競争率・難易度です。

  • Webカメラの周りに大量メモ作戦
    • カメラの周りに想定される質問と答えを大量に貼り付けるハック。英語が苦手な人には効果覿面です笑
  • カメラを直視作戦
    • 回答の際はカメラをみましょう。自信を持って回答しているように見えます。
  • 質問攻め大作戦
    • 喋る機会をなくしてしまえとばかりにこちらから質問攻めにしましょう。これは笑い事ではなくて、面接では必ず質問タイムがあります。日本人は概して質問することが苦手ですが、この場合はそんなことを言ってられません。興味のない人に思われてしまいます。
    • 普段の感覚からすると質問ぜめなのでは?というくらいに質問するくらいでちょうどいいのです。
    • また、海外大学院は日本とかなり環境が違います。情報はもらえるだけもらって不安要素を一つ一つ消していきましょう。

合格発表について・合格発表後にすること

残念ながら合格発表の日付は明確にされていません。かなりストレスのたまる日々になるかと思いますが、ご飯にお金を投資してなんとか耐えましょう。GradCafe というサイトには結果を受け取った生徒が随時報告をうpしているので志望大学の学部の結果がで始めたらそろそろ自分のところにもくるな?と覚悟を固めることができます(投稿された内容自体はあまり意味がないので読むのをオススメしません)。

必要資金の話

書くところがなかったのですが、他の情報媒体であまり触れられてこなかった大事なことですのでここに記しておきます。最初に結論から書きますが、受験を通じて50万円以上はかかることになるかと思います。主な出費は以下の通りです。目安を書いておきますので参考にしてください。

  • TOEFL受験料 : 2.7万円/1回
  • GRE受験料 : 2.7万円/1回
  • 各種参考書・サイト代 : 2万円
  • スコア送信料 : 1万円
  • 受験申し込み料 : 1万円/1校
  • キャンパスビジット代金 : 22万円/1回(西海岸のラウンドチケットをとって一週間くらいの滞在を想定しています。ホテルと航空機代のみなので実際はこれよりも出費が増えるかと思います)

これですと、6回TOEFL受験・2回GRE受験・6校申し込みで合計50万円くらいの計算になります。航空機代は季節変動がありますし、2回行く可能性も否定できません。またこれとは別に国際学会の帰りに大学に寄って教授と面会するイベントが急におきたりするかもしれません。そのようなことがありますと容易に100万円が見えてきます。受験年の4月までにアルバイトである程度の資金を作っておくことを強くオススメします(僕の場合は100万円前後の額をアルバイトで用意しましたが、予定外の出費が重なりほぼ全額使い果たしてしまったことをここに記しておきます)。

終わりに

かなり長文になってしまいましたが、まとめとしては海外大学院受験で得た教訓と後輩に伝えたいことの項に書いた通りです。これから海外大学院受験を目指す後輩の皆さんにこの文章が役に立てばこんなに嬉しいことはありません。また、個々のさらに具体的な話についてはこれから切り出して書いていけたらと思っています。できうる限り後輩を助けられればと思っておりますので、質問事項がありましたらTwitterアカウントなどに質問してみてください。時間のある限り返信します。最後に、今回の受験は数多くの方の助けがなければ成功しませんでしたし、東京大学工学部電気電子工学科の教育なしでは到達できない目標でした。深い感謝の意を記しまして筆を置こうと思います。

twitter.com

Amazon ほしい物リスト

合格お祝いということで、最後に貼っておきます。 ぜひよろしくお願いします!笑

www.amazon.jp

NASAの公開データに触れて宇宙を描こう。〜SPICEの解説〜

これはなに?

この記事はeeic Advent Calendar2017の23日目として書かれたものです。
qiita.com

ソースコードやデータを公開する動きは世界的に強くなっています。 実は航空宇宙分野にも公開されているデータは数多く存在します。 今回はその中の一つであるSPICEについて解説を行い、手軽に軌道を描いてみようと思います。

僕が軌道をいい感じに描いて楽しいって言っているだけの記事になってしまうかもしれません。すみません。

扱うミッションは

です。 Cassini Grand Finaleから読んでも大丈夫なようにしているので、 その前は読み飛ばしていただいても構わないです。

描画したものをみてるだけでも楽しいと思うので忙しい方は画像だけでも!

はじめに

下の写真をみてください。 f:id:aerith7:20171221143139j:plain

Hayabusaの影がItokawaに写っているのがわかるかと思います。

ここから小惑星の大きさを推測する事を考えてみましょう。これだけではHayabusaの影とItokawaの大きさの比率しかわかりません。まずはHayabusaの大きさを知る必要がありそうです。次にどれくらいイトカワから離れているかも知る必要がありそうです。太陽との距離・位置もなければ計算できなさそうです。

他には

  • 何処で写したのか
  • 何時に写したのか
  • どの方向に写したのか
  • どのようなカメラでとったのか
  • そもそも太陽は何処にいるのか
  • カメラは機体のどの位置についていたのか

ざっとこのような情報が必要です。

特に地球では、重力方向にz軸をとって座標にするのが高校物理などでも一般的ですが、 宇宙では何も目印がありません。全てが回転し、全てが動いています(太陽ですらも!)。 さらに機体の内部クロックと実際の時間は違います。世界標準時日本標準時も考慮する必要があります。

このように、観測した実際のデータから何か解析を行うときには、その補助となるデータが必要不可欠となります。 そのようなデータはAncillary Dataと呼ばれています。

Ancillary Dataは生データであり、多岐に渡ります。 このままにしておくと、フォーマット・時間軸・単位・エンコードが異なる大量のデータを管理する羽目になってしまいます。 データが管理しにくいと、ミスの温床になる・労力がかかる・データを利用してもらいにくくなるなどの問題が生じます。

そこで、これらを全てまとめる仕組みとしてSPICEが開発されました。

SPICEとは

このSPICE、NASA内部のNavigation Ancillary Information Facility(NAIF)によって開発されました。

まずSPICEは共有データ・個別データの二種類に大別されます。 共有データはミッションの種類によらないデータ(天体の情報・うるう秒情報・座標系変換など)が格納されています。 また、個別データには各ミッションで必要なデータ(探査機の軌道情報・設置機器の情報)が格納されています。

SPICEの名前は扱うデータの頭文字から取られており、以下の5種類に分類されます。

  • Spacecraft : 人工衛星の軌道情報(NAIFでSPKと呼ばれるファイルはこれ)
  • Planet : 惑星・小惑星・彗星の軌道情報(NAIFでPckと呼ばれるファイルはこれ)
  • Instrument : 機器の視野などの情報(NAIFでIKと呼ばれるファイルはこれ)
  • C-matrix : 科学機器の方向情報(NAIFでCKと呼ばれるファイルはこれ)
  • Events : これは滅多に使用されません(NAIFでEKと呼ばれるファイルはこれ)

そしてこれらの保存されているファイル形式のことをSPICEkernelと呼びます。

このSPICEから具体的な軌道情報を計算するためには航空宇宙に関する豊富な知識が必要とされます。 これを解消するために、NAIFからツールキットが配布されています。

ツールキット

SPICEデータを扱うためのツールキットにはベクトルや行列計算などの関数から、光行差補正に関する関数まで含まれています。

当初ANSI FORTRAN 77のみで実装されていましたが、C、IDL、MATLABJava Native Interfaceでも現在は使用可能となっています。 今回はその中のMATLAB版(MICEと呼ばれます)に絞って解説を進めていきたいと思います。

インストール

インストール手順は以下の通りです。 すでにコンパイルされた状態ですので、ダウンロードしてきて解凍したものにMATLAB側からPATHを通すだけですぐに使えるようになります。 手順は以下の通りです。

  1. サイトからOSに対応するリンクを選択した後、mice.tar.gzをダウンロード、解凍します
  2. 解凍するとmiceフォルダが出てくるので好きな位置におきます(今回はMATLABディレクトリ直下におきます)
  3. MATLABセッションで以下の呪文を唱えます
addpath('/path_to_mice/mice/src/mice/')  
addpath('/path_to_mice/mice/lib/')

4.最後に以下のコマンドを打ってみて動くようなら完了です

cspice_tkvrsn('toolkit')

ツールキットはここに置かれています。 直下のディレクトリに、インストール方法からチュートリアルまで一通り揃っているのでぜひ参照してみてください。

解析の手順

SPICEからの解析は大まかに以下の手順で進みます。

  1. 何を解析するか決める
  2. 対応するkernelファイルをダウンロードしてくる
  3. cspice_furnsh関数を使用してMATLABセッションに呼び出す
  4. 実際に計算する

問題になるのは2のプロセスです。

なんと

どのkernelファイルを落としてくるかは自分で決める

必要があります。関数を叩いて自動で必要なkernelが落とされてくるようにはなっていないのです。 なので自在に使えるようになるためにはある程度の経験が必要になります。 今回の例では何を落とすかは事前に探しておきましたので、それを使いましょう。

Kernelファイルのダウンロード

NAIF所蔵のkernelファイルは全てここに集約されています。 惑星情報・うるう秒情報などのミッションに左右されない共有データはgeneric_kernelsディレクトリを参照しましょう。

ダウンロードは何を使用しても問題ないですが、とりあえずwgetを使います。

wget -r -np --cut-dirs=1 https://naif.jpl.nasa.gov/pub/naif/APOLLO/kernels/fk/apollo_naif_ids.tf

のようにしてディレクトリ構造を維持したままダウンロードしてくる方が後々楽になると思います。 kernelファイルが増えすぎてどれがどれだかわからなくなってしまうからです。

ここからは具体的に軌道を描いてみます。

Cassini Grand Finale

f:id:aerith7:20171222003438j:plain

Cassiniは1977年にNASAESAによって開発された土星探査機で、以下のような実績を残した偉大な探査機です。

  • 飛行距離 : 79億km
  • 発見した土星の衛星 : 6つ
  • 撮影した写真 : 453000枚
  • データ量 : 635GB
  • 論文数 : 3948本

そのCassiniは2017年9月17日に木星の大気圏に突入してその生涯を終えることとなりました。 ここではその最後の足跡を追ってみたいと思います。 まずは必要なkernelファイルを列挙します。

共有データ

個別データ

以上のkernelファイルを元に、まずは

  • 2017年07月27日00:00:00から2017年09月15日00:00:00まで
  • J2000座標系で
    • SPICEでは様々な座標系を扱いますが、全ての座標の基準としてJ2000という座標系を使用しています(解説はこちら)。
    • 特に必要性がなければとりあえずJ2000を選択しましょう。
  • 土星中心からみた
  • Cassiniの軌道

を描画してみようと思います。

% 形状・自転状況
cspice_furnsh('/naif/generic_kernels/pck/pck00010.tpc');
% 惑星の軌道データ
cspice_furnsh('/naif/generic_kernels/spk/planets/de432s.bsp');
% 土星の衛星(Titanなどenceladus)
cspice_furnsh('/naif/generic_kernels/spk/satellites/sat393.bsp');
% 時間
cspice_furnsh('/naif/generic_kernels/lsk/naif0011.tls');
%Cassiniの2017年の203-258日の軌道データ
cspice_furnsh('/naif/CASSINI/kernels/spk/170807BP_SK_17203_17258.bsp');
%Cassiniの2017年の224-258日の軌道データ
cspice_furnsh('/naif/CASSINI/kernels/spk/171003BP_SK_17224_17258.bsp');

このように一通りのkernelファイルを呼び出します。 cspice_furish関数の引数は各kernelファイルへのPATHです。

次に以下のように計算を行います。 軌道を計算するだけならば、以下のコードの変数を変えるだけで全て事足りますので参考にしていただければ嬉しいです。

% 開始時間、終了時間を設定します
et    = cspice_str2et( {'2017-07-27T00:00:00', '2017-09-15T10:30:00'} );
STEP = 100000;

% 100000等分します
times = (0:STEP-1) * ( et(2) - et(1) )/STEP + et(1);

%ここで座標を計算します。
ptarg = mice_spkpos( 'Cassini', times, 'J2000', 'NONE', 'SATURN BARYCENTER' );
pos   = [ptarg.pos];
pos2   = [ptarg2.pos];
pos3   = [ptarg3.pos];
x = pos(1,:);
y = pos(2,:);
z = pos(3,:);

whitebg([25/255 25/255 25/255])
plot3(x,y,z,'Color',[67/255 135/255 233/255],'LineWidth',0.5)
set(gcf, 'InvertHardCopy', 'off')

mice_spkpos( 'Cassini', times, 'J2000', 'NONE', 'SATURN BARYCENTER' )が肝です。

  • times : ある時間内で
  • J2000 : J2000座標系で
  • NONE : 光学補正を行うことなく
  • SATURN BARYCENTER : 土星中心からの
  • Cassini : カッシーニの位置

を計算しています。
計算した結果は以下の図の通りです。

f:id:aerith7:20171222000517j:plain

うーん。。。あってるかどうかよくわかりませんね。。。

そこで以下のオブジェクトを追加していきます。

  • 土星(クリーム色)
    • 半径58,232kmの球を描画しました。
  • 土星の環(クリーム色)
    • cspice_pxform( 'IAU_SATURN','J2000', et ); とすることで、ある時刻における2つの座標系の変換行列を得ることができます。
    • 変換行列から赤道面ベクトルを算出し、そこに最小半径から最大半径に至るまで円を描くことで近似しました。
  • 最後の軌道に移る3ヶ月前の軌道(白)
    • 2016年12月31日00:00:00から2017年04月25日23:00:00までの軌道を同じようにして描画しました。
  • 土星の衛星Titan(オレンジ色)
    • mice_spkposの第一引数を'Cassini'から'Titan'にし、同じように作業することで描画しました。

追加した結果が以下の通りです。

f:id:aerith7:20171221235345j:plain

おぉ。。。それっぽくなってきました。

ところでこの青い軌道、土星ギリギリじゃないですか? この距離からだとくっついてしまっているのかどうかほとんど判別がつきませんし、まるで土星と環の隙間に飛び込んでいるかのようです。 拡大してみましょう。

f:id:aerith7:20171221235304j:plain

おぉ。。。すごい。。確かに環の内側を通っていますね。。 同時に白い軌道も土星の環の外側にかなり接近した軌道であることがわかると思います。

真横からみてみましょう。 f:id:aerith7:20171222003209j:plain この軌道がTitanの軌道のちょうど内側に入るように設計されているのがわかりますでしょうか。 軌道設計の細かさがよくわかると思います。本当にすごいです。。

視点を変えてみます。 f:id:aerith7:20171221235143j:plain Cassiniは22回に渡ってこの軌道で周回しましたが、22回の周回中にTitanの重力を利用しながら少しずつ移動して最後の周回軌道に調整していきました。 青い軌道がずれていることからそれがよくわかるかと思います。

楽しくなってきたので土星の衛星Enceladusも回してみて、
土星の回転座標系も追加してみました。 f:id:aerith7:20171222003228j:plain

Hayabusa

HayabusaのSPICEデータもNAIFサイト内で公開されています。 他の日本の衛星に関してはすでにかぐやが公開し、あかつきも順次公開する予定だそうです。 ここではItokawaからみたHayabusaの着陸軌道(1回目のリハーサル時)の様子をみてみましょう。

使用したkernelファイルは以下の通りです。 共有データ

固有データ

  • hayabusa.tsc
  • HAYABUSA_HP.TF
  • itokawa_1989-2010.bsp
  • hayabusa_itokawarendezvous_v01.bsp

時間は2005年11月03日10:00:00から2005年11月04日10:48:00まで(1回目のリハーサルが行われた時刻です)、

mice_spkpos関数は

mice_spkpos( 'HAYABUSA', times, 'J2000' , 'NONE', 'ITOKAWA' );

のように変更して描画を行いました。 f:id:aerith7:20171222142936j:plain Itokawaの直上700mまで接近したのち、上昇していることがよくわかります。 この時高度700mで自律航法の誤差が規定値を上回ったため、12時30分に地上の指令によってリハーサルを中止したのでした。

追記 : ところでこのItokawa、少しこだわっています。 ここで公開されている多面体モデルをお借りしました。 かなり綺麗に描画できたので(色々こだわってたのに大きさの都合上あまり意味なくて悲しかったので)こちらの方も載せておきます。 f:id:aerith7:20171221235006j:plain

Apollo 15

やっぱりApolloが好きなので挑戦してみます。 aerith7.hatenablog.com

Apollo15号は7月31日に着陸船が分離し、その間司令船は周回し続けています。
そのときに取られた軌道データがSPICEとして管理されています。

APOLLOディレクトリ内部を見ると、 以下の画像のようにApollo15号とApollo16号のデータのみあるのがわかります。

f:id:aerith7:20171222212409p:plain

この中のapollo15-1.cmtを見てみましょう。ここにbspファイルに記録されているデータがいつからいつのものなのかが書かれています。

f:id:aerith7:20171222212945p:plain

1971年7月31日20時から30分間データが途切れていることがわかります。このようなデータもあるのでしっかりコメントは読みましょう(僕はこれを見落としていて、いくらロードしてもうまくいかないので本当に悩んでいました。。)。

使用したkernelファイルは以下の通りです。

共通データ

  • pck00010.tpc
  • de432s.bsp
  • naif0011.tls

固有データ

時間は1971年07月30日01:01:00から1971年07月30日20:00:00、
mices_pkpos関数は

mice_spkpos( 'APOLLO15', times, 'J2000', 'NONE', 'MOON' );

のようにして描画を行いました。結果は以下の通りです。

f:id:aerith7:20171222220216j:plain

周回軌道しっかり回っていますね! せっかくなので月も浮かべてみました(半径1737kmの球に近似しています)。
月の大きさに対する周回軌道の高度の比がよくわかると思います。

その他有用なもの

他国もこのフォーマットに習い、SPICEデータを公開しています。

  • ESA : Rosettaなどなど
  • Russia : Phobos Sample Return Missionを中心に扱っています
  • JAXA : セレーネやHAYABUSAのデータを公開しています。

サードパーティ製ですが、Pythonによるツールキットも公開されています。 github.com

国・年代に跨って幅広いデータを扱っているので命名規則やフォーマットが微妙に異なっている部分があります。必ずreadmeを読み込みましょう。

最後に

  • PC上で土星木星などの惑星や探査機の軌跡まで描けるの楽しい!
  • カッシーニってこんなギリギリの軌道を飛んでたんですね・・・
  • kernelファイルさえ落としてくれば数行で軌道が描けます。
  • 適当なkernelファイルを探してくるのが非常に大変でした。
  • もっと突っ込んだ話が聞きたかった方には少し内容が薄かったかもしれません。すみません。それはまたの機会にということでご勘弁を。。

「宇宙に出た後何をするか」という分野に関しては電気電子の知識が必須になってきますし、将来的にそのような人材が求められているように思います。eeicにおいて宇宙電気電子の分野に進む人はごく少数ですが、 少しでも宇宙に興味を持ってくれる人がいたらそれはとっても嬉しいなって 。

追記 : 最後に1950年から2050年まで100年分の太陽系の軌道を描いてみました!スケール感。。 f:id:aerith7:20171223180634j:plain

参考文献

apollo11号のソースコードを読みつつ

これはなに?

この記事はeeic Advent Calender2016の21日目として書かれたものです。

qiita.com

はじめに

2016年7月、NASAインターン生だったchrisgarry氏がApollo11号に搭載されていた アポロ誘導コンピューター(Apllo Guidance Computer : AGC) のソースコードgithub上で公開しました。 この記事はNASAの仕様書片手にソースコードをふらふら興味の赴くままに眺めるものです。だからあまりストーリーとして通ってるわけではないので散発的に見ていただければと思います。 なんか笑えるコメントアウトを漁ってるだけで終わるかもしれない。

追記 : そんなことはなかった。資料を読み漁り過ぎてしまった。

f:id:aerith7:20161220002220j:plain

AGCあれこれ

f:id:aerith7:20161220002404p:plain:w200

写っている人はマーガレット・ハミルトン。
MITの研究者でアポロのソフトウェア開発を担当した女性です。
これ何しているかというと
自分たちの書いたAGC関連書類の隣に立っている
写真なんですね。これ一枚でいろいろな苦労が伝わってきます。。。

どの程度の量だったのか、公開されているソースコードを調べてみました。
以下のとおりです。
Luminary099に格納されている

  • 全てのソースコード : 64,992行
  • コード量 : 40,202行
  • コメント行 : 32,443行
  • 空白行 : 5,900行

ひょええ。。。 デバッグとかも満足に行えないことを考えるとすごい量ですよね。。
作業量は1400人年にも登ったのだとか。

AGCは司令船に1台、着陸船に1台計2台が搭載されました。 求められた役割は
以下のプロセスにおける自動航法・誘導
です。むしろここ以外の機能にPCは用いられなかったんですね。

  • 司令船
    • 月周回軌道に乗ること、地球への帰還軌道に遷移すること
  • 着陸船
    • 月周回軌道から着陸すること、月を離陸して司令船とランデブーすること

容量はROM : 72 KB、RAM : 4KB程度。 メモリはプログラムを全て0と1に書き起こしたあと、町工場の女性の手によって1つづつ銅線に編み込んで作ったようです。 4100個のNORゲートが一つのコンピュータに使用されています。 1960年代当時ICチップは世界最先端の部品でした。アメリカの60年代のICチップ生産量の8割がアポロ関連だったのだとか。

ソフトウェアやプログラム技法は完全に1から作られました。 AGCアセンブリ言語で書かれ、 バージョン管理システムはYULと呼ばれています。 余談ですが、AGCのエミュレーターvirtualAGCからダウンロードすることができます。興味のある方は是非。

Temporary I HOPEHOPEHOPE

LUNAR_LANDING_GUIDANCE_EQUATIONS .agc : 1375行目

多分これが一番笑いました。 テンポラリコードのまま月まで行ったんですね。。。

ASTRONAUT NOW LOOK WHERE YOU ENDED UP

THE_LUNAR_LANDING.agc : 317行目 p68

THE_LUNAR_LANDINGという名前の通り月着陸を行っているプログラムですね。 この中に頻出するp(数字)というのはサブルーチンの名前です。 NASAは略語好きなんですかね。P63 からP68まであります。 それぞれ何をしているのか資料を調べて見ました。 さっくりまとめてみます。

そもそも着陸は3つの段階に分かれています

  • Breaking Phase
    • 月周回軌道から逆噴射して着陸コースに乗ります(高度50000 ft -> 7000 ft)。基本原則は推進剤の消費を可能な限り抑えること
  • Approach Phase
    • 7000 ftから 400 ftまで降下と同時に船の角度を92°から50°に引き上げます。 ここで初めてパイロットは直接着陸地点を見れるようになります。
  • Landing Phase
    • 降下地点を見極めて着陸。

ちなみにApproach Phaseを過ぎると"着陸を中止する"という選択肢が無くなります。 それはそれ以降致命的な故障が起きると二度と帰ってこれなくなることを意味していました。

f:id:aerith7:20161220005418p:plain:w300

この中で各プログラムはどのような動きをしているのか。
まとめてみた表が以下になります。

サブルーチン名 phase 役割
P63 Breaking 自動でBreakingPhaseを実行します
P64 Approach 自動でApproachPhaseを行います
P65 Landing 速度を低減し自動垂直着陸を行います
P66 Landing 高度の手動調整を行います
P67 Landing 完全手動で着陸を行います
P68 Landing 着陸確認プログラム

冒頭のp68のコメントアウト行は着陸動作を全て終了して初めてたどり着くんですね。
なかなかおしゃれ。

ふと気になりました

どうやって着陸地点を確認しているんでしょうか。HUDもない時代です。
調べてみました。
これは着陸船の窓の図です。

f:id:aerith7:20161220032727p:plain:w200

何か目盛りがあるのが見えると思います。 プログラムに与えられた数値をみて照準を合わせると月の一点に定まるんだとか。 LPD(Landing Point Designator)と書いてますがほぼ完全に目視なんですね。。。なんともアナログ。。。

いい時代ですね

p66、p67はp63 ~ p65のプロセスの任意のタイミングで飛行士が自由に使用できるようになっています。 このような形で人に任せたのは当時の技術だと月の表面をみてから動的に着陸を判断することができなかったからなんですね。 また、着陸地点の選定も周回軌道から撮影した写真が根拠でしかないので着陸時に初めて障害物を見つけるということも想定されていました。 アポロの着陸脚は重量制限のため非常に脆弱で、少しでもかたむく・乗り上げることは月から脱出できなくなることを意味していました。

実際アポロ11号では最終着陸フェーズにおいて、 着陸地点のクレーターをp66を使用して一度上昇回避しています。
下の高度記録の102:44あたりのがまさにそうですね。
f:id:aerith7:20161220032220p:plain:w300

1201&1202エラー

EXECUTIVE.agc : 205 146行目です。

これが1201&1202エラーか。。。。!!(一人大興奮)

なにそれ?

アポロ11号の着陸中に起きた2つのエラーのことです。 アポロ11号の実際の着陸プロセスが以下になります。

f:id:aerith7:20161220032130p:plain:w300

10秒に1回くらい警報が鳴り続けている中、無視して降下したことがわかると思います。
当時の通信(ログ付きなのでこれがわかりやすい気がします。)を聞くとアームストロングが1202について教えてくれって言っていますね。地上からは結局教えてくれないんですが。 1202と1201は調べてみるとシステムオーバーフローのエラーなようです。 システムオーバーフローするとAGCは再起動をかけるようになっています。 1分に1回再起動しながら月に着陸するの、恐ろしすぎますね。。

実はアラームがなった時点で着陸中止臨界点が3分後に迫ってきていました。 当時NASAの誰もこのエラーの理由をすぐには突き止められなかった中、 着陸中止かどうかを数十秒のうちに決断しなければなりませんでした。そんな時に NASAのチーフソフトウェアエンジニアはAGCにはタスクを優先順で処理する機能が備わっているため(1960年代にこんなことできている時点で凄いのですが)着陸自体に影響はないと考え、数秒のうちにgoサインを出しました。 それで着陸は無事に成功したわけです。

数秒のうちに判断を下した技術者、命がかかっている中冷静にNASAの判断に従っている飛行士、 どちらも本当に凄いですね(語彙力)

ちなみに調べたところ、理由はハードウェア由来だったようです。 ランデブー用レーダーのクロック周波数が微妙に本体のそれと微妙に同期しておらず、 それによるデータの過剰な入力によるものだったそうです。

カ、カルマンフィルターだー!!!

KALMAN_FILTER.agcなるファイルを発見。 世界最古のカルマンフィルターです。
カルマンフィルターを適用し、実装したのはスタンリー・シュミットというNASAの技術者で当時どのように航法システムを開発したのかが回顧録として公開されています。

カルマンフィルターの開発経緯

もしこれを解決するのに必要な努力量を我々が正確に理解していたら、多分考え直したと思う(笑)

とはシュミットの弁です。
航法・誘導をするためにもっとも重要な事は何でしょうか。それは
「自分の乗っている正確な軌道を観測データから計算する」
ことです。
地上からアポロ宇宙船を観測して位置を特定するだけでは大気の影響を受け非常に大きな誤差が出てしまいます。 また軌道変更を正確に行うにはリアルタイムで位置を把握しながら10㍉秒単位でエンジンの点火と停止を行わなければなりません。
以上の理由からどうしても宇宙船自身で位置を読み取り、軌道を計算する必要がありました。

IMU(Inertial Measurement Unit)というセンサーがアポロにはついており、ここから加速度やジャイロセンサーの値が入ってきます。IMU自体に蓄積される誤差は定期的に宇宙飛行士が望遠鏡を月と太陽に向けて補正していたようです。 ところどころアナログになるのが本当に1960年代という感じがします。

それでこの観測データをどう評価するのかということになります。
当時のNASAのコンピューターは非常に貧弱で、この値を積分し続けて近似曲線を引くには数時間かかります。 数時間かかるどころかパンクの恐れすらあります。 (追記 : 当時NASAに軌道計算できるコンピューターはこの1台しかありませんでした!つまりミッション中に万が一こいつがパンクすると。。。 あとはおわかりですね。) とても組み込みで実現できるようなものではありませんでした。 (最小二乗法などはことごとく不可能だったわけです。)

ここでNASAは統計的にフィルタリングすることによって誤差を取り除こうとします。 実際にウィーナーフィルターを使用した研究が走っており、レーザー誘導ミサイルの制御で大きな成果を上げていました。 しかし、ウィーナーフィルターは定常性を仮定し過去のデータが全て分かっている場合に初めて有効になります。 確かにミサイルの軌道は着弾まで変わりませんが、宇宙船は道中で軌道を変更する必要があります。 またデータが途中で脱落する可能性もあります。
シュミットはこの手法では開発できないと考えていました。
そんな時にカルマンの「 A new Approach to linear Filtering and Prediction Problems 」なる論文を目にするわけです。 ウィナーフィルターの制約条件である定常性と無限時間観測の仮定を取り除いたカルマンフィルターをソフトウェアに組み込むために、シュミットはカルマンをJPLに呼びました。1959年の暮れの事です。

実はこの時カルマンは自分がなぜJPLに呼ばれたのか全く知らなかったという事です。
カルマンフィルターは線形モデルでしか成立しないのに対し、軌道計算は非線形であるのが課題でしたが、 2回目のミーティングでカルマンは現在の観測点周りで線形化する事により非線形モデルに適用するアイデアを思いつきます。 これが現在拡張カルマンフィルターと呼ばれているものです。
そうしてこうして精度が向上し無事にアポロ宇宙船に乗ったのでした。。。
もっと詳しく知りたい方は資料にリンク貼ったので見てみてください。

その他面白コメントアウト

TRASHY LITTLE SUBROUTINES(つまんないサブルーチン)

LUNAR_LANDING_GUIDANCE_EQUATIONS .agc : 175行目

NUMERO MYSTERIOSO(神秘の数字)

LUNAR_LANDING_GUIDANCE_EQUATIONS.agc : 666行目 なんだこの変数名・・

OFF TO SEE THE WIZARD

LUNAR_LANDING.agc :
オズの魔法使いの「We're Off to See the Wizard」じゃないかなと思っているのですがどうでしょうか。

なんかここら辺に当時の機械と人間の微妙な関係が見えますね・・・笑

COME AGAIN SOON

BURN_BABY_BURN—MASTER_IGNITION_ROUTINE.agc : 925行目

HONI SOIT QUI MAL Y PENSE(悪意を抱く者に災いあれ)、NOLI ME TANGERE(私に触れるな)

BURN_BABY_BURN—MASTER_IGNITION_ROUTINE.agc :

これ書いた人は調べてみると当時23歳だったそうです。 これ僕と同い年の人がやってたんかと思うと震えますね。。 チームの中でも若かったですしちょっと意味深なコメントとかも入れてたのでしょうか。 ちなみにBURN_BABY_BURNなる単語、調べてみると60年代に流行ったDJの決め台詞なんだとか。

PINBALL_GAME_BUTTONS_AND_LIGHTS.agc

ファイル名が完全にふざけていますね。。。 月に着陸することをピンボールゲームといったとか。 プログラム自体はUIルーチンを担当しているようです。

追記 : シェークスピアの引用箇所を見つけました。

おわりに

伝えたかったのは以下の3つ。

  • これ完全に空飛ぶ棺桶じゃん・・
  • ユーモアって大事
  • 60年代の人間とコンピューターの絶妙な関係

eeicにおいて宇宙電気電子の分野に進む人はごく少数ですが、 少しでも宇宙に興味を持ってくれる人がいたらそれはとっても嬉しいなって。

反省

宇宙が好きすぎて大量に資料を摂取するあまり、 完全にストーリーも何もなくただふらふらと興味の赴くままに書くだけのアレになってしまいました。 来年度書く機会があったらちゃんと技術系の話をしよう。。

参考文献