Microsoft Ignite Keynoteとtogetherしようぜ with Elixir

https://qiita.com/official-events/a50e99d62dc62d68a9c9


# はじめに
- [Elixir](https://elixir-lang.org/) 楽しんでいますか:bangbang::bangbang::bangbang:
- この記事は、「[Microsoft Igniteに参加してイベントに関する記事を投稿しよう！](https://qiita.com/official-events/a50e99d62dc62d68a9c9)」という企画の参加している(**つもりの**)記事です
- 「[Satya Nadella Keynote](https://myignite.microsoft.com/sessions/3eb31ea2-36c5-40f4-bcd8-80920a3ed843?source=sessions)」を視聴してみました
    - とにかくすごいとしかいいようがないです
    - そしてなんとか[Elixir](https://elixir-lang.org/)とのつながりをみつけて記事をしたためたい
    - と、こうおもっているわけであります
    - なんの自慢にもなりませんが、私は英語が苦手です
- [@msdevjp](https://twitter.com/msdevjp/status/1375583352418410498) Twitterアカウントの案内はこちら
<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">【 Satya Nadella と Alex Kipman が描く <a href="https://twitter.com/hashtag/MixedReality?src=hash&amp;ref_src=twsrc%5Etfw">#MixedReality</a> の最前線】<a href="https://twitter.com/hashtag/MSIgnite?src=hash&amp;ref_src=twsrc%5Etfw">#MSIgnite</a> で講演した「Satya Nadella Keynote」 では、クラウドにより可能になった <a href="https://twitter.com/hashtag/MR?src=hash&amp;ref_src=twsrc%5Etfw">#MR</a> の未来についてご紹介しました。<br>セッションの模様はオンデマンドで配信中です。<br><br>▼ご視聴はこちら<a href="https://t.co/Uo9emMtBVy">https://t.co/Uo9emMtBVy</a><a href="https://twitter.com/hashtag/Japan?src=hash&amp;ref_src=twsrc%5Etfw">#Japan</a> <a href="https://t.co/SvaJqYOleG">pic.twitter.com/SvaJqYOleG</a></p>&mdash; Microsoft Tech (@msdevjp) <a href="https://twitter.com/msdevjp/status/1375583352418410498?ref_src=twsrc%5Etfw">March 26, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
- [Satya Nadella](https://twitter.com/satyanadella)さま、ご本人様のツイート
<blockquote class="twitter-tweet"><p lang="en" dir="ltr">As the world recovers, it will require much more from the cloud to address our most pressing challenges, and ensure nobody is left behind. At <a href="https://twitter.com/hashtag/MSIgnite?src=hash&amp;ref_src=twsrc%5Etfw">#MSIgnite</a> today, I shared 5 key attributes that will drive the next generation of innovation from the cloud. <a href="https://t.co/MR9MuQWbOE">pic.twitter.com/MR9MuQWbOE</a></p>&mdash; Satya Nadella (@satyanadella) <a href="https://twitter.com/satyanadella/status/1366824782981783553?ref_src=twsrc%5Etfw">March 2, 2021</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

# [Satya Nadella Keynote](https://myignite.microsoft.com/sessions/3eb31ea2-36c5-40f4-bcd8-80920a3ed843?source=sessions)
- とにかくリンク先を御覧ください
    - すごすぎて、とても私には説明できません
- 58分49秒あります
    - 全然飽きません(当たり前:bow::bow_tone1::bow_tone2::bow_tone3::bow_tone4::bow_tone5:)
    - 13分20秒くらいまで[Satya Nadella](https://twitter.com/satyanadella)さまが話して
    - 残り後半は、[Alex Kipman](https://twitter.com/akipman)さまにバトンタッチします
- 前半は「A cloud build for the next decade.(次の10年を見据えたクラウドの構築)[^1]」ということで、5つのキーポイントを話されます
    - ぜひ動画を御覧ください
- 後半は[Microsoft Mesh](https://www.microsoft.com/en-us/mesh) の話です
    - A dream you dream alone, is only a dream.
    - A dream we dream together, is called reality.
        - こんな感じではじまります[^2]
    - おもしろいものがみれますがこれ以上は言いますまい
        - 31分あたりからは特にオススメです
        - 全編オススメです！
    - ぜひご覧になってください！
    - 詳しい解説は、「[Microsoft MeshでMixed Reality（複合現実）における共有体験を提供：同じ場所にいるような感覚を実現](https://blogs.windows.com/japan/2021/03/03/microsoft-mesh/)」をご参照ください

## その他
- オリジナルの音声は英語ですが、日本語の通訳で聞くことができます
- 字幕を出すことができます
    - 私は最初、英語音声で聞いて、英語字幕でみました
    - そのあと、最初の13分20秒までは日本語音声、日本語字幕で見直してみました
- 13分21秒〜15分10秒の間はまるで映画をみているようでした
    - 現実のものとなるのが近いのだろうと実感を伴った予感をしました
    - この部分だけは、英語音声・英語字幕で雰囲気に浸りました
- 15分11秒からの話の中でちょいちょい[^3]日本の話がでていたようにおもいます
- 今回ほど英語が聞き取れるようになりたいと強くおもったことはありません

## 参考リンク
- [Microsoft Mesh](https://www.microsoft.com/en-us/mesh)
    - Here can be anywhere.
- [HoloLens 2](https://www.microsoft.com/ja-jp/hololens/buy)
- [HoloLens 2 を中心とした Mixed Reality アプリ開発 | Azure入門 20 [#くらでべ​]](https://www.youtube.com/watch?v=_oiXtyjsL4I)

# [Microsoft Mesh](https://www.microsoft.com/en-us/mesh) is powered by Azure and all of its AI and compute capabilities, working seamlessly together from the intelligent edge to the intelligent cloud.
- 17分19秒くらいの[Alex Kipman](https://twitter.com/akipman)さまの言葉
- [Keynote](https://myignite.microsoft.com/sessions/3eb31ea2-36c5-40f4-bcd8-80920a3ed843?source=sessions)の中から、**AI** という言葉だけを拾いまして、次の動画を見ました
    - [Intro to Azure AI](https://myignite.microsoft.com/sessions/f30a17a8-e478-4f9e-99cf-913e3f0f3a49?source=sessions)
    - [Getting started with Machine Learning using Python](https://myignite.microsoft.com/sessions/5d21f1ca-199e-401f-aa35-2e51efa518ff?source=sessions)
    - [Getting started with Azure AI](https://myignite.microsoft.com/sessions/061f7404-d668-46bf-b4bd-1ef4cb20b885?source=sessions)
- これをみようとおもったきっかけは、以下の通りです
    - [Elixir](https://elixir-lang.org/)で[Nx](https://github.com/elixir-nx/nx)というライブラリが最近でてきました
    - [Nx](https://github.com/elixir-nx/nx)は、いろいろと使えるのだとおもうのですが、**AI**とセットで語られる場面をみている気がします
    - しかしながら、私にはなんのことやらさっぱりわからないので聞いてみようとおもいました
        - そういえば、「[ITエンジニアが未来を創る ~ DXを推進する技術者の役割](https://myignite.microsoft.com/sessions/306a0f3a-916e-4d43-bcbf-52c5ff837dd5?source=schedule)」の中で、「Azureの環境に行って、machine learningをちょこちょこちょこっとやると、ほら私でもできる機械学習みたいなこれはものすごいことだなとおもいました」という話をされていたことをおもいだしました
- このへんをきっかけに**MS Learn**を取り組んでみて、なぜ[Elixir](https://elixir-lang.org/)のFolks(Friends)たちが、[Nx](https://github.com/elixir-nx/nx)に興奮しているのか、その一端なりを理解することにつなげたいとおもいました
- それでみてみました
    - AI(Artificial Intelligence) ⊇ ML(Machine Learning) ⊇ DL(Deep Learning) ということを（私はいまさらようやく[^4]）認識いたしました
        - [Getting started with Machine Learning using Python](https://myignite.microsoft.com/sessions/5d21f1ca-199e-401f-aa35-2e51efa518ff?source=sessions) の01分36秒あたりから
    - http://aka.ms/AlgCheetSheet なるものの存在を知りました
- で、「Azureで[オートレース](https://autorace.jp/)[^5]の予想をAIでやってみました！　すっげー当たりました！」という内容にこの記事がなっていれば最高ですがそう簡単にことは進みません
    - 競馬を題材にした記事はQiita内でもみつけました
    - [オートレース](https://autorace.jp/)を題材にした例はまだみつけておりません
        - 私のググり力が足りなくてすでにやっていらっしゃる方いるかもしれません
- そういえば、20年ほど前に情報系の学部へ進学したときにまっさきに思い浮かんだのは、コンピュータを使って[オートレース](https://autorace.jp/)の予想をすることでした
    - 飯塚オートレース場にいらっしゃった「コンピュータ予想のX[^6]」と銘打たれた予想屋さんに憧れたものです
    - 私は[autoracex](https://autoracex.connpass.com/)という、純なもくもく会を主催しております
        - 海外在住の[Elixir](https://elixir-lang.org/)好きfolksにもご参加いただいています
        - 時間帯は広めにとっていつでも入退出可、自由(自由には責任が伴う)としているので、時差の心配もいりません
            - [Microsoft Mesh](https://www.microsoft.com/en-us/mesh)がうたっている**Here can be anywhere.** には、空間だけではなく時間をも飛び越えてひとつの場に集まれるという意味が込められているのではないかとおもいはじめました
    - 学生時代はさして強くもなれなかった麻雀🀄にあけくれ、社会人になってからは飲んだくれて🍻ばっかりでした
- Microsoft Igniteをみて、20年前に思い浮かんだ夢にゼロから取り組んでみたいとおもいました
    - Ignite means to start to burn; to make something start to burn.
    - **発火**、火がついたということですね :fire::rocket::rocket::rocket:

# [Elixir](https://elixir-lang.org/)
- で、突然ですが私は
- <font color="purple">$\huge{I　use　Elixir.}$</font>
- <font color="purple">$\huge{I　like　it!}$</font>
- です
- これを原動力に記事を書いています
- _"A dream we dream **together**, is called reality."_  _"Microsoft Mesh is powered by Azure and all of its AI and compute capabilities, working seamlessly **together** from the intelligent edge to the intelligent cloud."_ から、私だけの感じ方だとおもいます[^7]が[with](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#with/1)がおもいうかびました
- エディタは、[Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/) + [ElixirLS](https://marketplace.visualstudio.com/items?itemName=JakeBecker.elixir-ls)をつかっています
- [autoracex](https://autoracex.connpass.com/)にて教えてもらったことを書いてこの記事をしめたいとおもいます

![スクリーンショット 2021-03-31 1.04.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/8d9cc557-9e45-14de-7292-6e3eeaeb54cc.png)

- `load_map/2`という関数に警告が発せられています
- [Excelion.parse!/4](https://hexdocs.pm/excelion/Excelion.html#parse!/4)という関数が File.Error exceptionをraiseすることがあり、その際に**no local return**だと言っています
- [with/1](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#with/1)式の中で、`<-`を使うと、パターンマッチを行うが、失敗したとき、マッチできなかった値を返します([プログラミング Elixir 第2版](https://www.ohmsha.co.jp/book/9784274226373/) :book: 039ページ)
- `!`無しの[Excelion.parse/4](https://hexdocs.pm/excelion/Excelion.html#parse/4)に変えて、[with/1](https://hexdocs.pm/elixir/Kernel.SpecialForms.html#with/1)と**ともに**書き換えてみます

```elixir
  def load_map(path, sheet_number) do
    with {:ok, parsed_data} <- Excelion.parse(path, sheet_number, 1) do
      first_columns_after_rows(parsed_data)
    end
  end
```

- これでよさそうにみえますが、まだ警告を発しています
![スクリーンショット 2021-03-31 2.28.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/adee8010-2c2b-99c2-91d5-99cbbb9bb59a.png)
- このへんを参考に解決を試みたのですがまだできていません
    - [How to avoid a “can never match” error from Dialyzer in a `with` statement that has a match all else?](https://stackoverflow.com/questions/49660942/how-to-avoid-a-can-never-match-error-from-dialyzer-in-a-with-statement-that)
    - [TIL: Understanding dialyzer’s “The pattern can never match the type.”](https://dev.to/lasseebert/til-understanding-dialyzer-s-the-pattern-can-never-match-the-type-2mmm)
- まだまだ[Elixir](https://elixir-lang.org/)の修行が足りないということで精進を重ねていきたいとおもいます :fire::rocket::rocket::rocket:
    - 2021/04/03(土) 追記
    - `mix dialyzer`したらどうなるの？　を確認しました
        - a. `with`を使わない`Excelion.parse!`で書いたコード
        - b. `with`を使ったコード
    - どちらも`mix dialyzer`ではエラーがでませんでした
    - [Visual Studio Code](https://azure.microsoft.com/ja-jp/products/visual-studio-code/)の警告表示は若干気になりますが、あんまり気にしなくてもいいのかもしれません
- 6月まで毎月シリーズで続くそうなので、次はもっとイベントに参加しています！　と堂々と言える内容を書きたいとおもいます :rocket::rocket::rocket:





# 最後の最後に

## [Elixir](https://elixir-lang.org/)って何よ:interrobang:　という方へ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/601aeb87-9d1d-6a9d-b30b-338507dc593e.png)

- :point_up::point_up_tone1::point_up_tone2::point_up_tone3::point_up_tone4::point_up_tone5: 2020/12/26時点くらいのスクリーンショット
- [Elixir](https://elixir-lang.org/)についてもっと知りたい方は下記の本:books:をオススメします
    - [プログラミングElixir（第2版）](https://www.ohmsha.co.jp/book/9784274226373/)
    - [Elixir実践ガイド](https://book.impress.co.jp/books/1120101021)
- [elixir.jp Slack](https://join.slack.com/t/elixirjp/shared_invite/zt-ae8m5bad-WW69GH1w4iuafm1tKNgd~w)の`#autoracex`というところに私は入り浸っておりますのでお気軽にお声がけください
- [勉強会が頻繁に行われています](https://twitter.com/piacere_ex/status/1364109880362115078)
    - 私がよく参加している勉強会です
    - [autoracex](https://autoracex.connpass.com/) 【毎週月曜】 主催
    - [Sapporo.beam](https://sapporo-beam.connpass.com)　　【毎週水曜】
    - [OkazaKirin.beam](https://okazakirin-beam.connpass.com)　【毎週木曜】
    - [fukuoka.ex／kokura.ex](https://fukuokaex.connpass.com)　【毎月2～3回】
    - [NervesJP](https://nerves-jp.connpass.com/) 　【毎月1回】

![EsvA7uQU0AEoTuX.jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/131808/2ad87109-2684-1605-e1dc-457b835b8c15.jpeg)

(@piacerex さん作 :pray::pray_tone1::pray_tone2::pray_tone3::pray_tone4::pray_tone5:)


[^1]: たぶん...
[^2]: たぶん、「あなたが一人だけでみる夢は夢にすぎない。みんなで一緒にみる夢は必ず現実のものになる」こんな感じではないでしょうか。`We`は[We Are the World](https://www.youtube.com/watch?v=9AjkUyX0rVw)的なノリの`We`だと私はおもいました。
[^3]: 3回くらい、Japanっておっしゃっいたような気がします
[^4]: 何の自慢にもなりません
[^5]: https://qiita.com/torifukukaiou/items/a519d326934a37ded9d9#%E3%82%AA%E3%83%BC%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9
[^6]: 予想屋さんの屋号は忘れてしまいました
[^7]: 矢吹丈がそんな言い方を乾物屋の紀ちゃんにするシーンがあって、私は多用しています