Powerbeats3が壊れたので交換した話

Apple Storeで購入

昨年の11月、Apple Store銀座に立ち寄る機会があったため、 万引きエクスペリエンス(セルフ・チェックアウト)で購入していました。

購入直後の写真 f:id:suzusin:20170320152114p:plain

レシートがPDFとしてメール送付されてくるので管理が楽で良いです。 それまでは市販のBluetoothイヤホン(約2,000円)を使っていましたが、

  1. 電源を入れる
  2. 「Connected」とイヤホンから聞こえる
  3. iPhoneアプリで音楽を再生する
  4. iPhoneのスピーカーからそのまま音楽が流れてくる

というコントのような出来事が度々起きていたため、 電源を入れてちゃんと接続されてくれるPowerbeats3は重宝していました。

突然の故障

購入から3ヶ月経った2月某日。 ハーフマラソン中に突然電源が落ちました。 もちろんフル充電してから家を出ており、また2,3時間しか経過していないため、 バッテリー切れではないことはすぐにわかりました。

修理の依頼と交換まで

Apple Storeに行ったところ、 「StoreからBeatsの修理センターに送るよりも、お客さんが直接送った方がいいっすよ」とのこと。 Apple サポート

Apple サポートへのお問い合わせ - Apple サポート

電話をして事情を説明、集荷の依頼となりました。

日曜の昼間に電話しましたが、それほど待たされることもなく、 また手元にシリアルナンバー(購入時の箱の底のシールに記載)とレシートがあったため、スムースに進めることができました。 ただし、交換となった場合の注意点として、色は選択できないというのはちょっと気になりました。 Beatsはカラーバリエーションが豊富なので、特定の色が好きで購入する人もいると思います。 僕は特にこだわりが無かったので了承しましたが、黒以外似合わないような人に赤が届くこともあると思うと微妙です。

集荷、発送、完了までは各1日ほど

f:id:suzusin:20170320154438p:plain

f:id:suzusin:20170320154431p:plain

DeNA TechCon 2017に行ってきた話

DeNA TechCon 2017techcon.dena.com

DeNA TechCon 2017に参加してきました。

f:id:suzusin:20170213001003j:plain

申し込んだのは1週間でしたが、登壇者にはDeNAからFastlyに移籍したばかりの奥一穂さんがいるってことで、こりゃ行くしかないと年休を取得。 一方でセッション一覧を見てみれば基調講演から始まるA-Stageは人工知能機械学習ということで、ちょうど社内の企画で機械学習について調べていた自分にとって、かなり好都合でした。

基調講演と、続くセッションはPreferred Networksさんのゲストセッション。 最近の機械学習と深層学習については、このセッションを聞いておけばバッチリといった感じ。 とりわけ有名なこの動画の解説を聞けたのはとても良かった。

youtu.be

個人的にはどうにかソースコンバージョンに利用できないかなと考えているので、 これをきっかけに具体的な方法をもっと調べようと思います。

MacBook Pro (Late 2016)が届きました

昨年、MBP Late 2013を売却していたので、1月2日のApple の初売りを待っていました。
残念ながら大方の予想どおり、Touch Barモデルは対象外。
ですがApple製品は為替レートを考慮した値上がりが噂されているため、ここらで買っておくことにしました。

f:id:suzusin:20170114200915j:plain

購入したのは13インチ Touch Bar搭載モデル。
変更はメモリを8G→16GBと、キーボードをUS配列に。

正直なところ Touch Barは非搭載でも構わなかったのですが、非搭載モデルにするとCPUがイマイチというところと、新しいものは試してみようという気持ちで選択しました。 

www.apple.com

 

 あまり評判が良くない今回のMBPですが、個人的に不満はありません(今のところ)

キーボードはストロークが浅い方が好きだし、接続機器も以前から無線化を進めているため、せいぜい外部ディスプレイ出力(HDMI)がそのままだと出来ないくらい。

こちらはdongleを買うか、USB Type-C to HDMIケーブルを買うか、検討中です。 

Azure App Serviceで寿司代金の記録botを作った話

概要

  • 払った人と金額を記録できる /oaiso [payer] [amount]
  • 後から照会できる /tsuke show
  • 後から消去できる /tsuke clear

f:id:suzusin:20161228171949p:plain

背景

  • 週末勉強会で寿司を頼むことが多い
  • 部屋は参加者でローテーションしている
  • Webで注文する事が多いため主催がまとめて支払う
  • 寿司代金の記録botの需要が発生!

ソース

github.com

技術的なところ

  • Azure App Service
  • .NET Framework 4.6
  • Azure Cloud SQL Database
  • Slash Commands | Slack

