y.takky てくめも

web技術について勉強会の参加メモだったり、本を読んだメモだったりを載せる予定

夜のGooge Cloud Next'17 Tokyo ~Google Cloud Community fes~

cloudnext.withgoogle.com

6/14(水)に開かれた上記カンファレンスの夜のイベントとして、Google Cloud Community fesが開催されたので参加してきた。
www.meetup.com

Google Cloud Community fesはGoogle系の技術を扱うコミュニティが集まって様々なセッションが行われていた。 GCPUGでのパネルディスカッションやbq SushiでBigQueryの開発者の方を読んで話を聞くなど様々あったが ひたすらkubernetes部屋にいた。 セッション内容は以下の通り

k8sjp.connpass.com

An Introduction to Kubernetes

An introduction to Kubernetes // Speaker Deck

Kubernetesの基本的なところからおさらいすることができてよかった。 PodやLabelsの概念はわかるんだけど etcdやapiserver周りはそこまで見れてなかったから参考になった。 以下メモを箇条書き

概念的な

  • kubernetesはよくk8sと略されるけど uberneteが8文字だから
  • 米国ではよくk-eightsと呼ばれているらしい
  • PrometeusというKubernetesのメトリクスを収集するのがある。
  • KubernetesはPortablityで自分で立てることができるし、RuntimeもDockerだけじゃない
  • HybridなCloud Kubernetesも組める。GLBとかで受けて様々なクラウドに流すのもあり
  • Kubernetes Cluster Federationで複数k8s Clusterを仮想的に1つに見せられる。

kubernetes は成長している

アーキテクチャ

  • MasterとNodeの2つの役割がある
  • Masterのetcd : kubernetesの全ての状態を保存する。 分散型kvs.zookeperの類似品みたいな
  • watchしといて更新されたら対象コンポーネントに通知が飛ぶ
  • apiserver
    • REST/認証/認可
    • 唯一etcdに書き込む。
    • validation(specがあってるか)
    • Scheduler : Podのスケジューリング。スケジューリングされていなPODを特定のNodeにスケジュールする。
    • Controller Manager : ビジネスロジックを司る。 ある特定のリソースを作ったときに他のリソースを作るかの判断を行う。
    • kuberlet(キューブレット) : apiserverを常にwatchしている。 自分のNodeに割り当てられたコンテナがあるかを調べて割り当てられたらImageのPullとかする。

コアコンセプト

  • Pods

    • デプロイの最小単位
    • 複数のコンテナと複数のボリューム
    • IP-per-pod
  • Labels

    • Key valueのデータ 唯一グルーピングする。ラベルセレクタ
  • Replica sets

    • N個のPodが実行されている状態を保つ
  • Services
    - 仮想IPとポート
     - L4LBにあたるもの
    - ラベルセレクタによるPodのグルーピング  
     - サービスが負荷分散してくれる。  ClusterIP -> 内部の仮想IP , External-LB
    
  • PersistentVolumes
    • PersistentVolumes ストレージを払い出して
    • PersistentVOlumeClaims それを要求する
    • GKEであればPesistentDisk
  • その他のリソースがある

作りたい

  1. apiserverに作りたいです って命令 2.認証認可する 3.パスしたら etcdに対して作成するpodの情報をKVSを書く 4.ユーザには200返す
  2. SchedulerがUnScheduleのPodを監視する。Nodeの状態見ていい感じに配置する。配置したNodeの情報をapiserverで受けてetcdに書き込む
  3. kubeletが自分の中で動いているか確認して、イメージ立ち上げたりコンテナ立ち上げたりする。 7.ステータスは apiserverを経由してetcdに書き込む

  4. sternという便利ツールある

  5. kubernetes : up and Runnning とう言う洋書がいい。なおkubernetesは進化し続けるから和書はでないと思われる(翻訳しているタイミングでバージョン上がってしまう)

実際は"キューブコントロール"って読むみたい。

Understanding SRE

