AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。AWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。»Alexaスキルアワード2018ハンズラボ賞まとめレポートAWS2018年10月9日MatsumotoSaraPocketこんにちは、エンジニアの松本です。審査員たちの熱い審査会を経て、授賞式が行われました。今回は東京ハッカソン、大阪ハッカソン、そしてスキルアワードで!!ハンズラボがスポンサー賞を差し上げたスキルについて、授賞に至ったポイントをあげさせていただきたいと思います。「おえかきおねえさん」まずは東京ハッカソンのハンズラボ賞「おえかきおねえさん」から!当時のスキル名は「おねえさんとおえかき」でした。ハッカソン当日はオーディエンス賞も同時受賞、スキルアワードでは富士通クラウドテクノロジーズ株式会社賞を受賞したツワモノです。手軽に誰でも楽しめる絵描き歌にゲーム性をプラスして何の絵になるか初めに教えずに、完成図が何になるか想像しながら描き、最後にAlexaホームカードで答え合わせができます。複数人で同時に挑戦しても面白く、答えがあっていたときにはアハ効果のような爽快感があり、オーディエンス賞納得のスキルでした。本来であれば見えているはずの絵描き歌の途中経過が、VUIになることで見せられないのを逆手にとり、ゲームにする発想のおもしろさ”おねえさん”の喋り口調、絵描き歌にはSSMLで工夫がこらされており、それによってスキルのキャラクターが立っていると感じる一つの意味合いのセリフに複数の文言パターンを用意するなどやりとりが機械的にならないように配慮が感じられる以上をふまえてハンズラボ賞を授与させていただきました。絵描き歌のバリエーションも増え続けているようなので今後も楽しみです。台風で残念ながら2日間のうち後半1日のみの開催になってしまった東京ハッカソン第2弾・・・!ハンズラボ賞に輝いたのは「VoiceQ&A」です!こちらはホテルでの利用を想定した顧客満足度アンケートスキルです。チェックアウトのタイミングでお客様に対し、ホテルについてアンケートをお願いします。アンケート結果は、スタッフが掃除の合間に確認できるそうです。続いては大阪ハッカソンのハンズラボ賞「魚魚リンガル」(ぎょぎょりんがる)!かわいがっている魚たちとお話できる夢のスキルです。こちらも当日のオーディエンス賞、kintone賞と同時受賞、さらにスキルアワード特別賞のスキルです。こちらのチームはなんとデモ用の金魚鉢を東急ハンズで購入してくださったそうで、ありがとうございました!今度東急ハンズへ買い出しの際は、ぜひ弊社社員をお連れください!荷物持ちなどなどなど・・・お役に立つはずきっと・・・!VUIでのやり取りになることで普段の何気ないお世話がコミュニケーションになるセンサー、ライトとも組み合わせてつくられているなど技術的挑戦を感じる魚の種類にあったお世話の頻度・内容になる未来に期待!ファイナルステージでのデモ動画ではさらにクオリティがあがってお魚が関西弁でかわいらしくおしゃべりする様子が見られました。今後お魚のキャラクターが選べたりするのもおもしろそうですね。保育など、さまざまな課題がある中で、Alexaにこれから触れる方、Echoをこれから使う方にとって大きなインパクトを与えらえるHackが生まれることを楽しみにしています。受賞したのは「読み上げエキスパート」です!こちらは「そろばん」の読上暗算を題材にしたスキルです。そろばんは日本の伝統技能ですが、近年は少子化で習う子供が減少しており、さらにそれに伴って教えてくれる先生や塾も減少しています。このスキルでは、一人ではできない読み上げ暗算を手軽に練習ができるように、Alexaに読み上げてもらうことができます。所在地から教室が必要な場所も参考にできそうなデータベース情報が用意されていることなどからも非常に実用的な設計がされていると思いました。なったクイックちゃんでも感じたことですが、一人では出来ないことをAlexaを介することで可能にするというところに未来を感じました。子供から大人まで世代を超えて愛される作品であるとして「Generation賞」とさせていただきました。まとめ以上、4スキルの授賞ポイントをご紹介しました!ハンズラボは、APIスポンサーというわけでもなく、もちろんAmazonさんともまたちがった立場から見ることになるためこうして改めて選考ポイントをあげてみると少し特殊な感じがありますね。スキルアワード全体の選考ポイントとしてはインタラクションであるかどうかが重視されていたようです。今後はさらにU/Iとして活用できているスキルが評価されていくのではないかと思います。スキルアワードファイナルステージは急遽弊社の荒木が審査員をさせていただきました。急なことでしたが、貴重な機会をいただき、ありがとうございました。初心者向けハンズオンに行って来たGo2018年9月20日ハンズラボPocketはじめにこんにちはハンズラボの清水です。初心者向けハンズオンに参加させていただきました。スライドが公開されているので手元のPCでも見ながら確認できるのでとてもよかったです。練習問題がある私も勉強会には月2~3回ほど参加していますが練習問題がある勉強会は初めてでした。ハンズオン形式の勉強会は多くありますが、練習問題があることによって、自分で考えて実装するのでより意欲が湧いて来ます。(スライドの後半に課題があります)資料:Go言語でシンプルなWebAPIサーバーを実装する練習問題は全部6問あり、資料を参考に解いていきました。時間制限もあったので全部解くぐらいの意気込みで挑戦したら、思いの他1問目で手こずってしまい3問目までしか解くことができました。一部を紹介これは1問目のコードの一部ですが、strconv.Atoiを使用して文字列を数値に変換するのですが数値だけでなくerror値も帰ってくるのでGoではこのようにエラーハンドリングを行うようです。channel)最後に今回の株式会社メディアドゥさんの勉強会はとても楽しく、練習問題で自分がどこまで実装できるのかといった挑戦もあるので次の学習のきっかけになる勉強会でした。機会があるのであれば次回も参加したいと思っています。ハンズラボはエンジニアを募集中です。https://www.wantedly.com/companies/hands-labPocketSPA初心者が管理画面をAngularで作った話JavaScript2018年8月24日ハンズラボPocket新入社員(?)の原と申します。フロントエンドでAngularを書いたり、serverlessと戦ったりしています。仮想プロジェクトではPostforの管理画面をAngularで作りました。リリースまで新卒だけで行うというものです。私たちのチームのお題はPostforの管理画面で、ユーザー様のご利用状況を確認できたり、ビジネス側の運用が楽になるようなアプリケーションを作りました。Architectureで実装しました。このブログでは私が担当したフロントエンドについてお話します。フレームワーク選定バックエンドがサーバレスという性質上、SPAにすることは必然でした。私自身1からSPAを作ったことがなく、期間が約1ヶ月と短かったため、どのフレームワーク(ライブラリ)を使うか悩みました。Vue.jsが比較的習得が簡単だという話を聞き、Vue.jsも触ってみたのですが、結局サービス本体と同じAngularに決定しました。選定理由としてはPostfor本体でも使っているという他に、公式のチュートリアルが充実していたということがありました。これを一通りやるだけで、コンポーネントの分け方サービスのDIページ遷移の方法バックエンドAPIとのhttp通信を学ぶことができ、簡単なSPAを作ることができました。Angularに決定してから実感したことですが、routerなど必要不可欠な機能が全て入っていたり、ビルドも簡単にできることもありがたかったです。Materialを使うと、簡単にマテリアルデザインのUIが出来上がることも非常に嬉しいことでした。Angularチームが公式に作っていて安心感もあり、ドキュメントも豊富でわかりやすいです。モーダルやローディングのスピナーなども簡単に実装できました。RxJSと状態管理RxJSを使わない??AngularはRxJSに依存していて、そのことが学習コストになると言われています。自分は非同期処理について、PromiseはギリわかるけどRxなにそれという状態でした。当初は非同期処理はhttp通信の部分くらいだと思っていたので、http通信にはAngularの標準のhttpClientではなくaxiosを使うことでRxJSではなくPromiseでうまいことしようと考えました。cognitoやS3にアクセスするためにAmplifyを使ったのですが、これもPromiseを返すので、非同期処理はほとんどPromiseで済むと考えました。状態管理しかし状態管理の問題に突き当たり、RxJSの必要性が出てきました。具体例でいうとログインしているユーザーの属性によって、各コンポーネントの表示内容を切り替える実装のため、ユーザーのデータをどこからでも参照できるようにする必要がありました。当時はfluxのアーキテクチャを知らなかったため、こちらの記事を参考にさせて頂き、service層にBehaviorSubjectを置いて、データが必要なコンポーネントでsubscribeできるようにしました。結局RxJSを使う必要が出てきましたが、今回作った管理画面レベルのシンプルなアプリケーションは、Rxのオペレーターを複数覚える必要はなく、promise.then()がobservable.subscribe()に変わったという程度の理解で作ることができました。仮想プロジェクトを終えて試行錯誤しながら1からSPAを作れた経験はとても成長できたなと感じています。状態管理の問題に突き当たった経験のおかげで、fluxのアーキテクチャの必要性も実感することができました。配属後はPostfor本体の開発をしています。Postforでは状態管理にngrxを使っていて、状態管理を一元化できる恩恵を感じながら開発をしています。DevToolsめちゃ便利)最後に。Sign-On環境の構築を検討してみるAWS2018年8月20日ハンズラボPocketこんにちは。クラウドチームの北野です。現在、AWSアカウントの管理やらAWSインフラのお世話をしたりしています。Service(AWS)を積極的に採用していて、サーバはほぼ全てAWS上で稼働しています。何百台というサーバが常時稼働しているので、当然一つのAWSアカウントに収まるわけも無く、何十個ものAWSアカウントが存在しています。ここまでAWSアカウントが増えてくると、AWSアカウントの管理自体が煩雑になってきます。AWSにおけるアプリケーションの設計、構築のベストプラクティスが公開されています。Zoneが公開されています。SSO環境の構築を検討してみます。構成図はこんな感じです。SSOがバージニア(us-east-1)にしか対応していなので、全てバージニアリージョンで構築しています。SSOではユーザー管理にActiveDirectoryを使用します。Connectorを利用して連携します。SimpleADで構築しました。認証はユーザーID/パスワードで行いますが、多要素認証も無いとセキュリティ的に不安です。Service(RADIUS)サーバを用意することで、多要素認証に対応できます。今回はEC2インスタンスを建てFreeRADIUSを使って、RADIUSサーバを構築して多要素認証を実現しました。多要素認証のためにRADIUSサーバを自前で構築してみましたが、本番導入するには運用が辛そうです。EC2単体で立ててしまうとRADIUSサーバが単一障害点になってしまうため、冗長構成にしなければいけません。ユーザ情報の分離...と考えだすと大変なので外部サービスを利用したいです。先人の知恵をお借りすると、DuoやOneLoginといった外部サービスを利用して多要素認証を実現しているようなので、このあたりの利用を検討しています。新人研修2018年8月9日ハンズラボPocketこんにちは!新卒の川永です。7月から他社様向け小売系基幹システムの開発チームに配属され、分からないことだらけの中日々奮闘しております。今は主にPythonでAPIを作ったりしています!その中で、メンティとして感じたことを書いていきたいと思います。個人的な感想ですので温かい目で見て頂けると幸いです。私は、メンターの面識はあった方が良いと思いました。メンターと面識があることによって、分からないことの多いチームに加わった直後でも質問がとてもしやすかったです。メンターを介して他のメンバーとコミュニケーションが取りやすく結果として早くチームに馴染むことができたように思えます。メンターと関係を築く仕事以外の話をする時間が大切だと感じました。チーム等で一緒に食事に行って趣味や好きなもの嫌いなものの話をすることによってよりフランクな関係になり小さな相談事やプライベートな話をしやすくなりました。話しやすい雰囲気がある事が前提かなと思います。個人的にはこれがもっとも重要だと感じました。メンバーが協力的であるとチームとしてメンティの疑問を解決でき、メンター以外の様々な意見を聞くことができます。することで、私はチームとして働くという意識が強くなりました。メンターはメンティとメンバーの架け橋的役割も担うのがよいのかなと思いました。メンティとして心掛けたこと・質問する時は自分が今何に困っていてどうしたいのかを明確にしてから聞くこと。・メンター以外の人にも質問し見識を広めるようにすること。・分からない時は素直に言うこと、聞くことが仕事という意識を持つこと。以上いかがでしたでしょうか?私なりの考え方なので色々ご意見等あるかもしれませんが、参考になればと思います。Pi(1)Rekognition(1)S3(1)SQS(1)Vue.js(1)serverless(3)イベント(11)キーボード部(1)スクラム(1)デザイン(2)ブロックチェーン(1)新人研修(15)暗号通貨(1)機械学習(1)開発合宿(1)CONTACTハンズラボへのお問い合わせ、取材・講演のご依頼は、こちらからお願い致します。折り返し担当者よりご連絡させていただきます。RESERVED.トップ。