tkm2261's blog

研究員(OR屋) → データ分析官 → MLエンジニア → ニートがデータ分析諸々書いてます

日本と米国の修士の違いとか、データサイエンティストのキャリア構築とかを寄稿した

こんにちは、tkmです。

日本と米国の修士の違いとか、データサイエンティストのキャリアとかを日本ソーシャルデータサイエンス学会の学会誌に寄稿したので一応ブログにも残して置きます。

www.jsdss.org

タイトルは「日米データサイエンティスト教育の違い」と物々しくなってますが、日本と米国の修士を両方経験する人は稀なのと、

日本だと良くわからない”海外では〜”論が蔓延しがちなので、実際に経験した身として感じたことを書くのも一興と思い寄稿させて頂きました。(留学に際して大変お世話になった筋というのもありましたが)

TL;DR

  • 日米修士課程で違いはあれど、大きい優劣があるとは思わない
  • 日本は卒論修論での研究・執筆経験の充実している
  • 米国はプロジェクトベースの苛烈な授業メインで卒論は必須ではない
  • 現状の日本のシステムは教員の犠牲で成り立ってるので、よりシステマチックな米国方式を一部取り入れた方が良いのでは
  • データサイエンティストは実務経験重要だから日本の新卒採用は良いよ。
  • データサイエンティストの仕事も多様化しているので、自分の目指すスキルのポートフォリオを考えてキャリアをデザインする必要がありそう。

エンジニア勉強会(コミュニティ)運営について思うこと- 適度な内輪感と公共性の両立

こんにちは、tkmです。

このブログではポエムはあまり書かないことにしてたのですが、最近エンジニア勉強会(特にML系)が募集後すぐに埋まるツイートを目にしたので、

エンジニア勉強会全盛期(TokyoR, TokyoWebMiningなどの時)に学生で参加してから、kaggle meetupとかで運営するようになったので色々思うことを垂れ流して見ます

持続的な勉強会(コミュニティ)に必要なこと

適度な内輪感と公共性の両立

色々考えたけど全てこれに尽きる気がしている。もちろん内輪盛り上がりは大嫌いなんですが、ある程度コミュニティの核となる人々が居ないと結局盛り上がらないので”文化”的なsomethingのためにある程度は必要。コミュニティが死んでいかないためにも裾野を広く公共性(誰でも参加できる)も維持する必要がある。

言うは易しで、これをやっていくのは結構大変

質の高い発表者の確保は最優先

質の高い発表のない勉強会はただのおままごとなので、もちろん必須ですが、コミュニティが大きくなるに連れて意外と大変になります。

運営から一言声を掛けるのがとても大事

勉強会が有名になると発表者にプレッシャーがかかるようになって、優秀な人でも尻込みするようになってきます。

特に学生は最先端の研究に従事していても、”大人”達の前で発表するのは苦手だったりします

某勉強会の主催者は懇親会とかで、ちょっと今やっていることを話すと「次発表してくれるんですよね?」と声をかけてくれて学生ながらに嬉しかったことを記憶していて、私も真似するようにしています。

学生に限らず、自発的発表する人は少なくても、依頼されたら話しても良いかという人は多いので、

心理的に発表者を「依頼されたし、とりあえず話してみるか!」というステータスにするのがとても大事

発表することが目的の発表を排除

勉強会が有名になると、「あの勉強会で発表したい!」というのが全面にでて「やってみました」系の発表が増えてきます。

もちろん発表者のモチベーションの一つになるのは良いんですが、そういう発表が多くなると、勉強会にいっても何も勉強にならないという状態になってコミュニティが衰退していきます

kaggle meetup運営でも合意が取れてて、金メダル圏内相当かつ半年に一回程度開催にしているのもこの辺りがあります。kaggle meetupは基準が明確なので運営すごい楽なんですよね。。。

参加者の質も最低限確保したい

勉強会おじさんは絶対排除。慈悲はない

これはよくネタになりますが、勉強会おじさんと「勉強させてもらいます」勢はいても大体コミュニティに貢献しないのでなるべく減らす必要があります。

勉強会の大前提は互助会なので。

今まで全く手を動かしてなかった人が勉強会を機に初めることはまずないです。さらに、そういう人は有名人に絡みたがるでの大事なコミュニティ構成要員が参加を見合わせるようになるので害すらあります。

ただこれはとても対応が難しいのですが、kaggle勉強会の場合は運営で話し合った「どんなコンペでも1 submit経験 (titanic可)」という基準が比較的妥当性があるので助かってますが、他の勉強会では難しいですよね。。。

論文輪読会だと全員読んで発表というのもありましたが、ここまで硬派になると優秀勢でも時間がないと参加出来なくなってしまうので難しいですね。

それでも新規参入者の敷居は低く

最初コミュニティに参加するときには、少なからず「入って大丈夫かな?」という心理が大きいので外からみて怖くないことを留意した方が良いです。コミュニティの活発さは裾野の広さが大事ですし、エンジニア界隈コミュ障が多いのでこういった気遣いが優秀な人が参加してくれるきっかけになります。

kaggle slackの告知でも、自動で参加できる事を繰り返し周知しましたが、slackに入るときにメアド入れるのってちょっと怖いですよね。