GoogleでSREやっている Paul Newson (@newsons_nybbles) | Twitter が発表してくれた。 スライドはGoogle翻訳したものらしい。 あと同時翻訳なんてあるわけないので、頑張って英語を聞いていた。

google内のjobローテーションでSREチームに所属してた。

  • 開発やデプロイ、サポートまでは分割していて開発者だったりQAだったりインフラだったりサポートチームだったりするけどそうじゃない。エンジニアリングってのはすべてをやることだよ。

  • SREは buildingやScaleじゃなくてテストとかそのへんまで関わってくよ

  • 大体のチームではOperation TeamはコードをBuildしないし、その逆だけどGoogleはその辺ちゃんとやる。

  • サービスがスケールするたびに自動化やコーダが必要になってくる。

  • SREは多くの方法とは異なる。

  • GoogleにおいてもSREはレアで面白い仕事でキャリアの成長やメンターになる

  • On-call

    • Two Location
    • 8時間の時差
    • 最低6人で最大12時間シフト
    • 1シフトで2コールまで

LT

LTあたりからバッテリーがもうダメでそんなにメモは取っていない。

10分でわかる「kube-aws]

10分でわかる「kube-aws」 - Qiita

アプリのVersionごとにURLを自動生成 on GKE

[Lt]versionごとにurlを自動生成

  • アプリをデプロイしたらデプロイしたversionのURLがつくといいなー。
  • gitにtagをつけてpushするだけ
  • ingressのrulesでこっちのURLに来たらこっちのsvc使うとかできる。
  • container builder でdeployもできる。

Container Builderに関してはかなり参考になった。

Prometheus による Kubernetes モニタリングの基礎

Prometheus による Kubernetes モニタリングの基礎 / Kubernetes monitoring with Prometheus // Speaker Deck - CNCFのコンポーネントの1つ - Service Discovery - PrometeusはPodとしてデプロイするのがいい - Prometeusが定期的に監視してくれる - Prometeusの集約・監視もできる(Federation) - Grafanaで可視化できる - kubestatemetricsとかでkubernetes自体の監視もできる

アプリケーションの監視

Kubernetes1.6

  • SLOがある。
  • 5000Node , 150000podまで対応した
  • etcdのパフォーマンスを上げた
  • httpでなく protocolbufferで内部のやり取りはするようにした
  • RBAC Support
  • PrivateのDNS ZOneが使えるようになった
    • DNS ServerをCLusterの中で使えるようになった

流石に150,000pod立てるようなアプリケーション運用はしないから恩恵は得られないだろうけど、 etcdのパフォーマンスが上がったっていうのはじみに良い気がする。

まとめ

昼のGoogle Cloud Nextはどちらかというと万人向けで基本的なところから始まったけどコミュニティイベントはかなりディープな感じでよかった。 かなり勉強になりました。

運営の皆様ありがとうございました。

あとみんなコミュニティ入ろう。

GCPUG | Google Cloud Platform ユーザーグループ

sublimetext3をCLIから開く

目的

CLIで何か作業をしていてファイルを編集したい時がある。 基本的にvimでも良いけど、sublimetext3で開きたい時がある。

CLIからコマンドで開ければ便利なので設定方法を載せておく。

パス

sublimeをインストールした下にsublというコマンドがある。

Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl

これをaliasとして追加する。

alias

~/.bash_profileにでも追加しておく

alias sublime=‘Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl’

その後 source ~/.bash_profile

すればOK

開く

sublime ファイル名 でファイル開ける。 他にもオプションがいろいろある。

技術スタックと今後の目標

明日から5月病にならないように現在の技術スタックと今後の目標をまとめておく 技術スタックは加筆修正していく予定

言語

使えるプログラミング言語について

PHP

Laravel

  • 5.2ぐらいまで 5.3は追えていないし実運用で使ったことはない
  • いわゆるフロントWebサイトやCMSの実装。batchの実装などができている
  • TDDやDDDなどの設計手法については弱い。現在の業務上この辺やることはもうなさそうかなー。

