tech::hexagram

personal note for technical issue.

AWS Summit Tokyo 2015に行ってきた

グランドプリンスホテル新高輪で6/2(火)、6/3(水)の2日間に渡り開催された、AWS Summit Tokyo 2015に行ってきた。 AWSのサービスは個人のドメイン向けにRoute53, VPS, EC2, S3などを使っているものの、あまり知識の深堀ができていないので、より積極的に使えるよう参考になるセッションを色々と聞いた。

自分が聞いたセッションの一覧は以下のとおり。細かいスライドの内容はgistに記載しているのでそちらを参考にしていただければ。

2015.06.02 Day1

KEY-01 Day1 基調講演

10:30-11:50

お昼

お弁当が配られた「飛天会場」の入り口。巨大なディスプレイにAWSを利用しているパートナーのインタビュー映像が写されていた。

まい泉のお弁当。美味しかった。

EG-01 オンワード樫山のシステム再構築におけるSAP on AWS導入事例

13:20-14:00

TA-03 Amazon Redshift Integration Deep Dive

14:20-15:00

満員で立ち見だったので、スライドの内容のメモは取れなかった。スライドのキャプチャのみ掲載。

メモ

  • RedShiftは並列計算により高速にデータ分析ができるデータウェアハウスソリューション。

TA-04 Enterprise Applications Deep Dive

15:20-16:00

メモ

  • Amazon WorkSpaces : クラウド上の仮想環境
  • Amazon WorkDocs : フルマネージド型のセキュアなエンタープライズストレージ・共有サービス
  • Amazon WorkMail : セキュリティに優れたマネージド型の企業向けEmail、カレンダーサービス

TA-05 AWS Elastic Beanstalk, OpsWorks, CodeDeploy, CloudFormationを使った自動デプロイ

16:20-17:00

メモ

  • Elastic Beanstalk, OpsWorks : デプロイ・プロビジョニング・モニタリングがまとめて行える。
    • Elastic Beanstalkは定番構成の構築・アプリデプロイに使える
    • OpsWorksは多様なアーキテクチャをサポート。chefのレシピも使える
  • CodeDeploy : デプロイに特化したサービス。グループ内に一度にデプロイしたり1台ずつデプロイしたりと設定可能。
  • CloudFormation : 設定管理 & クラウドオーケストレーションサービス。
  • CodeDeploy + CloudFormationで更にきめ細かい要件を満たすデプロイ・プロビジョニングが行える。

EG-05 【パネルディスカッション】高まるゲームプレイ動画の価値。注目市場の今後の展望とは!?

17:20-18:20

メモ

  • Lobiの紹介とプレー動画の例にモンストが出ていた
  • ゲームのプレイ動画はスマホゲームの市場拡大に大きなインパクトを与えている
    • ゲームのファンを増やす入り口として
    • 既存ユーザの活性化の役割として
  • SDKとしてゲーム内に取り込まることで、プレー動画の作成・共有の敷居がかなり下がっている
    • 導線次第だが、サービスの提供の仕方によってはゲーム攻略サイトをも凌駕する可能性がある

2015.06.03 Day2

TA-10 AWSセキュアデザイン(IAM)

15:20-16:00

メモ

  • IAM Top10ベストプラクティス
    • (1)AWSアカウントのアクセスキーをロック
      • コンソールから設定できる
    • (2)個々にIAMユーザを作成
      • アカウントは貸し借りしない、適切な権限を付与できるように逐一ユーザを作成
    • (3)特権ユーザにはMFA
      • ハードウェアのMFAなら2個以上持っておく
    • (4)強度の高いパスワード
      • ポリシーに沿ったパスワードを設定する
    • (5)最小限の特権
      • IAMユーザに対して必要最低限の権利を付与
    • (6)EC2で動作するアプリにはIAMロール
      • AWS操作権限を定義するための仕組み
    • (7)ポリシー条件を使いこなす
      • IAMポリシーはEffect, Action, Resource, Condition
        • Effect : Allow / Deny
        • Action : 対象となるAWS操作
        • Resource : 対象となるAWSリソース
        • Condition : アクセス制御が有効となる条件
    • (8)ローテーション
    • (9)アカウント履歴の監査
    • (10)不要な認証情報の削除
      • 半年 / 一年など経って退職などで不要になったユーザは適宜削除する

TC-10 Auto Scaling x Spot Instancesによるスケーラビリティとコストカット事例

16:20-17:00

メモ

  • 負荷に応じて利用するインスタンス数を自動的に追随することで、劇的にコストカットを行うことができる
    • 月単位のコストは下がるが、初期コストはある程度かかるので、どの程度運用するかにもよりそう