slack参加に管理者にDMかメールが必須とかになると、ガクッっと新規で来てくれる人が減るかと。

内輪盛り上がりは予想以上に外部から醜悪に映る

ある勉強会では、運営&常連メンバーをネタにしたスライドを入れて笑いをとってたりするのを見て、混じりたくない感を感じたことがあります。

競プロ勢の「はいプロ〜」のノリも最初拒否感を覚えたし、kaggle勢の”イキリ”も結構拒否感ある人がいると思ってます。

ただし、内輪盛り上がりて内輪に入ってると凄い楽しいんですよね。勉強会なんて仲の良いグループで集まってるだけで、「なんで楽しい事を自重しないといけないねん!」という主張は最もかと。

ただこれをやると、厳し目に始めた専門書輪読ゼミが、一人消えまた一人消え、新規は来なくて、最後まで読みきらずに瓦解する感じで衰退していきます。

コアになる常連メンバーは必要

矛盾するようですが、内輪盛り上がりはある程度必要で常連メンバーは絶対必須です。

有名勉強会はチケットが公開直後数分で売り切れるのもざらだと思います。こうなると獲得競争に勝つのは大体ずっと行きたかった新規の人が多く、参加者の質が担保されなくなります。

優秀勢の勉強会への参加&発表目的は、「あの人と議論したい&意見を聞きたい!」なので勉強会行くとあの人に会えるといのは大事です。

あと大体勉強会を始めた人々は、仲いい奴らで技術を肴に飲みたいというモチベで始めている事が多いので常連は参加できる仕組みがあると良いです。

kaggle meetupの金メダル枠も公共性を維持しつつ、いつものメンツで集まるにはどうしたらよいかという議論で生まれました。これまた普通の勉強会では難しいんですよね。。。

あとconnpassとかとは別に運営招待枠を裏で確保しておくのも有効です。

運営は出しゃばらない

エンジニア勉強会全盛期には勉強会の主催者になるのが一種のステータス感がありTwitterのbioに盛り盛りで書いたり、開始前トークがやたら長い人が一杯いました。

あれは発表者のやる気を削いだり、変なメンバ(勉強会おじさん・よいしょ勢)が集まるだけなのでやめたほうが良いです。主役は発表者

これも一種の内輪盛り上がりですかね

どこまで公共性を追求するか

勉強会は「気の合う奴らでワイワイやりたいだけなのに、なぜ公共性」というのは説得力ある主張です。

ただ新しい人を呼び込まないと、コミュニティとしてはすぐ衰退していくのでバランスがとても難しいです。

kaggle meetup運営でも意見が割れるし、比較的公共性重視の私でも「数百人規模でカンファレンスレベルでやるか?」と聞かれたら反対します。

幸いにして日本でもトップのkagglerの方に発表をお願い出来ているので、なるべく公平に参加機会をと思っているのですが、kaggleメダル保持者枠を増やして常連メンバの参加を増やしたいのが人情だったり

試験的にYoutube配信はやりましたが、運営負荷が高い(配信することの周知徹底や設営)のと発表者も萎縮したり拒否もあるので答えは出なかったり。

裾野の広さはコミュニティの鍵なのですが、内輪感と公共性の両立はとても難しいです

ただ、slackを作ったのはかなり成功で、現在5,000人ぐらいいますが勉強会以外でもコミュニティの構築にかなり寄与してくれています。

いま思っていること

優しい終身の独裁者は必要なのか

自分が学生で勉強会に参加していたころ、大したことないおっさんが何仕切っとんねん、と思ったりしたこともあったりなかったりなので、

運営の新陳代謝したほうがいいのかなーと思ったりもします。ただ有名OSSプロジェクトをみるとリーナスとかの優しい終身の独裁者がやっぱり必要な現実をみると、変に進めないほうが良いのかと思ったりも。自分も老害化はいつかするだろうから難しい

日本における技術的なコミュニティってどうなっていくのか

昨今、国内学会は大体衰退の傾向にあると思います。もちろん英語と能力があれば国際学会で活躍すれば良いと思いますが、国内学会果たしていた日本語での知見共有とコミュニティの役割はどうなって行くのかなと

いま留学をしていて、大体どこの国も自国の同期入学者とかとはwechatとかで入学前に繋がっている一方日本のものはなかったりします。

もちろん日本人が少ないのは要因ですが、結構みんな私も含めて「留学に来て日本人と馴れ合わない」と思っている節があります。

Youtubeで新作ゲームに日本語動画だけコメント出来なかったりとかもありますし、日本人の現代の気質はコミュニティ形成に向いてなかったりするのかなーと考えたり

現代のOSSプロジェクトの成功はインターネットで世界規模のコミュニティが形成できているからと思うので、なんとか日本でも良質なコミュニティが出来るとよいですね。

昔、一億総〇〇が出来た過去をみると不可能ではないのかなと。

米国大学院でCS修士について書いてみる

お久しぶりですtkmです。

今日は1 quarter終わったのでこちらで修士を目指すとどういうことが起きるかということを報告していきたいと思います