CodeIgniter

  • 2系
  • 新規構築というより、エンハンス中心。ここ1年ぐらいは触ってない。
  • 読める程度

shell script

Golang

  • CLIツール
  • webアプリケーションの構築経験は無し
  • dockerで環境自動構築したり、API叩いたりみたいなツールの開発はできた。

Node.js

  • express.js
  • Google Cloud Functionの構築のため
  • CloudPubSub駆動や普通のエンドポイントとして開発はできてる。

delphi

学生時代に触っていた程度。 delphi6かな?

Visual C++

学生時代に触った程度。数値計算周り

Visual Basic

学生時代に触った程度。数値計算とか

Java

たしかJava6-7. 学生時代に触った程度。 オブジェクト指向開発とかしたきがする。

インフラ

Docker

  • ローカルでのminikube,docker-compose周り
  • 開発環境構築
  • Dockerfile
  • DockerImageの軽量化など
    • DockerImageの軽量化しなくてはならないほど最初の運用がダメすぎた。
    • 3GBのイメージとかありあえない。

kubernetess

  • Google Container Engine(GKE)メイン。

この辺は2-3章読んだ感じ。

chef

  • 既存のものに追加など。
  • 一から設計ってわけではないけどある程度は触れる

ansible

  • 小規模のインフラ自動構築

GCP

GKE

  • K8sにも関連するけど、svcやrc周りはわかる。
  • deploymentsはサポート曰くapiVersion: apps/v1beta1だからサポート対象外になる。
  • オートスケールとかその辺は使ったことない

GCE

  • 機能としては全てではないけどある程度触った感じ
  • オートスケールとかも検証はしたことある。

GCR

  • 普通にDocker Repositoryとして使っている程度
  • Container builderはそのうち触らないと..

GCF(Google Cloud Functions)

Dataflow

  • アーキテクチャ構築程度
  • 実実装やったことないけど、どんな感じでアーキテクチャ組めばいいかはある程度

    Cloud SQL

  • MySQLのマネージドサービスとして使っている程度で機能は使いこなせていない

DataStore

  • PHPpythonからデータのI/Oはできる。あと仕様の把握程度

その他

BigQueryやGoogle Stack Driver , StackDriverLogging,CloudPubSUbは触ったことがある

AWS

実はAWSはそこまで触ったことなくてS3とEC2は少し触った程度

DynamoDB

  • データ保存するためにデータを突っ込んだ程度

lambda

  • サーバレスでlineのbot作ったりしたぐらい

CI

wercker

  • リリースフローからboxの作成、yaml構築まで。ある程度はできる。

jenkins

  • job作ったり。pipelineとかはできてない

今後の目標

  • 英語 ドキュメント読んだりするのいい加減Google 翻訳とかだと辛いのでやらないと…

  • GCP周りのサービスの活用 現状フル機能は使えていないので使えるようにしないと

  • Infrastructure as Code とりあえずこれは読む

現在インフラもWebアプリもどちらも出来る、言い換えるとどっちも中途半端なのでこの辺は押さえておきたい

  • インフラ周り ネットワーク周りとかの設計は甘いのでもう少しちゃんとやらないとな。

Next ’17 Extended - Tokyo を聴いてきた

gdg-tokyo.connpass.com

3/8-3/10に開かれたGoogle Next17 の報告回にいってきた。 会場はGoogle Tokyo カンファレンスとか勉強会でたまにくるけど、六本木ヒルズのエレベータはなぜテンションがあがるのか。

あとすでにtogetterに当日の様子がまとめられているので合わせて読むといいかもしれない

togetter.com

Next Introduction

@sinmetalさん

スライドはこちら

docs.google.com

Google Cloud Nextとは

去年はGoogle Cloud Platform Next というGCPだけだったが今年はGoogle関係全て。 216 Sessions

Moscone(GCP周りの発表)はラフなエンジニアが多いけどMarriottはカチッと服着た人が多かった(Gsuite系はMarriott)

Keynote