その他

  • Iconは大人気!いらすとやさんからお借りしました
  • ユーザマスタを持っていないので人数が変わる場合は改修が必要
  • 良い感じに精算するコマンドを付けたい ex: Aさん3000円、Bさん4000円、Cさん9000円なら3000円は相殺する等
  • Slackが3秒でタイムアウトする問題が未解決(常時接続オンにしてみたが変わらず) f:id:suzusin:20161228173512p:plain

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関数を準備
  • API GatewayでLambda関数を設定
  • SlackのOutgoing Webhooksを利用

Lambda関数を準備

AWSサービス一覧からLambdaを選択。 そして[Create a Lambda function]をクリック。

続いてSelect blueprintです。 Botを作るにはmicroservice-http-endpointを選択すると楽らしいのですが、 なかなか上手く行かなかったので、まずLambdaを理解するためにサンプルは使わないことに。

ここでは右下の[Skip]を選択。 f:id:suzusin:20160903183515p:plain

Configure triggersですが、ここでは[Next]で飛ばします。 f:id:suzusin:20160903190429p:plain

関数に名前をつけます。「myLunchBot」としました。言語はNode.jsです。 f:id:suzusin:20160903190643p:plain

zipでupする方法やS3を使う方法もあるようですが、ここではインラインで記述します。 usernameに"くまモン"、あとはランダムでテキストを返すようにしました。 f:id:suzusin:20160903191041p:plain

[Create new role from template(s)]を選択して新規ロールを作成します。 あとはそのまま。 f:id:suzusin:20160903191547p:plain

Reviewで確認して[Create function]をクリック。 関数が出来たら[Test]してみます。良い感じです。 f:id:suzusin:20160903192159p:plain

API GatewayでLambda関数を設定

今度はAPI Gatewayを作成します。 このサービスを利用することで、Lambdaを利用してAPIを公開することができるとのこと。

API名を入れて[APIの作成]を押します。 f:id:suzusin:20160903193337p:plain

続いてリソースの[アクション]から[メソッドの作成]を選択、POSTメソッドを作成します。 統合タイプはもちろんLambda関数を選択、リージョンを選択するとLambda 関数名を入力できます。 ここ、最初は候補が出てこないのですが、入力し始めると出てきますね。ちょっと不安になる… f:id:suzusin:20160903200015p:plain

[保存]を押して作成完了。

続いて、POST - メソッドの実行という画面になります。 ここでは、統合リクエストの設定からマッピングテンプレートを設定する必要があるようです。 下記を参考にさせて頂きました。

takayukii.me

[保存]します。 f:id:suzusin:20160903200930p:plain

戻ってテストしてみると…あれ、Unsupported Media Typeになってる。 f:id:suzusin:20160903201227p:plain

さっきの本文マッピングテンプレートのところ、 リクエスト本文のパススルーが「テンプレートが定義されていない場合 (推奨) 」になっていました。 作成時に「はい、この統合を保護します」を選択したからみたいです。 「リクエストの Content-Type ヘッダーに一致するテンプレートがない場合」を選択し直します。

もっかいテスト。うん、今度はOKそうです。 f:id:suzusin:20160903203708p:plain

[アクション]からAPIのデプロイを行います。 f:id:suzusin:20160903203946p:plain

そして呼出URLが表示されるので、これをメモっときます。

SlackのOutgoing Webhooksを利用

以下のURLからOutgoing Webhooksを探します。 https://{team}.slack.com/apps

[Add Configuration]をクリック。

今回はすべてのチャンネルを対象にするため「Any」を選択。 トリガーとするフレーズは「ごはん」。 f:id:suzusin:20160903204939p:plain

URLに先ほどメモった呼出URLをセット。 Customize Iconには、くまモン公式から取得した画像を利用させて頂きました。 https://kumamon-official.jp/application

[Save Settings]をクリックして準備完了! 早速試してみます。

できました! 「ごはん」に反応して、ランダムで反応します。 f:id:suzusin:20160903210318p:plain

現在は前方一致なので、次はすべてのポストを対象にして判断をLambda側にさせてみたいと思います。

開発合宿をしてみた件

定期的に集まっている同期との会話の折、
開発合宿なるものが流行とのこと。
なるほど、オススメの場所や過ごし方等々、調べるとたくさん出てきました。

今回選んだのはアクセスも良好な静岡県伊東市、山喜旅館さん。

www.ito-yamaki.jp

開発合宿所としてオススメされているところです。

さて当日、メンバーが集まりやすい横浜駅に午前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に上がったコマンドと説明を受けて楽をしました(^_^;

ここは要復習。。。

 

そして実装以降なんですが、みんな集中していたので、誰も写真を撮っていませんでした(笑)
そのことに気づいて撮った、成果発表中の一コマ。
社内報告などがある場合は、撮影役を決めた方が良いですね。

f:id:suzusin:20160604022021j:plain

そんなこんなであっという間の時間でしたが、
やはり非日常+タイムプレッシャーの効果はあったと思います。

ひとまず動くものが作れたのもGood!!
今後はメンバー宅持ち回りの週末勉強会でブラッシュアップしていきます(^-^)