以前ブログやTwitterでご支援を依頼したところかなりの方から、支援を頂いたので極力こちらでの生活や大学の事はブログにしていきたいと思っています。 もし聞きたい話とかありましたらTwitterなどで教えてください。

※注意 本稿ではUCI Master of Science in Computer Science programの話をします。こういう話の一般論は大概役に立たないので、特定プログラムの詳細について話して行きます。

この記事みて支援いただける方居ましたらPatreon登録待っています!

www.patreon.com

米国で修士を取るメリット

1. 卒業後に米国で就労できる

F-1ビザで留学する場合、OPTという制度で学位取得後に1年間、STEM系の場合は3年間米国で就労することが出来ます。

3年あるのは結構大きく、1年しかない日本のMBA留学者がなかなか職を見つけられないのもこの辺も関係してます。この点理系留学はお得です。

米国の就労ビザH1-Bは抽選がある上に狭き門なので、確実に外国人が働く方法として学位はオススメです

そのため大半の方は

『米国修士就労ビザを金で買う制度』

と思って間違いないです。お値段大体300万円〜1,000万円

ただし米国就活戦線は厳しいので職が見つからないケースも普通にありえます。

2. 教授とのコネ (for Ph.D.)

こちらの修士は研究室所属は必須でないですが、研究に興味がある学生は教授にお願いして研究室に所属することが出来ます。

米国のPh.D.は教授がお金を払って学生を集めるので優秀な人をとりたいのはもちろんですが、知っている(安牌)を採用したいバイアスがあります。

そのため、既に知っている or 知っている方からの推薦(推薦状)がとても重視されます。

修士で研究室に所属すると、そのままPhD取ってくれる or 推薦状書いてもらえるとなるのでPh.D.応募にかなり有利になります。

「どうしても一流大でPh.D.を取りたい!」という方は、修士から潜り込むのも戦略としてアリです。

教授によっては、教授の担当する授業でA~A+とってないと研究室所属できないという場合もあるので入ってからも大変ですが

3. 友人

仕事から米国に来る場合に比べて友人が出来やすいです。友人が多いと人生豊かとかもありますが、ビジネス英語以外を学ぶ機会も多いのと、この友人たちは米国を始め世界中に散らばるので交友関係はとても助かります

この辺は既に働いているかたならよく分かると思います。

4. 海外経験(笑)

クソどうでも良いですが、日本に蔓延る海外厨を相手にしなくてすみます。

日本で修士を取るメリット

1. お金

北欧とかと比べられて何かと批判されがちな日本の大学システムですが、個人的にはとても良くできていると思います。

それでいて国立大学で年間50万円前後は米国に比べると破格です。

(誰が犠牲になってるかというと、教員なんですが)

UCIの場合は大体1 Quarter $10,000 = 120万円 ぐらいです。夏は無いので年間360万円が学費です。

これは州外からくる学生の授業料で、州外の学生の場合は大体120万円ぐらいです。

将来日本の授業料もこれぐらい上がってくるかもしれませんね。

2. 研究がしやすい & 授業が忙しくない

日本の場合は修士は基本的に研究室に所属して、修論を書いて、あわよくば投稿も目指せるのは素晴らしいです。

米国の修士は授業がとても忙しいです。UCIの場合卒業までに11授業を取る必要がありますが、1Qに3授業とるととても忙しくなります。

更に、授業料が高いので大体1年半(4 ~ 5 quarters)で卒業することを目指す人が多く、これに研究をいれるととても大変です。

Ph.D.で入学した場合授業料は教授もちなので、1Qに1~2授業で2~3年かけて卒業要件を満たせるので事情が異なります。)

日本の場合は、授業はおまけ程度でGPAも見られないので研究に集中したい人にはとても良い環境です。

日本の修士で海外にコネのある教授の下で、研究業績上げてPh.D.もしくは研究留学を目指すのが多分一番良い道です。

私の日本の修士時代は人生でも有数に楽しい期間でした。

3. 日本企業へ就職しやすい

いくら米国の大学を出ていても、米国の就活戦線はとても大変なので米国で職が見つからない可能性は普通にありえます。その場合日本での就活はやはり日本に居たほうが有利です。

あと若いときは大体なんとかなりますが、40代とかで日本に戻って来たときに日本での就業経験が無いどう転職活動してよいかわからないケースもあるかと

ガラパゴスと散々揶揄される日本ですが、逆に考えると日本というあらゆる産業を抱えた市場が、日本語という強大な障壁に守られているのは日本人労働者によって有利に働きます。disるよりも上手い付き合い方を学んだほうが賢いです

留学で貯金使い切っても私が比較的楽観的なのも日本での就業経験+転職経験+フリーランス経験によるところが大きいです。

特定の国の商習慣を知っているというのはかなり大きいです。

米国修士にオススメな人

ビザだけが問題な技術者

『米国修士就労ビザを金で買う制度』なのでオススメです。

さらに米国でエンジニアとして働くには関連学位がほぼ必須なので、非CS学位で日本で働いている人とかはこれもメリットです。

多少英語に不安があっても、1年修士に通えばかなり上達するのでそれもオススメです。なんだかんだ久しぶりに受ける授業も楽しいですよ

ただし、米国就活にコネはとても大事なので卒業時期にリファレンスもらえるあては目をつけておいたほうが良いです。