Keynote Day3はOpenSource周りの発表が多かった。 - Apache Beam ->dataflow - Kubernetes -> GKE - TensorFlow -> Cloud ML

GCPではOpen Sourceをホスティングするサービスを提供していくというのがおおい

Google Open Source – opensource.google.com

OSS Productがまとまっている

NextProduct

  • Cloud Spanner
  • Dataprep -Video Intelligence API
  • Cloud Identify-Aware Proxy
  • Data Loss Prevention API
  • BigQuery Transf

NewFunctions

  • GCE : 64Core + moreMemory
  • CloudSQL: PostgreSQL
  • BQ : Federated query on Cloud Bigtable
  • Cloud Vision API : Text Detection

Change Status

  • Cloud Functions (Open Beata)
  • App Engilen Flex (GA)
  • Dataflow (GA) など

Price Down

  • 無料枠の増大とCompute Engineベースのものが値下げに

Committed Use Discounts

IAM : Custom roles

alpha申し込みページがある 細かい範囲を組み合わせて新しいIAMが作れる

IAP (Identify-Aware Proxy)

  • ログイン機能を提供してくれる。
  • URLにログインしようとするとGoogle認証とかできる。

Data Loss Prevention API

  • Sensitiveな情報を抽出するAPI
  • MLに近いけど、セキュリティの分類

Compute Engine

  • Shared Core バーストモード
  • 外向けのファイアウォール
  • XPN (Cross Project Network) プロジェクトを跨いで、LANの構築ができる。
    • Gsuiteが必要。ネットワーク的に近くなるかはわからない。

ASK A CLOUD EXPERT

  • Flex遅い

    • Imageのキャッシュでなんとかするように努力してる
  • Cloud Functions

    • Nodejs以外にPythonとGoはしたい。

BigQuery and Cloud Machine Learning

@kazunori_279さん

Video API

動画広告の効果測定にVision APIでやっている

Smart analytics with the signature

BigQueryを使ってもっと賢い検索をする UDFを作る。 javascriptでユーザ定義関数を作れる。

特徴づけをして類似検索をする TF-IDF使って実現する。

StackOverflowのデータはBQ上に入っている。 本文から単語を抜き出して特徴ベクトルで計算する。 TF-IDFでの計算値をjson化して、BQに入れ込む

github.com

Cloud MLと組み合わせる

辞書化してないものはクエリだと難しいからMLを使う。 機械に最適な解決方法を考えさせる

Google Cloud上での機械学習サービス

  • Cloud ML / Machine Learning Engine

  • CloudVisionAPIのようなAPIなどを使う方法もある。

BQとMLエンジンの組み合わせ

BQで前処理してMLで学習する

datalabのAPI使うとbqのデータを引っ張ってこれる tfの高レベルAPIにDNNClassifierなどがある。これを使うとコード書かなくても賢いNNが作れる

BQ+UDFである程度のrecomendationが実装できる。

Cloud functionsの紹介

@tenntennさん

スライドはこちら

www.slideshare.net

Cloud Functionsとは

  • サーバレス
  • イベント駆動

関数の種類

  • BackGroud Cloud PubsubやGCSのイベント駆動ができる。 処理が終わったらcallbackを呼べる。

依存関係

package.jsonに書いとけば Cloud上で自動で実行される ログはconsole.logデ杯とけばStackDriverLoggingへ キャッチされないエラーはStackDriver Error Loggingへ

実行環境

  • diskは/tmpに保存される
  • Googleの各サービスは認証がデフォルトで通る

Infra: kubernetes and GKE, Network

kuma (@kumakumakkk) | Twitterさん

どの環境を選ぶべきか

  • GCE フレキシブルなスペックの設定 オンプレをそのままクラウドに持っていきたい ライセンスの関係

  • GKE フルマネージドなkubernetes クラスタのオートスケーリング 論理的なインフラ志向 インフラをマネジメントするのではなく、アプリケーションをマネジメントする

