DeNA TechCon 2017に行ってきた話
DeNA TechCon 2017techcon.dena.com
DeNA TechCon 2017に参加してきました。
申し込んだのは1週間でしたが、登壇者にはDeNAからFastlyに移籍したばかりの奥一穂さんがいるってことで、こりゃ行くしかないと年休を取得。 一方でセッション一覧を見てみれば基調講演から始まるA-Stageは人工知能・機械学習ということで、ちょうど社内の企画で機械学習について調べていた自分にとって、かなり好都合でした。
基調講演と、続くセッションはPreferred Networksさんのゲストセッション。 最近の機械学習と深層学習については、このセッションを聞いておけばバッチリといった感じ。 とりわけ有名なこの動画の解説を聞けたのはとても良かった。
個人的にはどうにかソースコンバージョンに利用できないかなと考えているので、 これをきっかけに具体的な方法をもっと調べようと思います。
MacBook Pro (Late 2016)が届きました
昨年、MBP Late 2013を売却していたので、1月2日のApple の初売りを待っていました。
残念ながら大方の予想どおり、Touch Barモデルは対象外。
ですがApple製品は為替レートを考慮した値上がりが噂されているため、ここらで買っておくことにしました。
購入したのは13インチ Touch Bar搭載モデル。
変更はメモリを8G→16GBと、キーボードをUS配列に。
正直なところ Touch Barは非搭載でも構わなかったのですが、非搭載モデルにするとCPUがイマイチというところと、新しいものは試してみようという気持ちで選択しました。
あまり評判が良くない今回のMBPですが、個人的に不満はありません(今のところ)
キーボードはストロークが浅い方が好きだし、接続機器も以前から無線化を進めているため、せいぜい外部ディスプレイ出力(HDMI)がそのままだと出来ないくらい。
こちらはdongleを買うか、USB Type-C to HDMIケーブルを買うか、検討中です。
Azure App Serviceで寿司代金の記録botを作った話
概要
- 払った人と金額を記録できる
/oaiso [payer] [amount]
- 後から照会できる
/tsuke show
- 後から消去できる
/tsuke clear
背景
- 週末勉強会で寿司を頼むことが多い
- 部屋は参加者でローテーションしている
- Webで注文する事が多いため主催がまとめて支払う
- 寿司代金の記録botの需要が発生!
ソース
技術的なところ
- Azure App Service
- .NET Framework 4.6
- Azure Cloud SQL Database
- Slash Commands | Slack
その他
MavericksからEl Capitanにアップグレードしようとしたらコケた
原因は未だによくわからない。 MBP (Late 2013)の環境を一度キレイにしたくて初期化をしました。
Mavericksに戻るので、App StoreからEl Capitanに更新しようとしたところ、 正しいパスワードを入力してから確認コードを入力しろ云々のエラーメッセージ。 Mavericksの初期セットアップ時には問題なく2ファクタ認証できていたので、 パスワードの誤りとか、確認コードが届かないとかではないのです。
ブラウザでhttps://appleid.apple.com/にログインしてApp用パスワードを作ってみるも変わらず。 結局、このページから2ファクタ認証をオフにしてアップグレードすることができましたが、 イマイチすっきりしません。。。
AWS Lambdaを使ってSlack Botを作った話
いつもの週末勉強会でSlackは使っていたので、自然とBotを作ろうという話になりました。 Botに何をさせるかは少し悩みましたが、いつも昼飯で悩むので、くまモンが昼飯をランダムで指定するBotにします。
実現する方法はいくつもあるようなので、AWS Summitで勉強したばかりのLambdaを使ってみました。
ざっくり手順
Lambda関数を準備
AWSサービス一覧からLambdaを選択。 そして[Create a Lambda function]をクリック。
続いてSelect blueprintです。 Botを作るにはmicroservice-http-endpointを選択すると楽らしいのですが、 なかなか上手く行かなかったので、まずLambdaを理解するためにサンプルは使わないことに。
ここでは右下の[Skip]を選択。
Configure triggersですが、ここでは[Next]で飛ばします。
関数に名前をつけます。「myLunchBot」としました。言語はNode.jsです。
zipでupする方法やS3を使う方法もあるようですが、ここではインラインで記述します。 usernameに"くまモン"、あとはランダムでテキストを返すようにしました。
[Create new role from template(s)]を選択して新規ロールを作成します。 あとはそのまま。
Reviewで確認して[Create function]をクリック。 関数が出来たら[Test]してみます。良い感じです。
API GatewayでLambda関数を設定
今度はAPI Gatewayを作成します。 このサービスを利用することで、Lambdaを利用してAPIを公開することができるとのこと。
続いてリソースの[アクション]から[メソッドの作成]を選択、POSTメソッドを作成します。 統合タイプはもちろんLambda関数を選択、リージョンを選択するとLambda 関数名を入力できます。 ここ、最初は候補が出てこないのですが、入力し始めると出てきますね。ちょっと不安になる…
[保存]を押して作成完了。
続いて、POST - メソッドの実行という画面になります。 ここでは、統合リクエストの設定からマッピングテンプレートを設定する必要があるようです。 下記を参考にさせて頂きました。
[保存]します。
戻ってテストしてみると…あれ、Unsupported Media Typeになってる。
さっきの本文マッピングテンプレートのところ、 リクエスト本文のパススルーが「テンプレートが定義されていない場合 (推奨) 」になっていました。 作成時に「はい、この統合を保護します」を選択したからみたいです。 「リクエストの Content-Type ヘッダーに一致するテンプレートがない場合」を選択し直します。
もっかいテスト。うん、今度はOKそうです。
[アクション]からAPIのデプロイを行います。
そして呼出URLが表示されるので、これをメモっときます。
SlackのOutgoing Webhooksを利用
以下のURLからOutgoing Webhooksを探します。 https://{team}.slack.com/apps
[Add Configuration]をクリック。
今回はすべてのチャンネルを対象にするため「Any」を選択。 トリガーとするフレーズは「ごはん」。
URLに先ほどメモった呼出URLをセット。 Customize Iconには、くまモン公式から取得した画像を利用させて頂きました。 https://kumamon-official.jp/application
[Save Settings]をクリックして準備完了! 早速試してみます。
できました! 「ごはん」に反応して、ランダムで反応します。
現在は前方一致なので、次はすべてのポストを対象にして判断をLambda側にさせてみたいと思います。
開発合宿をしてみた件
定期的に集まっている同期との会話の折、
開発合宿なるものが流行とのこと。
なるほど、オススメの場所や過ごし方等々、調べるとたくさん出てきました。
開発合宿所としてオススメされているところです。
さて当日、メンバーが集まりやすい横浜駅に午前10時頃に集合。
今思えば、このへん全く無計画でした。
踊り子号でわずか1時間半。あっという間に到着です。
そう、現地でお昼を食べてもチェックインの15時までは時間が余るという…
1時間1000円程度?で先に会議室を借りることもできるらしいので、
やる気とお財布次第では選択肢に入れたいところですね。
今回は3人と少ないこともあり、周辺を散策して15時を待ちました。
到着。レトロな外観です。
外部電源不要の最新電話機があると私たちの間で話題に。
さて本番。以下ざっくりタイムスケジュールです。
初日
15:00 アイスブレイク
15:30 アイデアソン
17:00 環境準備
18:00 実装
2日目
9:00 ひたすら実装
21:00 プレゼン
最近の技術トピック等の雑談を経て、
今回の目標は“動くアプリを作る”となりました。
また、“実装時間中はIngressを起動しない”,“プレゼン終わるまではガルパンを上映しない”といった制約が課されました。
上下関係もない身内だけの場合は特にダレやすいので、最初が肝心ですね。
最初は紙でアイデア出し。
もっと色々準備してマインドマップも綺麗に書きたかった(反省)。
環境は以下のとおり。モックはWebアプリとしました。
リポジトリ:Bitbucket
テンプレートジェネレータ:yo
タスクランナー:gulp
yoやgulpは詳しいメンバーが導入手引きしてくれたので、
Slackに上がったコマンドと説明を受けて楽をしました(^_^;
ここは要復習。。。
そして実装以降なんですが、みんな集中していたので、誰も写真を撮っていませんでした(笑)
そのことに気づいて撮った、成果発表中の一コマ。
社内報告などがある場合は、撮影役を決めた方が良いですね。
そんなこんなであっという間の時間でしたが、
やはり非日常+タイムプレッシャーの効果はあったと思います。
ひとまず動くものが作れたのもGood!!
今後はメンバー宅持ち回りの週末勉強会でブラッシュアップしていきます(^-^)