絶対に米国で働きたい学生

親御さんと要相談ですが、米国就労ビザの壁はかなり高いのでノリと勢いで来てしまうのもアリです。

ただ米国就活戦線はとても厳しいので、対外的に参照可能な実績や就業経験、米国企業で働いてるリファレンスもらえる友人のあてとかはあった方が良いです。

研究が目的の場合は、日本の大学院にいって

  • 海外と交流がある先生の研究室に潜り込んで
  • 研究成果をだして
  • 推薦状をもらってPh.D.入学を目指す

これが一番成功率が高いです。別に学位が目的でないなら日本のPh.D.中に研究留学1年とかでも良いと思いますし。

米国CS修士の諸々(卒業要件・期間・費用)

卒業要件

UCIのMSCSの場合、以下の2通りの卒業の仕方があります。

  • Comprehensive Exam option
  • Thesis option

Comprehensive Exam optionの場合は必修科目のうち3つでComprehensive Examという試験を受けて合格すること。ただし授業によっては授業評価がB+以上とかで別途試験がない科目もあります

Thesis optionは日本の修士と同じ感じです。学内の論文審査に通ると卒業できます。

多くの学生はComprehensive Exam optionを選択します。理由としてはお金です。Thesis optionは大体2年を要するので、1年半で卒業できるComprehensive Examに比べて数百万変わって来ます。世知辛いです

期間

とくに卒業までに決まった期間はありません。卒業要件が満たせれば卒業できます。

  1. 11授業履修
  2. そのうち選択必修4科目 + そのうちComprehensive Exam 3授業
  3. Seminarを3 quarters履修 (学外の人とかの話を聞く週1授業)
  4. 1 quarterに最大16単位履修可能 (各授業が4単位、seminarが1単位)
  5. 既に修士号を持っている場合は2授業まで移管可能(要審査)

要件3があるので、最短は3 quartersつまり1年卒業が可能ですが、11授業履修が必要で1Qに3授業が限界と考えると1年3ヶ月が現実的です。(秋, 冬, 春, 秋の4 quarters、夏はない)

周りをみても大体4〜5Qで卒業する人が多いです。ただ卒業要件満たしたあとも1Q800ドル払うと籍は残せるらしく就職留年する留学生もそこそこいます

日本で修士を持っている場合は要件5で最後の秋Qを減らせるので1年卒業が可能です。私はこれを狙ってますが中国人留学生でも3Q卒業は見ないらしく出来たら相当レアなケースです。

さらに夏インターンがなくなるのもデメリット(OPTで普通に働くことになる)

費用

UCIのMSCSの場合、大体1Qに10,000ドル= 120万円かかります。

1Qに3授業とって4 quartersで卒業とすると480万円、生活費が月10万とすると全部で600万ぐらいの試算です。

これはカリフォルニア州立大学でstate-sponsored programの値段です。その他にprofessional masterもありそちらはもう少し高いです。

私立大の場合は授業料が倍以上かかるイメージですが、よくわかってません

米国就活戦線

まだほとんど経験してませんが、気になる人が多いと思うので触れます。

リファレンス無いとほぼ無理ゲー

米国の大手企業には世界中からアプリケーションが集まるので、普通はresume screeningを突破するのは至難の業です。

見る側も大変なので企業側もリファレンス前提で動いており、大手は従業員からリファレンスを管理するシステムすら作ってるところがあります。

米国一流大修士の日本人の方はリファレンスなしで100社応募して受かったのは2社といってました。

その方は知り合いの知り合いで直接面識なかったので、リファレンスお願いするのは図々しいかなと思ってましたが、むしろお願いした事を褒められました。

善悪は置いておいて、そういう感じになっています。

さながらハンター試験

就活関連で聞いた話で『見知らぬ大学にいって、片っ端から学生に声掛けてTeslaのインターンを獲得した人がいる』というのがありました。

これが美談として語り継がれていることから『resume screeningを突破するにはあらゆる手段が合法化される』という感があります。

試験会場にたどり着くのに大半が脱落するさながらハンター試験の様相です。

コネでもなんでも総動員して企業リクルータと直接話しが出来るレベルにいかないと文字通り話にならないです。

大学Job Fairは地獄

大学の就職フェアには多くの企業がきて、その場でインターンの面接をやったりします。

ただその面接に1社あたり90分ぐらい並んで、面接も立ったまま3分ぐらいです。英語がアレな時点でほぼアウトですし、非STEMでデータ分析やりたい勢とかも多くいたりで地獄。

リファレンスの大事さを痛感した一日でした。

Kaggleはいいぞ

ポジショントークですが、kaggleはかなり役に立ちました。

  • 英語下手でも3秒で自己PRできる
  • データ分析に力を入れている企業が分かる
  • 「御社のコンペで上位でした」は強い
  • コンペ入賞者は企業のMLチームと直にやり取りしているので、知り合いだとリファレンスをお願いできる

あとコーディングインタビューは必ずあるので競プロもLeetcodeとかはやっといたほうがよいです。あとはCracking the coding interviewを読むとか

渡米後から入学までの手続き

こんにちは、tkmです