使いたい場面 アプリケーションをいろいろな環境で動かしたい。 DevOpsのコミュニケーションが可能。 CI/CDを積極的に行いたい。 設計には制約がある。

  • App Engine App Engineで動くようにアプリケーションを作成すれば、オーペレーションをほぼ全て肩代わりしてくれる。 App Engine Flexible : コンテナをフルマネージド。 1000億リクエスト/日 使いたい場面・制約 ステートレスなアプリケーションの運用。

制約が多い。 AppEngine Standard verが限られる (Python,Java.PHP,GO) 設計・実装で制約がある。

AppEngine FX コンテナを使わなければいけない。2インスタンス立つので高い。

  • Cloud Function サーバレスでイベントドリブン。 クラウドサービストリガ

GCPのサービスをイベント鳥がにする場合には使えるけど制約が多い。

環境を決める要素

  • チーム、組織の性質
    • インフラエンジニアはいないけどバリバリ開発できるからAppEngine
    • 今後コンテナ化を進めていく
  • 技術的な必須項目 - 抽象化したいレイヤ

Kubernetes

BigData

なかむらさとる (@satoluxx) | Twitterさん

新たな発表

  • Data Transfer Service GA経由でしかみれなかったものをBQにエクスポートできる

  • 商用データセット だれでも使える公開データはいままで提供してたけど、 金融データ等をBQに直接データ提供会社が準備してくれる

  • Federated Query BigTableも直接BQから見れるようになった。 DataStoreのバックアップもできるようになった

  • Dataprep データの前準備ツール

  • Dataflow(python)

  • Datalab(GA)

@satoluxxが思ったこと

  • データの民主化のさらなる進化
    • データを入れ込むところから使いたい人が入れ込む  - outputはDataStudioなり

dataprepのデモ

裏側でdataflowが動いてくれる。 プログラム的要素が一切入らない

Mapas関連セッションの報告とMaps APIの最新動向について

丸山智康

GeolocationAPI

IOTデバイスのシグナルを3点以上取得して緯度経度を返す。

Google Maps APIのパッケージ

16種類ぐらいある。 Maps Android APIとかのスマートフォン以外にHTTP web service用のAPIなどもある。

MapsAPIの最新動向

  • 地図のスタイリングがモバイル側にも拡大。 AndoroidとIOS向けにJsと同じ設定ファイルが使えるようになった
    • 全く同じjsonで。
  • ルートの最適化と将来予測機能
    • いわゆる巡回セールスマン問題をごろごり解くのをAPIで提供してる
  • Directions APIにHeadingパラメータが新規追加
    • いわゆる進む向きを考慮したルート設定が可能になった
    • Taxyの配車など
  • Directions APIの経由地点が98地点に
    • 5000km以内で98地点の経由地点を含めて計算が実行できるようになった。
  • Google Maps Beta プログラム

プラン

  • 移動体管理アプリ
  • 1日25000回以上地図がロードされる - 有料会員向け
  • 社内向け などなどプレミアムプランが必要。

Webアプリとかだとプレミアムプランが必要になる

Gsuite

吉村光平さん

G suite

  • CloudにWindows File Serverを持ってくることがほぼほぼできるようになった。

google Drive

  • Team Drive (GA) MyDriveのファイルに権限を与えていたが、チームドライブは管理者が権限に応じてアクセスできるようになる
  • 移動や配置換えによるファイル紛失がなくなる
  • Drive File Stream(EAP) ネットワークドライブとしてマウントできる。
  • Valut for Drive (GA)
  • Quick Access (GA) その人が開くであろうファイルを一番上に出す。

google hangout

ConsumerとEnterpriseで機能が若干違う。 - Hangouts Meet (GA) 録画可能なビデオ会議 - Hangouts Chat (EAP) Slackのようなもの。 apps scriptとwebhookをサポート予定

Jamboard (GA date)

googleのデジタルホワイトボード。 6月のNext Tokyoで実物が展示されるかも

Google Cloud Search

  • プッシュ型で必要な情報を提供する

App Maker (EAP)

