Microsoftが主催する年に1度のカンファレンス、de:code 2018 に行ってきました。
このイベントは、AzureやMicrosoft 365などのMicrosoftの最新の製品やとりくみを、Microsoftの社員やそれを使っている企業が発表、ディスカッションするイベントです。
この記事では、そんなイベントで僕が聞いた内容や考えたことをまとめてみたいと思います。
de:code 2018は今日と明日の2日間の開催ですので、ひとまず1日目終了時の中間報告です。
参加したセッション
参加したセッションは以下の通りです。
- [KN01] 基調講演 (9:30〜12:30)
- [SP03] 教育版マインクラフトで始めよう。小中学生のプログラミング学習! (13:10〜14:00)
- [AI16] 機械学習に基づく音響解析や画像認識による産業応用 (15:40〜16:30)
- [AI06] AI は爆発だ?! ~ “女子高生AI” りんな を支える技術とその開発現場からみるサービス開発 (17:10〜18:00)
僕が機械学習を勉強中ということもあり、AI関連のセッションが多めです。また教育関連の仕事も少ししているため(あと自分の子育てのため)、プログラミング教育に関するセッションも聞いてきました。
ここから、それぞれのセッションについて振り返ってみたいと思います。なお、ここからの振り返りはセッションの内容を紹介するものではありませんのでご了承ください。
[KN01] 基調講演
イベントの開幕として全参加者が参加する基調講演です。ここで、この1年間、またこれからの1年間でマイクロソフトが発表した製品や力を入れていく取り組みがプレゼンテーションされます。
技術的な内容としては、
- Azureを活用したサーバーレスでイベントドリブンでIoTなソリューション
- WindowsのタイムラインとYour Phoneで複数デバイスのシームレスな連携
- CosmosDBを利用した高速でスケーラブルなデータ処理
- Live Shareを中心とする開発ツールの進化
- MRの活用事例
といったものでした。
これだけ書かれてもよう分からん、という感じですが、詳しくは他の方のブログや基調講演の動画をご覧いただければと思います。
LOVE to CODE
僕が一番印象に残ったのが、「開発者が新しい価値を創造する(つまり新しい製品を作リ出す)のをサポートする」という点が何度も強調されていたことです。
何年か前までは、Microsoftというと、WindowsやOffice製品を「売って稼ぐ」というスタンスだったイメージで、乱暴に言えば「売れればOK」というイメージでした。
しかし今回の基調講演から受けた印象は、Microsoftはあくまでも開発を手出すけするいくつかの道具を提供するだけで、実際に具体的な価値をエンドユーザーに届けるのは開発者自身、というものです。
その証拠に、この基調講演では(というか今回のイベントでは)Windows OSなどの一般消費者向けの製品に関する発表やセッションは無く、主に発表されるのはAzureの各製品や開発環境、MR事例という、開発者のアイデアを増幅させ、その実現を促進するような製品ばかりでした。イベントのテーマも「LOVE to CODE」ということで、やはり開発が楽しくなるイベントがテーマのようです。
開発に関して、個人的には特に初心者向けの環境整備がとても進んでいる印象です。
AzureのCognitive Serviceをはじめとする製品のほとんどにブラウザ上で試せるデモがついていたり、初学者向けの学習資料が豊富に用意されていたり、ポータル画面もAWSやGCPなどの他のクラウドサービスに比べて触りやすいなど、「なんか難しいから手が出せない」ということが極力ない工夫がされていることも、Microsoft製品の良いところだと考えました。
女性の活躍
もう一つ印象に残ったのが「女性の活躍」です。
世の中に「女性の活躍に力を入れています」と口で言うだけで実情が伴わない、伴ない企業というのはいくらでもあると思います。しかし、Microsoftは今回の基調講演、スピーカーが全員女性(最後に総括した平野社長以外)という人選での発表でした。
また、この後のセッションでも女性の働き方をテーマにしたものがいくつかあり、本当に女性が活躍できる環境に取り組んでいて、実際に成果が出ていることを伺うことができました。
実際プレゼンテーションなどは、女性の方が声が高いせいか聞いていて楽しく、また日本語、英語問わず聞き取りやすかった印象です。先日アメリカで行われたのMicrosoft本社のBuildでは男性のスピーカーも多くて「カッコ良い」感じでしたが、こちらは「わかりやすくて楽しい」感じでした。
その他
基調講演(やセッション)を聞いていると、とにかくAzureが使いやすいように説明されるので簡単に導入できるような気分になってしまうのですが、それと同時に、以前に所属していた会社でこの手の新しい技術の取り入れにものすごい労力が使われていた様を思い出しました。
特にDevOps系やアプリケーション系のプロダクトは、ソースコードやノウハウなどの今まで積み上げてきた資産を根本的な考え方から変えてしまうものであるため、導入(入れ替え)コストや学習コストは想像以上に膨れ上がることが大半です。
一方で、Live ShareやApp Centerなどの開発環境系は、何かミスやバグがあったとしてもエンドユーザーへ提供するサービスに影響が出ることは考えづらいため、興味のあるメンバーが簡単に使い始めてみる、ということが可能です。
紹介されるプロダクトを少し触って感覚が掴めたら、それを自分の開発しているプロダクトに取り入れてみる様を想像してみると、そのプロダクトの使い方とはまた違った新しい壁が見えてくるのではないかと思います。しかしそこで諦めるのではなく、どうそれを乗り越えるかまで考えて始めて、クラウドの恩恵を実際に受けられるのではないかと考えました。
もちろん全く新しいプロダクトで使ってみる分にはそのような壁も低いため、新しいプロダクトで試す機会があればとても良い実績になるのではないかと思います。
[SP03] 教育版マインクラフトで始めよう。小中学生のプログラミング学習!
基調講演の後、最初のセッションはマインクラフトを利用したプログラミング初心者(特に小中高生)のプログラミング学習がテーマでした。
僕はフリーランスの仕事のひとつとして新人研修も少しやっており、プログラミング初心者がプログラミングを楽しいと感じられないと言う場面を何度か見てきました。そこで、どうやったらプログラミングが楽しいと感じられるんだろう、というヒントを探すべくこのセッションに参加することにしました。
内容はマインクラフトのEducation Editionを使ったプログラミングの始め方と、実際の現場での活用方法の紹介、という内容でした。実際にマインクラフトの世界でプログラマチックにブロックを置いて階段を作って見たり、Agentと呼ばれる小さなロボットを動かして先生が作ったパズルを解いたり、その過程で座標や空間の捉え方を学んだり、といった、とても楽しそうな内容でした。僕も小学校のときにやりたかった。
その内容と自分の新人研修の内容(Pythonを使ったプログラミング入門)を比べてみて、「面白い」と感じられるためには次のようなことが大切だと考えました。
- 明確な課題がある
- 明確なフィードバックがある
- 題材が楽しい
それぞれについて、少し詳しく考えて見ます。
明確な課題がある
一般的に、最初にプログラミングを学ぼうとすると
- まずHello Worldしてみて
- 次に変数について学んで使ってみて
- さらにfor文、if文について学んで使ってみて
というように、文法の説明を受けながら少しずつ書けるプログラムを増やしていく、というものになります。
しかしこれでは、ずっとプログラムの文字列と真っ黒な実行画面とそこに出力される味気ない白い文字を見ながら1日を過ごすことになります。さらに、それができたからといって何の役にたつのかもイメージできません。
そこで、最初に「今からこれをできるようになってもらいます!」と宣言し、そのための要素を一つずつ分解して理解していくことは、自分が今なんのためにその文法を習っていて、今自分がどれだけできるようになった(ゴールに近づいた)かがとても明確です。
人とおり学び終わったあと、自分の力で課題を解決できたときの達成感は想像以上なのではないかと思います。
マインクラフトは目に見える課題を先生が作りやすく、生徒にとってもゴールが分かりやすい環境なのだと感じました。
明確なフィードバックがある
自分がプログラムを書いて実行した結果が目に見て分かりやすい、というのも大事な要素だと思います。
真っ黒な画面、ソースコードを実行したけど出てくるのは白い文字だけ、というフィードバックはとても味気ないものです。
マインクラフトを使ったプログラミングでは、プログラムの結果は文字でなく実際のロボットの動きだったり、ブロックの設置だったり、ドアの開閉だったり、マインクラフトの世界に存在する様々なもの動きで表現されます。
「ドアが開いた!」「ロボットが思い通りに歩いた!」「アイテムが回収できた!」といった分かりやすいフィードバックは、「じゃあ次はドアを閉めてみよう」「次はロボットが壁を避けて歩くようにしてみよう」「決まった手順で決まったアイテムを回収するようにしてみよう」という次のチャレンジを生み出します。
プログラミングに限らず、人は自分が頑張ってやったことに対するフィードバックが欲しいものです。それが分かりやすければ分かりやすいほど達成感を味わうことができ、次のステップに自分からつなげられるのではないかと思います。
題材が楽しい
そもそもマインクラフトはゲームです。普通にプレイするのもも楽しいです。
いくら達成感があったとしても、「難しい」という印象は「つまらない」という感想に結びつきがちです。そんな中、「見ているだけで楽しい」マインクラフトの世界は、プログラミングの学習に対するモチベーションを維持するために最適なのではないかと思います。
以上、マインクラフトを利用したプログラミングがなぜ「楽しい」のかを考えてみました。この要素はマインクラフトでなくても、普通のPython研修でも活用できるのではないかと思います。具体的にはまた考えてみようと思います。
休憩
マインクラフトのセッションの後は1セッション分どこにも入らずに休憩&とりそびれた昼食をとっていました。コンビニで適当に済ませようと思ったものの、ホテルの近くに何かないかなーと上に上がったらそこにはなんと「de:code参加者用ラウンジ」の文字が。。。!
入ってみると余ったお弁当は置いてあるわ、静かだわ、コンセントはあるわでとても快適な空間でした。
お弁当をありがたくいただいて、ホテル裏の庭園を一回り散歩して、デジタル疲れをとってから次のセッションに臨みましたとさ。
[AI16] 機械学習に基づく音響解析や画像認識による産業応用
休憩をとり、ここからの2セッションは今自分が興味を持っているAIについてです。
このセッションは機械学習を実際にどのように業務に取り入れているかを、医療、風車の点検、トンネルの点検などいくつかの実例を使って紹介していただけました。
ここで印象に残ったのは「『正常』以外は全て『異状』」という考え方です。
従来の点検プログラムは、「異状」をプログラムで定義して、それに該当するものを異状と判断してきました。そうすると、想定した異状については問題なく検知できるのですが、想定していなかった異状は検知できないという問題がありました。
機械学習ではアプローチが逆になります。つまり、「正常」を学習させておくことで、そこから外れた内容は全て「異状」として検知するのです。
これによって、「想定外」の異状を漏らさず検知できるようになりました。
もちろん、モデルの精度によっては誤検知は十分にありえます。しかし、不正確だからと言って使うことをやめるのではなく、機械学習を優先度付けやダブルチェックの用途で使うなど、不正確であることを前提にした利用方法を考え、運用に取り入れるという発想は、機械学習を利用したプロダクトをサービスに組み込む際には大切になると感じました。(実際、次のりんなのセッションでも、変な応答があっても問題ない見せ方が大事との議論が出ていました)
Azureの使い方の説明があるわけではなく、ひたすら事例紹介のセッションでしたが、むしろ現実に使われているリアルなアイデアをいくつも知ることができたこと、未知の異状検知や職人による属人化問題の解消に確かに機械学習が使われていることを知ることができ、とても良いセッションでした。
[AI06] AI は爆発だ?! ~ “女子高生AI” りんな を支える技術とその開発現場からみるサービス開発
1日目最後はMicrosoftのAI技術を使った女子高生Botである「りんな」を支える技術と、それをどう実際のサービス開発に落とし込むか、というセッションです。
りんな
「Botサービス」もしくは「音声認識」というと、どうしても「今日の天気は?」「今日は晴れです」というような、「正解を求める」ためのサービスをイメージしてしまいます。これを「コマンド型」のAIというようです(たしか)。
一方でりんなは「感情型」のAIという位置付けで、たとえば「今日の天気は?」と聞くと、「今日どこか出かけるの?」という返答が帰ってきます。
違いを端的に表現すると、コマンド型のAIは問題がなるべく早く解決することを目的にしている一方、感情型のAIはなるべく長く会話が続くことを目的としている、だそうです。そのためには、提案・質問・肯定・相づちといった手法を組み合わせて会話を膨らませていき、「女子高生との自然な雑談」を実現しているとのことでした。
また、りんなには画像認識技術を使った「視覚」と音声合成を使った「声」も備わっており、ファッションについてコメントしたり歌を歌ったり、本当に現実の女子高生のような振る舞いができるのも始めて知りました。
AIの実際のサービスへの活用
さて、このセッションの本題はこのりんなを、さらには一般的に「AI」と呼ばれるものをどう実際のサービスに落とし込むか、という議論です。
セッションでは、アンチパターンとして「AIを使ってなにかやりたい」というざっくりとした要求が挙げられていました。
一言に「AI」と言っても、それができることはプロダクトによって全く異なります。たとえばりんなは、先ほど記載した通り「会話を続ける」ことはできても「正解を素早く返す」ことはできません。同じ「AI」でも、要件によってできることもさせることも異なるので、その要件をもっと突き詰めていかなければならないのです。
りんなの場合、感情型のAIであり、他人との会話を得意とするという点を活かして、nanaアプリとコラボした上手に歌いたい人を応援するBotとしての活躍や、WEGOとコラボしたファッションチェックBotとして活用されています。
Buildの基調講演でのサティア・ナデラのセリフを引用して「AIで何をしたいかではなく、AIに何をさせたいか」と説明されていましたが、まさにこのようにビジネスやサービスの要件を考え、それに合わせたAIを開発していく、というのがAIを利用したサービスを作り上げる上で大事だということでした。
その他気になったこと
話の本筋とは関係ないのですが、「りんな」は2, 3年前にリリースされて今まで毎年のように中の技術が刷新されているとのことだったのですが、僕はそのことを全く知りませんでした。2, 3年前に「りんな」を知った時の認識(技術的にも、サービス的にも)から全くアップデートがなかったと思っていたのです。
もちろんそれはりんなに対して特にアンテナを張っていなかったから、という個人的な事情もあるのですが、「りんな」という名称やビジュアルがリリース時から変わっていないことも一つの要因としてあるな、と考えました。
特にりんなのような話題性のあるプロダクトの場合、一旦ブームが過ぎ去ると、「え、りんなってあれでしょ?去年流行ってたあれ。そういえば最近見ないねー」で終わってしまいます。
実際にアップデートがあり、UXも変わっているのであれば、何かビジュアルや名称を刷新してまたユーザーの目を引く、という手もあるかとは思うのですが、そうすると今度は「りんな」の名称と結びつかなくなり、ブランディングのやりなおしになるんじゃないか、うむむ、、、と勝手にりんななどの流行り廃りのありそうなプロダクトのアップデート方法についてセッション中に悩んでいました。
1日の振り返り
1日目の報告内容は以上になります。
他にも座りすぎて腰が大変なことになったとかみんな消音カメラ使って!とか椅子は列の奥から座って!とかいろいろあるのですが、まあ些細なことなので省略です。
この手のイベントは話を聞いて終わり、ではなく話を聞きながらあれこれ考えてみることが大事だと思っています。
100%勢いだけで書いてしまった感はありますが、今日のうちにこのブログを書き終え、忘れないうちに今日考えたことのアウトプットができてとてもよかったと思います。明日のセッションも楽しみです。
(追記)
2日目についても書きました。
0 Comments
コメントする