後々思い出すのが大変になりそうなので、渡米後からどんなことをしたのか書いておきます

入管手続

有効なビザ(私の場合はF-1ビザ)がある場合は、ESTAはいらないのでI-20とパスポートとパスポートに貼ってあるビザがあれば問題なく入国できます。

特にI-20はスーツケースに入れずに手荷物に入れるようにしましょう。

スマホのセットアップ

現地でセットアップがダルかったので日本でH2oのsimを買っていってしまいました。

https://www.amazon.co.jp/dp/B013OUS19E

月30ドルで2GBのやつで普通に使う分には問題ありません。

さらに日本にいるうちに米国での番号を確定できるので良いです。

こちらでは番号が要求されるケースが結構あるので早いうちに米国での番号は持っておいた方が良いです。

空港から部屋までの移動

IrvineはLAから車で1時間ぐらいのところなので、大学から割引券が来たのもあって空港シャトルバス(SuperShuttle)というものを利用しました。

SuperShuttleは乗り合いで$50ぐらいでした。基本的にはUberよりは割安みたいなのでこれで良さそうです。

あと事前に目的地(部屋)を地図で指定して目の前まで運んでくれるヤツなので土地勘がなくても大丈夫です。

ただ、LAXのFree Wi-FiだとSuperShuttleのページにアクセス規制が掛かってるので予約番号は控えておきましょう。

入居手続

私は合格貰う時期が遅かったので学内寮には入れなかったので学外の部屋を借りました。(詳細は前回記事)

入国当日は大家がドアマットの下に鍵を置いておいてくれたので問題なく入ることが出来ました。

f:id:tkm2261:20180920010341p:plain

私の部屋は70歳ぐらいのお婆ちゃんが住んでる家の3部屋(キッチン無し)を貸し出しており、

  • 1階はprivate bedroom + private bathroom で月$735
  • 2階はprivate bedroom +大家を含む3人でbathroom共用で月$700となってました。

1階はすでにルーマニア人のポスドクが借りており、2階の1室を借りました。ただもう一部屋は空き部屋なので現状大家との共用のみです

ここに水道光熱費・インターネット・駐車場まで入っているので思ったより割安感があります。学内寮は月$800ぐらいして、家具の用意とかもあるので短期滞在の場合は学外寮のほうが良いかもしれません。

ルームメイトのルーマニア人も学内のポスドク寮は『別にジムとかプールとかBBQとかいらんし安くて静かなこの家の方が良い』とのこと。

ただし大学から5kmとちょっとあるので難しいところです。

手続としては、house ruleと賃貸契約の契約書にサインして終わりです。

この契約書は住所の証明書に使うので諸々手続きのときは持っていくと良いです。

シーツとブランケットを買いにTargetへ

入居したは良いもののベッドにはシーツとブランケットがないので、その日寝るためにシーツとブランケットを買い行く必要がありました。

大家に聞くと、Targetが良いとのことで徒歩30分かけて調達に行きました。

Targetはスタイリッシュドンキみたいな感じでスーパーにないものは大体揃うのでアメリカではお世話になると思われます

車輪のついた乗り物(最低限自転車)があると良い

アメリカ(特に郊外)では車が必須なのはそうですが、交差点が全て歩行者はボタンを押す形式になっており徒歩の場合は全ての交差点で止められるので予想以上に時間がかかります。

自転車の場合は車の信号に従えるので、車が無理でも早めに自転車は調達するとよいです。

私はルームメイトのお古を借りる事が出来てとても助かってますが、大学のフェアで自分のものを調達予定です。

reCycle Bike Fair

UCIの場合、大学の中古品売買ネットワークがFacebook上にあってそこでも買えるみたいなので先輩方に色々聞くとよいです。

あとカリフォルニアの場合ヘルメットは必須なのでこれもTargetで買っておきましょう。$20ぐらいでした。

銀行口座 & Venmoアカウントを作る

最初は日本から持ってきたクレジットカードも存分に役立ちますが、手数料が高いのでなるべくこちらでクレカかデビットカードを持つと良いです。あと支払で現金は基本ないです。

クレカはSSNがないと出来ませんが、デビットカードは口座開設後数日で郵送されてくるのでスグ持つことができます。

さらに米国ではP2P決済のVenmoが一般的になっており、飲み屋での割り勘の時とかはVenmoで幹事に送るのだったり、私の場合は家賃の支払で指定されたのでVenmoはなるべく早くセットアップした方がよいです。70歳の大家でも使いこなしているので個人間送金は日本でも早く流行るといいですね。

Venmoを使うのには米国での電話番号と銀行口座が必要なのでまず口座を作りに行きます。

口座を開設する銀行ですが、今はアプリが一番使いやすいChaseが良いようです。

必要な書類ですが、入国時にに持ってるものだけなので入国後はスグに作りに行くと良いです。

  • パスポート
  • I-20
  • 住所(覚えてればOK)
  • 電話番号
  • メールアドレス
  • 最初に入金する現金(最低$30ぐらい?)

銀行に入ってキョドってると話かけてくれるので、案内に従うだけです。

色々言われますが普通に作ると、Checking AccountとSaving Accountの2つが即日で出来ます。