Gsuiteと連動した簡単アプリ開発 裏側はAppEngine / DBはCloudSQLもつながる

CloudSpanner

teppei Yagihashiさん

googleにおける要件

  • 水平方向にスケール
  • グローバルでの一貫性を持つACID
  • Downtimeなし

CloudSpannerとは

  • フルマネージドグローバルスケールのDBサービス
  • 現状はSelectのみ。他はプログラム必要がある。
  • リージョン内自動同期レプリケーション

オープンスタンダード

  • Standard SQL
  • メジャーな言語のClient

ワークロードの種類

プライマリーキーの設計

  • シーケンシャルなキーは避ける (time stampなど)
  • 実世界の識別子を使ったほうがいい

IRKitでエアコンのON/OFFをcurl経由でする

この記事について

睡眠をエンジニアリングするための前準備
IRKitを利用して curl経由でエアコンをON/OFFしてみる。

といっても

IRKit - Open Source WiFi Connected Infrared Remote Controller

通りにやればON/OFFは簡単にできるはず。

準備

IRkitの準備

AndroidIphoneのIRkitのアプリをDLして初期設定しておく。

IRkitのIPを調べる

Bonjourで調べることができる

$ dns-sd -B _irkit._tcp
Browsing for _irkit._tcp
DATE: ---Thu 12 Jan 2017---
21:58:58.624  ...STARTING...
Timestamp     A/R    Flags  if Domain               Service Type         Instance Name
21:58:59.498  Add        2   4 local.               _irkit._tcp.         iRKit66C9
$ dns-sd -G v4 iRKit66C9.local
DATE: ---Thu 12 Jan 2017---
22:00:39.768  ...STARTING...
Timestamp     A/R Flags if Hostname                               Address                                      TTL
22:00:40.062  Add     2  4 irkit66c9.local.                       192.168.0.10                                 10

ここでiRkit66C9は 一つ前のコマンドで取得したInstance Nameを指定する。

IRkitのIP Addが192.168.0.10ということがわかる

pingでも打って確認してみる

$ping 192.168.0.10
PING 192.168.0.10 (192.168.0.10): 56 data bytes
Request timeout for icmp_seq 0
64 bytes from 192.168.0.10: icmp_seq=1 ttl=255 time=51.590 ms
64 bytes from 192.168.0.10: icmp_seq=2 ttl=255 time=4.337 ms
64 bytes from 192.168.0.10: icmp_seq=3 ttl=255 time=617.344 ms
64 bytes from 192.168.0.10: icmp_seq=4 ttl=255 time=7.138 ms

赤外線を取得する

GET /messageで取得できる

$curl -i "http://192.168.0.10/messages" -H "X-Requested-With: curl"

APIのENDPOINTは上で取得したIRKitのIP Add

最後にIRKitで受信した信号を取得できる。

$curl -i "http://192.168.0.10/messages" -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/3.0.0.0.g85190b1
Content-Type: text/plain

