giantneco’s blog

技術メモ

AtCoder Beginner Contest 128

Contest Result - AtCoder

2100 点中 600 点獲得。

6 問中の 3 問まで完了。

良かった点

  • 今回は WA なし

反省点:

C でほとんど時間を使ってしまった

最終的に総当りで解答できたが、時間内に解けそうかどうか確信が持てず手を付けるまで時間がかかってしまった。 あと問題文自体の理解がちょっと遅かったかも。

1000 回程度のループなら総当りでも大丈夫そう?

あとランク上昇がニーポイントに達したので、やっぱり D 問題を安定して解けるようにしておきたい。

Google I/O 2019 参加してきたメモ

Google の素晴らしいイベントである Google I/O 2019 に参加してきた。 参加したセッションそれぞれは別に書くとして、この記事はイベントの全体的な感想について。

機械学習

サンドボックスで展示されていた TPU ポッドの実物。

目立ったトピックとしては

  • MLKit
  • AutoML
  • TensorFlow Lite
  • TensorFlow 2.0 alpha

あたり。今年は機械学習関連のセッションが多かったと思う。

キーノートでも触れられていたが「AI Is Everywhere」ということで、モバイル・IoT 向けの TensorFlow のセッションが多かった。

TensorFlow だけでなく、MLKitや TensorFlow Lite のようにモバイルでの利用を考えるもの、 IoT 向けのものなど、モデルを作るよりもモデルをどう使うかという話が多かったと思う。

IoT 関連の話だと Coral が紹介されていて、セッション中で紹介されたデモではマイコンで画像認識をしていた。 あと mbed コミュニティを支援していくらしい。mbed が出てきたはちょっと意外

Google のプラットフォームでは誰でも楽に機械学習ができるようになるので、巨人の背に乗っているのか巨人に踏み潰されているのかわからない状況だ。 使うのは簡単になる反面、Google レベルの ML サービスを自前で用意使用となるとかなり厳しくなるか。

ML を使う場合の Material Designガイドラインも発表されてたし、 ML を使ったサービスがもう当たり前になってくるようになるのかも。

Android

Android の主だったトピックとしては:

Jetpack など Android に関する大きな発表のあった 2018 年に比べるとセッション数はだいぶ少なくなった。 とはいえそこそこの数のセッションがあったし、変更は色々ある。

またセッションで使われていたコードはほぼ Kotlin で Java のコードはほとんどみなかった。 Kotlin がほぼ前提になっているので、Kotlin に関するセッションは却って少なかったかも。 デベロッパーキーノートでも言及されていたが Kotlin ファーストが継続されている感じ。

あとすごいどうでもいいが「Q」に引っ掛けたジョークが度々あった。than"k you" とか。

セキュリティ・プライバシー

Android Q では Role や Shared Stroage の変更などあり、セキュリティ・プライバシ関連の変更がそこそこあった。

他にも

ところでキーノートの際にはこういう抗議活動が行われていたらしい。

Google I/Oの会場上空に飛行機による抗議のバナー広告が出現 | TechCrunch Japan

キーノートに集中していたので全然気が付かなかった。なんか飛行機とかうるさいなと思ったのでそれだったのかもしれない。

Kotlin

Kotlin ファーストということで、セッション中で紹介されていたコードはほぼ Kotlin だった。 Kotlin 前提なものが増えたおかげか、Kotlin の名前を冠したセッションはかえって少なくなってたかも。

Flutter

Flutter 関連の発表ではあまり大々的な発表はなかったが、Web 対応があったのは大きいか。 また Dart 自体についても Nullable 型対応・拡張関数など言語の拡張がこれからはいるとのこと。

ハードウェア

今年はハードウェアの発表は事前にリークされてたものが中心で、それほど物自体に驚きはなかった。 発表されたのは Pixel 3a と Google Nest。驚いたのは日本でも購入ということで、日本人タイムラインは結構反応していた。

Chromebook の発表もいつくかあった。特に押されていたのが Linux 対応で、これはIntel の Day 0 パーティでも紹介されており Chromebook 推しが結構強かった。 Linux も使えるとなると、やっぱり 1 台もっておきたい。

あと今年はハードウェアのお土産はなかったっぽい。お土産的な意味ではハズレの年だったのかも

AR

会場では AR の存在感がかなりあった。 キーノートでも大きくアピールされていたし、 Google I/O アプリでも ARCore をつかった案内とかもあった。 (これは自分は体験できていない。持っていった端末が対応していなかった。)

あと Google アップでの AR 表示によるガイドもこの日から一部の人に解放されたらしい。 ローカルガイドのレベル 6 も対象に入っているようで、自分も有資格者だったらしい。 残念ながら手持ちのスマホが対応していないので実際の動作は未確認。

サンドボックスでの AR 展示もおもしろかった。 一部キーノートで発表されてた検索結果の AR 表示も体験できたので満足度高い。

Sandbox

今年の Sandbox は 8 つ。

デモの中では日本の田舎での導入事例があったのが印象的だった。 田舎の自治体でお年寄り同士のスケジュールなどに Google Assistant を利用していた。 確かにコンピュータに弱い人には音声認識がありがたいかもしれない。