Checking AccountはATMとかデビットカードとかの支払に使うやつで利子は付きませんが十分なお金を入れときましょう

Saving Accountは安全なのと利子がつくので授業料を日本から送金する口座にしています。

ただSaving Account -> Checking Accountの移動が月に6回に制限されてる程度なので、あまり深く考える必要はなさそうです。

VenmoはこのChecking Accountと紐付ければ使えるのでセットアップはスグです。Venmoは日本のアプリストアからは見れなかったりするので国を変えるのを忘れずに。

友人に会う

日本の大学と同じく、大学でのぼっちプレイは多大な困難を伴うので、なるべく友人を作っておきましょう。

私の場合は、同じ学科のPhDの先輩がいたので履修から何からとても助けて頂きました。

学生証の発行

UCI以外は知りませんが、UCIの場合は大学のbookstoreで学生証を発行できるものの、自分で行かないと行けませんでした。学期が始まると混むので余裕はがあるうちに行くと良いです。

New International Graduate Student: Post Arrival Checklist | Graduate Division | UCI

ここにはしっかり書いてましたが、見落としてたのでやはり友人は大事。

次はオリエンテーション

9/20のオリエンテーションに参加すると、いよいよ学期が始まります。

米国CS修士合格から渡米までの手続き諸々

こんにちは、tkmです。

今回は合格後からやったやったことを書いておきます。

UCIに限定される事も多そうですが、そもそもこの辺の資料がネットに無かったので色々残しておきます。

私もTwitter経由なので色々な方から教えてもらって何とか渡米直前までこれたので、あとに続く方々が楽になれば幸いです。

Statement of Intent to Register (SIR) の提出

合格メールと一緒にSIRの案内が来ます。Statementって付いてるとビビりますが、

入学する場合はaccpetにチェック入れて提出するだけです。

Statement of Legal Residence (SLR) の提出

これは多分カリフォルニア州だけっぽいですが、居住者かどうかの審査に使われるようです。

[授業のための居住者]は、普通に言われる居住者と定義が若干異なるらしく質問にいっぱい答えます。

よくわかってないで授業料の安い居住者を希望しましたが、もちろん認められず非居住者の授業料が請求されました。

l-20ドキュメントの提出

l-20は入学許可証と呼ばれるもので、大学にl-20ドキュメントを提出すると送られてきます。

これが無いと学生ビザの取得ができないので急いで提出しましょう。

実際のUCIの書類のフォーマットが↓です。

https://ic.uci.edu/forms/NewGradStudent-StudentForm2018.pdf

1年分授業料+生活費の残高証明

申請書類の他にl-20の取得にはパスポートと1年分授業料+生活費の残高証明の2つの資料を提出する必要があります。

必要な額は学部や年によって違いますが、私の場合はGRADUATE (STANDARD)なので$52,433を用意する必要がありました。

f:id:tkm2261:20180822163437p:plain

全て現金である必要はなく、奨学金とかを貰えている場合はそちらでも大丈夫です。

f:id:tkm2261:20180822163650p:plain

残高証明は銀行に行って『英語の残高証明下さい。』といえば1週間ぐらいでもらえます。私の場合は三菱UFJ銀行でした。

為替レートは変動するので預金額に余裕を持って取得しましょう。

あとこの残高証明書はビザ面接でも要求されるので捨てずにとって置きましょう。

l-20の配送手配

l-20ドキュメントの提出自体はネットでできますが、

送られてくるl-20自体はPDFではなく直筆のサイン入りの書類なので、国際郵便で受け取る必要があります。

この辺は大学によって変わりそうですが、UCIの場合はeShipGlobalというサイトで登録して、そのIDを書類提出時に記載して配送を手配しました。

https://study.eshipglobal.com/

学生(F-1)ビザ取得

l-20の書類を受け取ったらビザの取得をします。特別な事がなければF-1ビザだと思います。

↓のサイトを参考にすれば特に問題なく取得できると思います。

米国ビザ申請 | 学生ビザ - 日本 (日本語)

非移民ビザ申請書(DS-160)の記載

これもこの記事に従って記載すれば特に問題ないと思いますが、結構長いので余裕を持ってやると良いです。

あと数分記載がないとセッションが終わってしまうのですが、再開には最初に表示されるIDが無いと再開出来ないので、必ず控えておきましょう。私は3回ぐらい同じ事を書く羽目になりました。

米国ビザ申請 | DS-160 情報 - 日本 (日本語)

注意点としては一番最後に親族以外の身元保証を2人記載する必要があるので予め依頼をしておきましょう。

とくに米国大使館から連絡とかは行かないです。(変なことをしなければ。。。)

SEVIS費用の支払

ここで支払って、最後に表示されるI-901 SEVIS費確認書を印刷して持っていく必要があります。

SEVIS費用について | 在日米国大使館・領事館

5cm x 5cmの写真用意

5cm x 5cmが出せる証明写真機は少ないので探しておきましょう。確か司法書士用のやつが5cm x 5cmだったはずです。

(あれば)過去10年間に発行された古いパスポート

一応書いてありますが、なくてもいけます。

私も見つからずに持っていきませんでしたが、確認すらされませんでした。

ビザ面接

ここで面接の予約と申請費用の支払をします。