{"format":"raw","freq":38,"data":[18031,8755,1150,1150,1150,3228,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,1150,1150,65535,0,16832,16832,4400,1150,65535,0,65535,0,62212,18031,4400,1150]}
{"format":"raw","freq":38,"data": ~

が赤外線信号になる。 エアコンのON/OFFの信号をメモっておこう。

赤外線を送信する

POST /messagesで送信できる

curl -i "http://192.168.0.10/messages" -H "X-Requested-With: curl" -d '{"format":"raw","freq":38,"data":[18031,8755,1150,1150,1150,3228,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,1150,1150,65535,0,16832,16832,4400,1150,65535,0,65535,0,62212,18031,4400,1150]}'
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/3.0.0.0.g85190b1
Content-Type: text/plain

注意するのは -dで赤外線情報を送るときに''で囲むこと 忘れがち。

これで赤外線信号を送ってON/OFFできる。

ローカルにサーバを立てて送るのであればこれで済むが、外部ネットワークから送りたいと思う。

そのためにIRKit Internet HTTP APIが用意されている。

IRkit Internet HTTP API

IRKit Internet HTTP APIのエンドポイントは

https://api.getirkit.com

client tokenの取得

POST /keysでリクエストを送ることでclienttokenが取得できる。 clienttokenは漏れないようにしよう

 curl -i "http://192.168.0.10/keys" -d '' -H "X-Requested-With: curl"
HTTP/1.0 200 OK
Access-Control-Allow-Origin: *
Server: IRKit/3.0.0.0.g85190b1
Content-Type: text/plain

{"clienttoken":""}

deviceidの取得

IRkit Internet HTTP APIに対して POST /1/keys でリクエストを送ることでdeviceidが取得できる。 その際に上で取得した client tokenが必要

curl -i -d "clienttoken=" "https://api.getirkit.com/1/keys"
HTTP/1.1 200 OK
Server: openresty
Date: Thu, 12 Jan 2017 13:15:18 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 94
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
X-Content-Type-Options: nosniff

{"deviceid":"","clientkey":""}

IRkit Internet HTTP APIではdeviceidとclientkeyを認証キーとして使用する。

IRKit Internet HTTP APIを用いた赤外線情報の送信

POST /1/messagesに対してclientkeyとdeviceidと赤外線情報を与えてPOSTすることで、
Internet HTTP API経由で赤外線情報を送ることができる。(つまりエアコンのON/OFFができる)

$curl -i "https://api.getirkit.com/1/messages"  \    
-d 'clientkey='  \   
-d 'deviceid='   \
-d 'message={"format":"raw","freq":38,"data":[18031,8755,1150,1150,1150,3228,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,1150,1150,3228,1150,3228,1150,1150,1150,1150,1150,3228,1150,3228,1150,1150,1150,3228,1150,1150,1150,65535,0,16832,16832,4400,1150,65535,0,65535,0,62212,18031,4400,1150]}'
HTTP/1.1 200 OK
Server: openresty
Date: Thu, 12 Jan 2017 13:21:50 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: X-Requested-With
X-Content-Type-Options: nosniff

これでIRKit Internet HTTP API経由で赤外線を送信できる。
クラウドサーバから送ったり、Google Apps Scriptから送ったりとできる。

ここまでで、IRKitの準備を行った。
次の記事ではMESHについて紹介する。

LINEに通知するwercker stepを作った

前書き

notify-bot.line.me

Line Notifyが出たので、Lineに通知するwercker stepを作った。 slackに通知するstepはあるけど、スマホのslackではなかなか気づきにくいのでLineに通知するのを作った。

github.com

使い方

githubに書いた通りstepに

after-step:
        ytakky2014/line-notifier:
            access_token: $PERSONAL_ACCESS_TOKEN

を記載する。

$PERSONAL_ACCESS_TOKEN

はLINE Notifyのページから取得してソースベタ書きはいやなのでwerckerの環境変数として登録しておこう。 f:id:ytacky:20161214220042p:plain

テスト中の画像だがこんな感じで通知される。

技術基盤系の勉強会に行ってきたので本当にメモというか思っていること

この勉強会に参加してきた

 

speee.connpass.com

各発表の感想というよりは勉強会に参加して思ったことを羅列しておく

 

- ここでの技術基盤は会員基盤とかというよりもインフラ面も含めて開発基盤全般を指す

-  技術基盤は各プロジェクトを横断する技術課題を解決していくべき

- その中には各プロジェクト固有の問題も含んでいる

- 後々差別化できる技術開発も必要

- 一見不可能に見える課題でも分割して着実に成果を出していくことが大事

- 最終的には各プロジェクトを横断した基盤と各プロジェクト内で技術的課題を解決していく

- 今目の前のタスクが優先的になってるけどそうではなくプロジェクトを横断して技術課題をどのように解決しているかを考えていくべき

- そのためにはどんな技術でもインプットとアウトプットが必要

- 技術書の購入やプライベートな開発時のサーバ代を一部負担するなど会社の福利厚生もあるといいかも;