CodeLab

例年通りかなり盛況していた。

今年は 4 つコースを完了すれば来年の invitation code がもらえるようになった。 昨年は 3 つだったので少し増えたことになる。

自分は 2 日目の昼頃に少し列が少なくなったのを見計らって参加。 TensorFlow のコースを中心にチャレンジしてみた。 やっぱり周りに Googler の人がいると質問しやすいので心強い。

参加まで

2 月末の抽選では落選したので、今年の Google I/O 参加はないものと思っていたが、 Google I/O 2018 の Codelabs で手に入れた invitation code が使える通知が 4/19 に来た。

invitation code を受け取ってから開催までかなり時間がないので、準備がいろいろときつい部分はある。 次回の invitation code は誰かに譲ってしまっていいかも

Google I/O の経費としては

の大体合計 300,000 円。 実際には Intel の Day 0 パーティーにも参加してきたので、その分の Uber 代もかかっている。

直前なので航空券代が高いは仕方ないとして、ホテル代がやっぱり高い。 毎度同じホテルに泊まっているが年々料金が上がり続けている。 安く泊まるならおそらくサンフランシスコで、ホステルなどが利用できるとかなり安くなりそうではある。もしかしたら AirBnb もいいかも。 ただしサンフランシスコ泊の場合は Google I/O 会場から離れているため(シャトルバスで 1 時間 15 分程度)朝早くのセッションを観るのは苦労するかもしれない。

飛行機もサンフランシスコ空港を使ったほうが、直行便があるので楽になる。 ただやはりサンノゼ空港の方が会場には近い。どちらを選ぶかは予算とスケジュール次第か。

その他

I/O ストア。今年も結構散財した。

今回も食事はよかった。

前回も思った事だが体一つでは全然みたいものをカバーできない。

Android テーマに限ったとしても、同じ時間に行われるセッションがあったりするので、まずみたいもの全てをカバーすることはできない。 Google I/O 参加してもしなくても、日本で行われる参加報告会には参加するのは悪くないと思う。

後はこの期間だけ Youtubeプレミアム契約しておいて帰りの飛行機内でセッションを見て復習するようにしておくといいかもしれない。

AtCoder Beginner Contest 125

Contest Result - AtCoder

1000 点中 1000 点獲得。

問題 C で WA が多かったのは、1 文字違いのバグに気づくのが遅れたので。

良かった点

  • とりあえず目標だった A-D 通して解くのができた

反省点:

  • ケアレスミスが多かった
    • -1 とするところが -i になってた
    • 解けたつもりでサンプル入力が解けてないのに気付いてなかった
      • 解法は間違ってなかったが単純な処理が抜けていた

今回は問題が簡単だったのにも助けられた感じだった。 当面は安定して 4 問解けるようするのが目標か。 またケアレスミスの解消も課題としておきたい。

ところで今回のでもあまりランクは上がらなかったがそういうものなんだろうか? 「暫定」と表示されているが結構数をこなさないと、この表示は取れないものなのかもしれない。

レギュラーへの参加はもうちょっとランクがあがってからにするかな。

Tenka1 Programmer Beginner Contest 2019

1200 点中 400 点獲得。C と D の問題が解けず。

C は簡単かと思い込んでいたが、なかなか通らず。 D を諦めて C を考え直してみるも、自分の間違いに気付いたのは時間切れ近くだった。

うまく処理できてなかったのは次のパターン。

14
...#..###.####

こうするパターンか、

...###########

こうするパターンか、

..........####

いずれかだと思っていたが、考えてみるうちに

......########

となるパターンもあるのに気付いたが、実装は間に合わなかった。

コードがパスしなかったときに、コードが正しくないかばかりを気にしがちだが、 そもそも考え違いに気づかないとつらい。ココらへんのことは覚えておきたい。

D は少し見てみたが、解法の見当もさっぱりつかない。解説待ち。

Google Code Jam 2019 Round 1-A

Pylons の Small Set しか解けず。Large Set の方は制限時間内に実行ができず失敗になってた。

最初はAlien Rhyme から手をつけたが、いい解法が思いつかずに Pylons に切り替えた。

後 Golf Gopherインタラクティブに答えを出す必要があるらしいが、この形式の問題は初めてみた。 手を出す気になれずにパス。

残りのチャンスは B と C の二回あるが流石に実力不足かな。もうちょっと練習しないと。

AtCoder Beginner Contest 124

1000 点中 600 点獲得。400 点の問題が解けず。

良かった点

  • A - C まではスムーズに解けた

反省点:

  • D の問題の読み違え
    • D は結構難しい問題が来るのか?と思ってたので身構えすぎかも

コンテストの終了直後に解けるコードは書いたが、実行結果は時間超過になった。 読み間違えていたのが痛かったのもあるが、難しく考えすぎ。 他の参加者のコードをあとで読んでみると、自分が考えていたよりも遥かに楽に解けるのがわかった。

残念。

外国人との英語での働き方講座

connpass.com

4/5 に行われた外国人との英語での働き方講座を聞いてきた。