https://cgifederal.secure.force.com/?language=Japanese&Country=Japan

面接の内容については言っちゃいけない気がするので詳細は書きませんが、私の場合は5分ぐらいで終わったので緊張せずに行きましょう。

あと諸先輩方に頂いたアドバイスとして、『米国で働きたいとは言わないほうがよい』というのがありました。

学生ビザは学外での就労が禁止されているのと、その後の就労ビザが取れるとは限らないので、将来違法就労するかもと疑われて良くないようです。

TA/RAやインターンをやるつもりでも、お金のことを聞かれたら変なことを言わずに『親に借ります。』というのが良いようです。(まるっきり嘘は駄目ですが)

あと、残高証明書やここまで使った書類は全て持っていったほうが無難です。人によってはCVを要求されたという噂も聞きましたが私は求められませんでした。

面接が終わるとパスポートは回収されて、その後ビザが添付された形で自宅に郵送されてきます。

家探し

UCIではPh.D.学生は学内寮 (On-Campus housing)が基本保証されており、ここから申し込むと部屋を借りることができます。基本的にシェアルームなので予算応じてシェア人数や間取りを 選ぶと良いです

https://housing.uci.edu/apply/How_To_Apply.html

ただ私の場合はMasterなのと合格を貰ったのが遅い時期だったのでwaiting listに載ったまま学内寮に入ることは出来ませんでした。

学外の部屋を借りる

UCIの場合はOff-Campus Housing Networkなるものが整備されており、そこから部屋を借りることが出来ました。

https://offcampus.housing.uci.edu/

ログインすると部屋の検索とルームメイト募集の掲示板にアクセス出来ます。

基本的にルームメイト募集しているところで借りるほうが安いですが、ルームメイトがいなくなった時に自分が探す側にならないと行けないのが面倒で普通に大家から借りました。

私の場合は、private bedroomの確保を最優先にした結果、キッチンなし大学から5kmバストイレ共用で月700ドルの部屋を借りることになりました。

契約と家賃の支払

家の契約には12 month leaseやMonth-to-Monthなどがあり。12 month leaseとかでも30日前(契約による)とかに通告すると出ていく事が出来ます。12ヶ月は追い出されないということですね。

あとは部屋を又貸しするsubletとかもあるので、安いからといって安易に契約すると契約通りにMove-out dayで追い出されるので注意しましょう。

契約が成立すると、大体の場合にデポジット家賃1ヶ月分+入居月家賃+退去月家賃の合計3ヶ月分のお金を支払います。

米国だと銀行振込の手数料が高く、VenmoやPayPalでの支払が多いようです。Venmoは米国の銀行口座が必要なので、私はPayPalをとりあえず使っています。

予防接種

入学が近づくと恐らく予防接種の履歴の提出が求められます。

UCIの場合は最初の秋学期は予防接種が全て打ててなくても履修できるのですが、冬学期の履修登録が出来なくなるので日本で予め受けていったほうが無難です。

一緒に打てるワクチンもありますが、ものによっては4週間空けないる必要があるので、最低でも渡米2ヶ月前には母子手帳を持って医者に行ったほうが良いです。

あと米国は麻疹風疹には厳しいようなので、合格が決まった瞬間に麻疹風疹は受けてしまっても良さそうです。

f:id:tkm2261:20180822173911p:plain

日本で間に合わなくても米国で受けることもできます。米国だと医療費が怖いところですが、学生は大学の医療保険に普通は入るのでそこまで高くないようです。

f:id:tkm2261:20180822174246p:plain

予防接種は日本でも保険外なのでこんなもんですね。

履修登録

ここは大学によりますが、大体6月ぐらいから秋学期の履修登録が始まるので早めに履修登録しましょう。

人気授業は結構すぐ埋まります。

TA/RAの申込

7月ぐらいにメールが来て希望する学生は登録をします

UCIの場合はTAはTOEFL speaking 26点以上 or 大学の英語のテストに受かる必要があるので日本からの留学生は出来ない場合が多そうです。

そのかわりReaderと呼ばれる採点とかのRAはできるみたいで、Ph.D.の学生はこの仕事が保証されているようです。

だいたい月1,000ドルぐらいの仕事のようなので、お金の無いMasterの私でも出来ることを祈っています。

とりあえずSkillのところにKaggle Masterと書いておきました。

授業料の支払

ここも大学によるでしょうが、UCIだとinternational paymentはここから払えと案内されました。

WU GlobalPay

記載していって最後に出てくるPDFを銀行に持っていくと支払ができるようです。

UCIの場合は9/17が支払期限だったので余裕をもって支払いましょう。

新入生オリエンテーションへの参加

最初の大学行事として、9/20に設定されてました。これも年や大学によって全然違いそうです。

これに間に合うように渡米すれば良さそうです。

Avitoコンペ47位でした

Metricaの皆さんと参加したコンペですが、47位でフィニッシュでした。

勝敗はニューラルネットで別れたので、Deep Learning力を上げるのが急務ですね。。。

kaggle slackの過去ログ閲覧アプリをGAEで構築した話

こんにちは、tkmです。

今日は、kaggle slackの過去ログ閲覧アプリをGAEで構築したときのハマった点とかの話を書いていこうと思います。