TA-12 新サービス解説セッション 〜Amazon Elastic File SystemとAmazon Machine Learning〜

17:20-18:20

メモ

  • Amazon Machine Learningは二項分類・多クラス分類・回帰分析が可能
  • 教師データ・評価データの割合はS3, RedShift, RDS上のMySQLに格納されたデータを指定。それぞれ7 : 3で自動的に振り分けられる
  • 教師データからモデルを生成し、生成されたモデルの精度を3割の評価データを利用して評価する
  • モデルを使った予測はバッチ予測ないしリアルタイム予測が使える

おわりに

  • IAMの作り方は参考になったのでこれからEC2で環境を作るときには参考にしてみたい。
  • Elastic Beanstalk, OpsWorks, CodeDeploy, CloudFormationはデプロイのやり方によって最適なサービスを選んでいけると良さそう。ひとまず試したいときにはElastic BeanstalkないしOpsworksあたりから触ってみたい。
  • Amazon Machine Learningでどういったモデルが使えるのかが気になる。

今回のおみやげ。

map(&:to_i)すると文字列は0として評価される

[4] pry(main)> array = Array[1,2,3,'user_id']
=> [1, 2, 3, "user_id"]
[8] pry(main)> sorted_array = array.map(&:to_i)
=> [1, 2, 3, 0]
[9] pry(main)> sorted_array = array.map(&:to_i).uniq
=> [1, 2, 3, 0]
[10] pry(main)> sorted_array = array.map(&:to_i).uniq.select{ |i| i > 0 }
=> [1, 2, 3]
[11] pry(main)> sorted_array = array.map(&:to_i).uniq.select{ |i| i > 0 }.sort
=> [1, 2, 3]

Objective-Cについて、後で調べたいこと

不思議な挙動だなと思ったことがあったので書いておく。

現象

@implementation ListClass

- (NSInteger)indexOfObjectWithBaseClass:(BaseClass *)baseClass
{
    NSUInteger index = [self.list indexOfObject:baseClass];
    return (NSInteger)index;
}

@end


@interface extendClass : baseClass
@end

こういった状態になっている時に、 ListClass#indexOfObjectWithBaseClassextendClassを引数として渡しても、内部ではextendClassとして解釈されるらしい。

調査結果

あとで書く

まとめ

あとで書く

2015年GWまとめ

今日でGWが終わるのでまとめておく。

今年は5/7(木)、5/8(金)を有給休暇でお休みしたので9連休。 連休をとったものの、関東圏内から出ることはなかったが飲み遊び学び色々と充実していた。

買った

ロードバイクを買いました。5/4に納車。 車種はcannondale SuperSix Evo 105。

http://www.cannondale.co.jp/jpn_jp/2015/bikes/road/elite-road/supersix-evo/supersix-evo-5-105www.cannondale.co.jp

パーツや工具なども揃えて大体1ヶ月分の給料くらいの大きな買い物をしたけど、周りでも乗っている人が多いしこれから買った額以上の体験ができそうで楽しみ。

初日は羽田空港まで試運転をした後帰宅。今日は赤レンガ倉庫に行ってみた。 サイクルコンピュータで図ると平地でも信号待ちで止められない限りは30km/hくらいは普通に出るし、少し下り坂が入ると40km/h手前くらい出るからもう怖い。

安全運転を意識しつつ、距離を伸ばしていけたらと思う。

作った

いつもの通り1週間分。先週の土曜と今週の土曜作った分を上げておく。

5/2

f:id:manji602:20150510224959j:plain

f:id:manji602:20150510225009j:plain

  • かぼちゃの煮っ転がし
    • 冷凍カボチャを煮るだけのいつものやつ
  • なすとじゃがいもと玉ねぎのカレー
  • なすの揚げ浸し
  • 大根の味噌汁
    • 今使っている味噌が大根を具にするとすごく美味しくできるので作ってみた。細切りがなかなかうまくできなくて適当に切ったら見栄えが微妙なことに…
5/9

f:id:manji602:20150510224905j:plain

f:id:manji602:20150510224912j:plain

  • かぼちゃの煮っ転がし
    • 冷凍カボチャを煮るだけのいつものやつ
  • 豚汁
    • 豚コマと豚汁の水煮、しいたけのあまりも入れて少しアレンジ
  • ほうれん草のおかか和え
  • ネギとしいたけと豚肉の生姜焼き
    • 本当は玉ねぎを使いたかったけどちょうどいい量で売ってなかったので適当に入れてみた。まぁまぁ美味かった

食べた

f:id:manji602:20150510224948j:plain