内容としては英語よりも、実際に外国人と働く際の心構えの話が多かった。 異文化の人と働くには考えておくこと、知っておきたいことは色々多そう。 また普段から実践できそうなことも多いので、役に立つ話は聞けたと思う。

電子書籍を待っていたが、今回の話は良かったのでさっさと物理本を買ってしまった。後でちゃんと読む。

以下講座の詳細。

グローバル環境で働くための心構え by ロバートアレックス哲也

ロバートさんはコンサル、トレーニングコーチをやっている方で、 普段エンジニアへ助言をしている立場からの発表だっった。行っているアドバイスに近いものにしている。

コミュニケーションに必要なものは次の 3 つの要素がある:

このうち、日本人の英語力はそれほど悪くないらしい。 が上記のように英語力はコミュニケーションの全てではない。

なので、英語に集中しすぎてないかどうかは気をつけるとよい。 本当の目的を見失わないようにしよう。

このうちさらにマインドセットは 5 要素あって:

  • 知的好奇心
  • 社交性: スモールトークできるか、など
  • 自信と印象
  • 異文化理解
  • リーダーシップ: 率先して会話に参加できているか、など

このうちで異文化理解では「日本人はどのように見られているか?」というのを意識するとよい。

紹介された"When Cultures Collide"では、日本人のやりがちなことが挙げられているので参考にするとよい。 「どうみられているか」を理解するのもスターティングポイントとなる。

書籍中の例では例えば次のようなものがある:

  • they are shorton words
  • they deafen you with silence
  • they never look you right in the eye
  • they lack individualism

以上のことに気をつけて英語でのコミュニケーションを学ぶわけだが、 大事なのは勉強よりも練習!知識よりも自信!だとのこと。

また、青山にある英語コミュニケーションスクール SparkDojo の紹介もあった。

www.sparkdojo.jp

英語で伝える力を自分の武器として身につけるプログラムをやっているとのこと。

失敗談と役立つフレーズ

ちょまどさん(@chomado)による失敗談の話とロッシェルさん(@JICRochelle)による解説。

失敗談はちょまどさんの実体験による部分が大きく、いかにも日本人がやってしまいそうな感じになっている。

紹介された失敗談は以下のようなもの。

日本人だけでかたまる

英語ネイティブとの打ち合わせ中に、 わからない英単語が出るなどして日本人同士で議論を始めてしまった。

一度日本語で議論を始めてしまうと、会議がだんだん日本語メインになっていくのはありがちである。 しかしこの状況では英語しか話さない人は疎外されていってしまい、不信感が生まれてしまう

対策としては:

  • 完全に日本語は禁止したほうがいい
  • どうしても日本語を使う必要がある場合は
    • 許可を取って礼儀正しくする
    • 3 分程度に納める
    • 日本語ででた結論をまとめて話す

英語が苦手、は恥ずかしいことではないのでわからない単語があってもちゃんとその場で質問するようにしたい。

会議で発言しない

日本人同士の会話だと全員が空気を読んで会話を止めてから誰かが話し始める。 これに対して海外の会議では全員が間をおかずに話し続けるので発言するきっかけをつかむの難しい。

しかしアメリカなどで行われるような会議では各参加者は意見を言うことが期待されている。 なので意見を言わなかったら何しに来たと言う感じになってしまう。 実際にマイクロソフトでは、会議で何も言わない人は次回から呼ばれなくなるらしい(非難しているのでなく、効率のためだとのこと)。

対策としては:

  • 会議の場では積極的になる必要があると
  • 発言するチャンスを掴むには、とりあえず一言を加えて注目を集める
    • 「発言してもいいですか?」
    • 「コメントしたいです?」

英語での例は書籍の方で他にもたくさん紹介している。読もう.

起承転結で話す

起承転結の順番では伝わらない。 結論を最後に持ってくるつもりで、伝えたいことの流れの最初から話を始めるのは

これは結論から話すことが重要で、 英語に限らず日本人の会話でも必要な場合がある。 なんらかの報告をする際には特に当てはまると思う。 自分が新人だった頃によく言われてた。流石に今は改善した(はず)。

Q&A

質疑応答ででたもの。

  • やりやすい質問にはどのようなものがあるか?
    • 日本に来てびっくりしたことはどんなことがあったか?
  • どうやって壁を超えたか?
    • (ちょまど) とにかく実践
  • おすすめの勉強法は?
    • (ちょまど) ゲームも英語設定にして英語を矯正する
    • (ロッシェル) わからなかった単語はメモして単語帳をつくる
    • (アレックス) どういう風に習慣化するかが大事。日常のライフスタイルに英語を組み入れらるかを考えるといい

感想

講座のタイトルとしては外国人との英語での働きかただったが、 英語のテクニック的な話よりもマインドセットの話が主だった。

なので、外国人と働いていなくても一部は普段から実践できるし、したほうがいいものが結構あるんじゃないかと思う。 「結論を先に言う」というのは言われたことがある人も多いんじゃないかと。

後は将来的には日本人は中国人とorの下で働くことになる可能性が多々あるので、その時はまた違ったマインドセットが必要になるのかなと思ったり。