kaggle slack過去ログ閲覧アプリ on GAE

https://kaggler-ja-slack-archive.appspot.com/

手前味噌だけど結構良いアプリになっていると思う。

チャンネル創立当初のログにまた逢えると思ってなかったので感慨深いですね。

Slackの無料枠では1万メッセージしか見れない

https://kaggler-ja.slack.com/intl/ja-jp/plans

1万件というのは多いようでかなり少ないです。Kaggle slackの場合6月末時点で5月までのログしか保存されていませんでした。

このままだと、kaggle slackではコンペ解法や質問回答という貴重な知見がロストしていってしまうので対策が急務でした。

Slack APIも過去1万件しか見れない

当たり前のようですが、APIで叩いても1万件しか取れません。また、誰がどのチャネルに入ったとかもメッセージとしてカウントされているようで、1万件が体感より少ない理由にも納得しました。

またAPIを使って、Google Spread Sheetにログを継続保存するのはかなり簡単で、

こちらのブログのコードをコピペするだけでOKです。

motemen.hatenablog.com

一応現在でも、Kaggler slackのコードはここに保存され続けています。

https://drive.google.com/drive/u/4/folders/17HBT50oa-Kow4127xhCwU0uEKrr33X90

Slack APIで見るべきデータ

SlackのAPIのページには様々なAPIがあり、一見メッセージログ収集に必要なデータがわかりずらいです。

Slack API | Slack

一応私が使ったAPIを列挙しておきます

何故かGUIでダウンロードすると、過去全てのメッセージが見れた!

get.slack.help

ここに従ってエクスポートすると、publicチャネルに限った話ですが、過去のメッセージを全て見ることが出来ました!

もともとKaggler slackはパブリックチャネルなのでこれで十分

最初はこれに気づかず意気消沈してましたが、結果全てのログを閲覧できるようになりました!

ただしUIでダウンロードしたログのタイムスタンプはintでmsecまで入ってません。

メッセージの差分管理をタイムスタンプでやってると、APIで来たメッセージはmsecまで入っているため、二重保存されるので注意してください。

お金もかけず運用も頑張りたくないのでGAEを選択

スプレッドシートでも最低限ログは見れましたが、やはり見づらい事この上ないためアプリを構築することに

次々来るログの差分管理が必要なためDBを導入したいが、

色々調べてもDB立てると高額になるし、運用手間的にインスタンス内に自分で立てたくない。。。

ということで、完全無料に組めるGAE+Datastoreで組むことに

Python2.7になるけどGAE Standardを選択

flexibleだと色々やりやすいが、大したことやらないので無料枠の多いStandardを選択

今回は開発しやすさよりも、運用負荷を優先

工数の9割はdatastoreに吸われた

GCPではCloud SQLといった普通のDBに無料枠はないが、datastoreには無料枠があり、

昔からGAE使ってる人にはお馴染みだと思います。

こいつはNoSQL的なDBで、インデックスをしっかり貼らないとクエリ自体が失敗する他、

ドキュメントも少なく仕様把握に時間がかかりました。

今回みたいな簡単なアプリにはいいですが、しっかりrelationをやるようなアプリでは大人しくCloud SQLとかを使ったほうが良さそうです。

WebフレームワークはFlaskを採用

個人的にはDjango派でしたが、ORマッパがdatastore独自になるので軽量かつGAEのサンプルコードが多いFlaskを採用しました。

コード見て頂ければわかりますが、ページ一個でGETだけ、パラメータもGETで渡すだけなのでかなり適当に書いてます。

UIを頑張ってslackに似せた

こういうアプリはUI悪いと敬遠されて使われないので、UIは可能な限りslackに似せて作りました。

f:id:tkm2261:20180705114143p:plain

https://kaggler-ja-slack-archive.appspot.com/

配色とかフォントはネットで「slack css」とかググって出てきた物を拝借して、

デザイン全体にはBootstrap4を採用しました。

昔みたいに「col-xs-3, col-md-3, ...」みたいに延々書く必要がなくなり、「col-3」だけで良いので大分書きやすくなっていました。

一応スマホでも見れるようにしてますが、専用の調整はしていません。

メッセージにリンクを付けた

実際に作ったアプリを使ってると、特定の発言を引用したいなーと思う事が多く

メッセージ上部に[link to this message]を追加した

f:id:tkm2261:20180705114927p:plain

元々datastoreの仕様上ページングの実装が面倒くさいことになっており、

ページの最初と最後のtimestampでページを表示していたので、表示したいメッセージのタイムスタンプをGETパラメータに渡すだけで実現できました。

便利な機能な割に、簡単に実装できてなにより

作成期間は2日

土日で作り上げましたが、元々Slackのログ仕様は目を通していたのと、

大体の設計が頭にあったので一回の週末だけで作れました。

ただこれは自分で全て決められたからなので、お仕事で受けるなら2~3ヶ月は取ると思います。

企業で開発を内製化したほうが良いのは、この辺りからも見えますね。

プルリク待ってます!

github.com

一番必要なのは検索機能で、GAEのsearch APIで実現しようと思ってます。

もしやってみたい方はプルリクお待ちしております!