5/3にすき焼きを食べに。定期的に自分が幹事をして肉を食べる集まりがあり、富士見台の牛蔵という店が最近のもっぱらのチョイスとなっている。

遊んだ

f:id:manji602:20150510224930j:plain

5/5は同期とゲーセンに遊びに行った後焼き肉を食べ、そのまま同期宅でリアル猫集め。動物慣れないので手懐けるのが大変だった。

f:id:manji602:20150510224857j:plain

買ったチャリンコで横浜赤レンガ倉庫へ。海沿いを涼しい気候の中走るのは快適だった。

あとはラブライブ1期・2期一挙放送を一挙に見て目から汗をかいたり。

学んだ

  • 詳解Objective-C2.0を読んだ

    • 第10章くらいまで。流し読みしつつポイントをまとめている最中。半分くらいまでは読み進めることが出来たのでまた折を見て読みたい。
  • Rails Tutorialを進めた

    • 第7章まで。ユーザー登録まで出来たので次週以降はサインイン・サインアウトをやりつつ、会社の勉強会の課題のリポジトリも作り始めるつもり。

振り返ってみると結構充実してたんでいい息抜きになって良かった。 来週からまた仕事復帰なので頑張ります。

LINE Developer Dayに参加してきた

最近あまりカンファレンスに行けてなかったものの、渋谷開催で近かったのもあって久しぶりに参加してきた。

ラインナップとしては以下のとおり。細かいスライドの内容はgistに張ってあるのでそちらを参照してもらえると良いかと。

A-1 オープニング

10:30-10:40

A-2 LINE Global Cluture

10:40-11:00

A-3 LINE Messenger for the World

11:00-11:40

雑感

  • グローバル化を推し進める上で通信環境の差異を現地に足を運んで確かめるというのはすごく説得力があると思った。
  • レビューの星の数や本文を形態素解析し、モニタリングできるシステムを内製で作っているのでユーザーの声を拾いやすくする仕組みが整っているなと思った。
    • 弊社でもやりたい。
  • パキスタンからの通話のうち半数がサウジアラビアへの通話、1/4がパキスタン国内への通話というのが興味深かった。

A-4 LINE Platform Development Chronicle

11:50-12:30

雑感

  • サービスが拡大するにつれバックエンドの構成に問題が生じ、その度にスケールしやすく、レスポンスタイムが高速になるように最適化を行っていた。
  • マイクロサービスを作るときは短期間でiterationを回し、目的を達成したら縮小 or 解散。そのメンバー構成も組織図にとらわれないものというのはなかなか新鮮だった。

A-5 HBaseとRedisを使った100億超/日 メッセージを処理するLINEのストレージ

13:30-14:10

雑感

  • 専門用語が多くなかなか難しいセッションだったものの、HBaseの特性を活かしてテーブル設計しないと膨大なアクセスをさばくのは難しいことがわかった。テーブル設計は重要

B-3 グローバルなネットワーク環境と複数OSに対応するためのLINE Game Client Platform開発戦略

14:20-15:00

雑感

  • 通貨単位が大幅に違うと桁あふれが起きてしまうというのはなかなか危うい問題だと思った。

A-7 巨大化するスタンプ・着せかえ販売システム、その危機と復活の記録

15:10-15:50

雑感

  • ショップサービスの利用者数はLINEのユーザー x ショップサービスを利用する割合。このパラメータが短期的・長期的にどう変わるかを考えることでスケーラビリティを意識したサービス運用ができる。

B-5 ビッグデータを活用するための分析プラットフォーム 〜データ集計した先に求められる分析技術〜

16:00-16:40

雑感

  • エンジニア向けとプランナー向けでデータ分析のシステムを分けているというのが印象的だった。
  • サービスが拡大・グローバル化が進むに連れKPIが増えすぎて追えなくなる -> 自動化は避けては通れない道だと感じた。
    • 弊社も分析ツールがあるが、項目が多すぎて見切れていないのでは。
  • サービスが長寿化・多様化するに連れ訳の分からないフラグが増えまくる -> 共感出来すぎてヤバかった。

B-6 ベイズ推定とDeep Learningを使用したレコメンドエンジン開発

16:50-17:30

雑感

  • 望ましいレコメンド結果を手に入れるにはある程度の仮説や、パラメータのチューニングが必要。
    • 研究として扱うのであればそこもセンシティブに考える必要があったが、企業としてやっていくにはこれで十分なのでは。
  • システム構成が、インプットとロジックを変えるだけで様々なレコメンドに使えるというのは素晴らしいと思った。
  • 購買履歴がなくても画像の類似度でレコメンドができるというのは興味深かった。