株式会社LIFULLのブログ - TECH PLAY

TECH PLAY

株式会社LIFULL

株式会社LIFULL の技術ブログ

全668件

こんにちは!Ltech運営チームの井坪(いつぼ)です。 12/11(火)に弊社にて開催させていただきました「Ltech#3 【podcast × IT】LT Night!」についてレポートいたします。 Ltechとは Ltech(エルテック)とは、LIFULLがお送りする、技術欲をFULLにするイベントです。 特定の技術に偏らず、様々な技術の話を展開していく予定です。 Ltech#3 【podcast × IT】LT Night! Ltech#3はLT形式で発表していただきました。 そのときの資料をご紹介させていただきます。 docs.google.com Podcastを聴く場所は人それぞれだと思いますが、泳ぎながら聴いたりサウナで聴くのは独特ですね! speakerdeck.com 普段触れない領域の話を聴くことで知識を得るきっかけになり勉強になっているそうです。参考になりました! speakerdeck.com 聴いているPodcastを分析するなんてデータサイエンティストならで面白い発表でした! speakerdeck.com 業務等でも他職種について理解するのは大事なので、お互いの知らないことを理解できるのはとても良いですね! www.slideshare.net 社内の方と社内向けPodcastは取り組んでいるプロジェクトの共有や他部署との交流、宣伝などメリットは多いそうです! qiita.com 限られた時間内や定期的に配信するとなると難しそうですね。 社内向けPodcastをやってみようと考えている方は参考にしてみて下さい! 懇親会の様子 今回もLtech名物の「からあげ」をご用意いたしました。 からあげを食べならPodcastネタを中心に技術系の情報交換ができ盛り上がっていました! ご参加いただきました皆様、ありがとうございました。 最後に 12/20(木)に「Ltech#4 Dotfiles Casual Talks」を開催いたします。 皆様のご参加お待ちしております。参加方法は以下のconnpassからお申し込み下さい。 lifull.connpass.com 今後もLtechを積極的に開催していきますので、 ぜひ気になった方はconnpassでLIFULLのメンバー登録をよろしくお願いします! lifull.connpass.com
こんにちは、技術開発部の相原です。 この記事は LIFULLアドベントカレンダー の16日目です。 LIFULL では アプリケーション実行基盤を刷新すべく、Istio がバージョン 0.2.0 の頃から検証を開始し、現在 1.0.4 を利用しています。 AWS 上で kops を利用して Kubernetes を構築しその上に Istio を展開するという構成です。 EKS は利用していません。 ここに至るまでそれなりにハマりどころ、考慮すべき点に遭遇したので今回はそのことについて書きたいと思います。 以下の文章は kops 1.10.0 Kubernetes 1.10.11 Istio 1.0.4 を前提としていることをご了承ください。 はじめに 本番導入までの障壁 istio-proxy のオーバーヘッド Resource Quota を有効化した時に Istio の Sidecar が Inject できない Istio コンポーネントの HPA がうまく動かない Istio コンポーネントの可用性を上げる Kubernetes クラスタを Production Ready に近づける CNI plugin を変更する kops でデプロイしたインスタンスで ext4 のハードリンクが枯れる externalTraffic: Local の罠 fluentd-kubernetes-daemonset で文字コードでハマる おわりに はじめに LIFULL HOME'S サービス開始から20年が経ち、コードベースも次第に巨大になってきました。 そしてコードベースが巨大になるにつれて、デプロイ速度の鈍化やメンテナンス性の低下が目立つようになり、開発速度が低下していきました。 そうした変化を受けて LIFULL では、数年前のオンプレミスからの AWS 移行を契機にマイクロサービス化に踏み切ります。 サービスを適切な単位で切り分けてデプロイを独立化し、開発チームに権限を移譲することで分業化に成功しました。 しかし、年月が経ち新たな課題が見え始めました。 それはマイクロサービス化による車輪の再発明と分散システムとしての難しさです。 それぞれのチームがロギング・監視基盤やデプロイフローを個別に構築したり、各アプリケーションごとに Retrying や Timeout を実装することにより、従来の体制と比較して重複する機能が多くなってしまいました。 加えて、下流のサービスに巻き込まれる形での障害も目立つようになり、分散したアプリケーションをうまく運用するという難しさにも直面することになったのです。 そこで我々がとった選択肢が Kubernetes の導入によるアプリケーション実行基盤の統一と、 Service Mesh である Istio 導入によるマイクロサービスに必要な機能の一貫した提供でした。 Istio は Retrying, Timeout や Rate Limitting に加え、CircuitBreaker のようなマイクロサービスに必要な機能を提供するソフトウェアです。 Kubernetes の導入によって開発者への権限の移譲はそのままにロギング・監視基盤やデプロイフローをアプリケーション間で流用した上で、その Istio を導入して開発コストの削減と分散システムとしての信頼性の向上を狙いました。 トラフィックの質が違う複数のアプリケーションを同じインスタンスに同居させることでコストの最適化にも繋がりますし、アプリケーション間のネットワークの距離も縮まるためパフォーマンスへのインパクトも期待できるはずです。( KEP: Topology-aware service routing として可能な限り距離の近い Pod にルーティングする仕様が提案されています) github.com 加えて、ベンダーロックインからの解放も期待できるということで熟考の上決断に踏み切りました。 本番導入までの障壁 ここからは実際に本番導入に至るまでの障壁について紹介します。 istio-proxy のオーバーヘッド Retrying, CircuitBreaker, Rate Limitting など様々な機能を実現する istio-proxy ですが当然そのパフォーマンスへのオーバーヘッドは 0 ではありません。 導入するアプリケーションの性質に応じて慎重に導入の是非を考慮すべきです。 istio-proxy によるオーバーヘッドについてはドキュメントにあるのでそちらをご参照ください。 istio.io ドキュメントにあるように istio-proxy では 1 リクエストにつき概ね 10ms 程度のオーバーヘッドが生じます。 手元の環境でのパフォーマンステスト結果としてもほとんど同様の結果が得られました。 10ms と言われるとアプリケーションの性質によっては微々たるもののように感じますが、仮に対象のアプリケーションが直列で他の API に対して複数回リクエストするとき、そのリクエスト数分だけこのオーバーヘッドが生じることになります。 istio-proxy はその性質上、OUTBOUND のトラフィックに対する処理の比重が大きいという特徴があります。 VirtualService によって実現される Retrying, Routing は OUTBOUND トラフィックに対して発生しますし、CircuitBreaker, Connection Pooling を司る DestinationPolicy に関してもそうです。 一方で INBOUND のトラフィックでの主な処理は Rate Limitting くらいなもので、これはつまりリクエスト元に対する Sidecar の Inject さえやめればパフォーマンスが大きく改善するということを意味します。 深刻なオーバーヘッドが生じた場合はこのような観点から Sidecar の取捨選択を行うべきです。 当然同様の機能をアプリケーション内に実装することに比べれば、多くのケースにおいて istio-proxy でやる方が高速ですし、機能の標準化の観点からも有意義ですが、Sidecar の有無に関してはアプリケーションの性質に応じて慎重に判断する必要があるでしょう。 Resource Quota を有効化した時に Istio の Sidecar が Inject できない Kubernetes には Resource Quotas という namespace ごとにデプロイ可能なリソース量を制限する機能があります。 これを namespace に対して有効化すると Container に対してリクエストするリソース量、上限まで利用できるリソース量を指定することが義務付けられるというものです。 ある namespace にリソースを際限なく消費されると困るので一般的にこれを使って制限をかけることになります。 通常、LimitRange で default, defaultRequests を指定することで各 Container にデフォルトのリソース量を設定することが可能なので特に気にしませんが、Istio の Sidecar の Inject はこの LimitRange の前に実行されてしまうため 1.0.4 現在ではこれに対して別途対応が必要です。 まず、Sidecar である istio-proxy です。 istio-proxy のリソースは values.yaml から指定できるので以下のようにパッチを当てます。 当然 CPU の利用量はリクエストに応じて増加するためここは随時調整します。 --- install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:47.590948200 +0900 +++ install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:33.263144300 +0900 @@ -28,10 +28,10 @@ global: resources: requests: cpu: 10m - # memory: 128Mi - # limits: - # cpu: 100m - # memory: 128Mi + memory: 128Mi + limits: + cpu: 1000m + memory: 128Mi # Controls number of Proxy worker threads. # If set to 0 (default), then start worker thread for each CPU thread/core. しかしこれだけではまだデプロイは成功しません。 実は Istio の Sidecar をデプロイしようとすると istio-init という iptables などの設定を行う initContainer が起動します。 Resouce Quota を設定した namespace では initContainer にもリソース指定が義務付けられるためこちらも対応する必要があります。 しかし istio-init 用の設定は values.yaml にないためこちらは少々ハックが必要です。 これは Istio 1.1.0 でリリース予定です github.com まず、Sidecar を Inject するためのコンポーネントである istio-sidecar-injector の設定ファイルに値を渡せるように sidecar-injector-configmap.yaml にパッチを当てましょう --- install/kubernetes/helm/istio/templates/sidecar-injector-configmap.yaml 2018-12-16 05:17:35.419691832 +0000 +++ install/kubernetes/helm/istio/templates/sidecar-injector-configmap.yaml 2018-12-16 05:19:11.799894444 +0000 @@ -43,6 +43,8 @@ data: - NET_ADMIN privileged: true restartPolicy: Always + resources: +{{ toYaml .Values.global.proxy_init.resources | indent 10 }} {{- if .Values.global.proxy.enableCoreDump }} - args: - -c これで sidecar-injector-configmap.yaml が values.yaml の内容を解釈できるようになりました。 あとは先ほどの istio-proxy と同じようにリソースを指定するのみです。 こちらは初期化処理をするためだけのコンテナなのでリソースを多く必要としません。 --- install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:47.590948200 +0900 +++ install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:45.304157200 +0900 @@ -99,6 +99,13 @@ global: proxy_init: # Base name for the proxy_init container, used to configure iptables. image: proxy_init + resources: + requests: + cpu: 10m + memory: 128Mi + limits: + cpu: 10m + memory: 128Mi # imagePullPolicy is applied to istio control plane components. # local tests require IfNotPresent, to avoid uploading to dockerhub. これで晴れて Sidecar をデプロイできるようになりました。 Istio コンポーネントの HPA がうまく動かない istio-ingressgateway, istio-policy などのコンポーネントはリクエスト量によってスケールする必要があるためあらかじめ HPA が用意されています。 しかし何も設定しないままデプロイしてしまうと、istio-pilot などの一部のコンポーネントには適切なリソースが確保されますが、その他のコンポーネントはデフォルトのリソース確保量が小さすぎるため常にスケールのトリガーが発火してしまい HPA が期待通りの動きをしません。 Istio コンポーネントにおけるデフォルトのリソース確保量を設定する項目があるのでそちらを調整して解決します。 --- install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:47.590948200 +0900 +++ install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:16.539089300 +0900 @@ -163,8 +163,8 @@ global: # block in the relevant section below and setting the desired resources values. defaultResources: requests: - cpu: 10m - # memory: 128Mi + cpu: 100m + memory: 128Mi # limits: # cpu: 100m # memory: 128Mi これで HPA が適切に動作するはずです。 Istio コンポーネントの可用性を上げる Istio コンポーネントの HPA はまだ十分ではありません。 デフォルトの設定ではそれぞれのコンポーネントが1台ずつデプロイされるのみで、最大でも5台にまでしかスケールしません。 これでは可用性に欠けるため適切な設定を施します。 数が多いためすべての設定はしませんが以下のようなパッチを当てて台数を調整しましょう。 --- install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:47.590948200 +0900 +++ install/kubernetes/helm/istio/values.yaml 2018-12-16 00:00:50.688467300 +0900 @@ -226,9 +226,9 @@ gateways: labels: app: istio-ingressgateway istio: ingressgateway - replicaCount: 1 - autoscaleMin: 1 - autoscaleMax: 5 + replicaCount: 3 + autoscaleMin: 3 + autoscaleMax: 10 resources: {} # limits: # cpu: 100m Kubernetes クラスタを Production Ready に近づける 単に kops で Kubernetes を AWS に構築しただけでは、そのまま運用を始めるには心許ないです。 Node, Pod のスケールアウトもできなければ、運用に必要なメトリクスも不足しているという状況です。 Kubernetes コミュニティにはそれらを補うための素晴らしいソフトウェアがあるのでそれを利用しましょう。 まずは Node のオートスケールの実現です。 これに関しては kops が addon を提供してくれているので素直にそれを利用しましょう。 github.com これを利用することで Pod のスケールアウト時にリソースが必要なタイミングで新たな Node が起動します。 次は Pod です。 以前から利用されていた heapster は 1.11 で deprecated となり、代替のソフトウェアとして kubernetes-incubator/metrics-server が開発されています。 github.com HPA はこれらのソフトウェアから取得できるメトリクスに依存しているため導入しましょう。 更に、監視という観点では Pod ごとのメトリクスが取得できているのみでは不足に感じることがあります。 本来必要となるメトリクスは Deployment などの Kubernetes リソースごとの抽象化されたメトリクスです。 Kubernetes は標準でそのような機能を持ち合わせていないため、そのためのソフトウェアである kubernetes/kube-state-metrics を導入してその要求を実現しましょう。 github.com Node の異常を Events の形式で通知してくれる kubernetes/node-problem-detector も監視の役に立ちます。 github.com Kubernetes の Events は CrashLoopBackOff や FailedScheduling などの監視に有意義な情報を取得できるものですが、ここで取得できるのはあくまで Kubernetes 内で起きていることのみです。 しかし、 kubernetes/node-problem-detector を利用することで Node 内におけるカーネルのデッドロックや OOMKiller の発生をその Events に統合して通知してくれます。 これにより運用に必要な情報は揃ったはずです。 最後は認可の部分です。 Kubernetes はデフォルトで認証認可の仕組みがありますが、AWS を利用している場合 IAM を認可と紐付けたいと考えるでしょう。 その場合は kubernetes-sigs/aws-iam-authenticator (旧 heptio/authenticator) が役に立ちます。 github.com これを導入することで IAM Role ごとに権限を管理することができるので、開発チームへの権限委譲がスムーズになるでしょう。 CNI plugin を変更する kops で デプロイした時にデフォルトで利用される kubenet という方式ではルーティングに AWS のルートテーブルを用いる関係上、クラスタ内のノード数が 50 に制限されてしまいます。 これを解決するために様々な CNI plugin がありますが、AWS の場合は VPC のセカンダリ IP を用いる amazon-vpc-routed-eni が素直な選択肢に思えます。 ですが私達は移植性を考慮して、手に馴染んだソフトウェアでもある、クラスタ内に仮想の L3 ネットワークを構築する Project Calico を採用しました。 www.projectcalico.org 影響範囲が大きく安易な選択をできない部分ですが、少なくともデフォルトの状態では今後のスケールに対応できないため、慎重に選択する必要があります。 kops でデプロイしたインスタンスで ext4 のハードリンクが枯れる kops は AWS に Production Ready な Kubernetes クラスタをデプロイするための素晴らしいツールです。 しかし、現時点ではそのまま運用するためには多少の問題点があるのでそちらについて説明しましょう。 kops ではドキュメントにあるように Debian を Tier 1 サポートとしています。 github.com ここで注意すべきなのはこの Debian にインストールされている Docker Daemon のバージョンです。 この Debian にインストールされているのはバージョン 17.03.2 の Docker Daemon で、残念なことにこのバージョンの Docker Daemon のストレージドライバは overlay です。 overlayfs はレイヤー内のオブジェクトをハードリンクとして親のレイヤーと共有することで知られています。 その性質のため overlayfs では非常に多くのハードリンクが使用されるという特徴があります。 しかし、ext4 におけるハードリンクの上限は 65000 です。 overlayfs を利用するインスタンスを長期に渡って運用していると必ずこの上限に引っかかる時が来るでしょう。 これを解決する最も単純な解決策は kops edit cluster にて以下のサービスをクラスタ内で有効化することです。 このサービスを有効化することで Container から参照されていないイメージが定期的に削除されます。 - name: prune-images.service roles: - Master - Node manifest: | [Unit] Description=prune images [Service] Type=oneshot ExecStart=/usr/bin/docker image prune -a -f - name: prune-images.timer roles: - Master - Node manifest: | [Unit] Description=prune images [Timer] OnCalendar=*-*-* 23:59 Persistent=true [Install] WantedBy=timers.target そして最もよい解決方法は overlay2 にストレージドライバを切り替えることです。 幸い kops は overlay2 を利用する Ubuntu のイメージもサポートしているためそちらに切り替えることでこの症状を大幅に改善することができます。 しかし Ubuntu は kops コミュニティから Tier 1 サポートを受けておらず、安定性とはトレードオフになります。 また、Debian では NVMe のインスタンスがサポートされていないという問題点もあります。(以前は Validation エラーが出なかったためハマりどころだった) c.f. github.com externalTraffic: Local の罠 Kubernetes で Service を Type: NodePort でデプロイする時、デフォルトで設定される externalTraffic: Cluster では kube-proxy がそれぞれの Pod に平等にトラフィックを振り分ける関係上、Source IP がその kube-proxy が稼働しているインスタンスの IP になってしまうという問題があります。 これを解決するための手段として externalTraffic: Local を設定するというものがありますが、現在 AWS でこれを実現するためには Type: LoadBalancer な Service に service.beta.kubernetes.io/aws-load-balancer-type: "nlb" を設定してデフォルトで利用される Classic Load Balancer の代わりに Network Load Balancer を利用する必要があります。 本来であればこれで externalTraffic: Local による Source IP の保持が可能になりますが、Network Load Balancer のサポートはまだ beta のため致命的なバグが存在します。 それは VPC の DHCP Options Set の domain-name に依存しているというものです。 この問題に関しては以下の Issue で触れられています。 github.com domain-name が設定されていない場合、kube-proxy が localEndpoints を見つけることができずロードバランシングされなくなります。 この問題は Kubernetes 1.13 で解消する見込みです。 進捗は以下からトラッキングできます。 github.com fluentd-kubernetes-daemonset で文字コードでハマる AWS で Kubernetes を導入する場合、 fluent/fluentd-kubernetes-daemonset を用いて CloudWatch Logs にログを流すのが恐らく一番安上がりで簡単です。 github.com しかし、古き良き日本企業には一つ問題があります。そう、文字コード問題です。 fluent-plugins-nursery/fluent-plugin-cloudwatch-logs では CloudWatch Logs にログを流す際にログを JSON にエンコードしようとします。 しかしこの時、ASCII-8BIT な文字列が流れてきてしまうと UndefinedConversionError として JSON エンコードに失敗してしまいます。 こうなるとログの転送は停止しやがてバッファが溢れてしまうので手を打つ必要があります。 これを解決するには repeatedly/fluent-plugin-record-modifier を使うのがいいでしょう。 github.com Container の command や lifecycle によるハックでプラグインを追加することも可能ですが、新たにイメージをビルドする方が素直だと思います。 プラグインを追加したら以下の filter を fluent/fluentd-kubernetes-daemonset の ConfigMap に追加すれば解消するはずです。 <filter **> type record_modifier char_encoding utf-8 </filter> おわりに まだ枯れているとは言えない領域でそれなりにハマりどころはありましたが、適宜コミュニティへのコントリビューションをしつつ今のところ致命的な問題に遭遇せず運用できています。 Istio を導入することで、今まで車輪の再発明をしていた Retrying, Timeout や Rate Limitting を実行基盤側からアプリケーションに提供することができるようになり、アプリケーションの開発速度向上に寄与することができました。 加えて、CircuitBreaker による障害影響の局所化や、Fault Injection をはじめとした Chaos Engineering に着手する準備も整い、さらなるアプリケーション実行基盤の改善が期待できそうです。 今回 Kubernetes, Istio の導入と共にロギング・監視基盤やデプロイフローの刷新などにも着手していて、LIFULL の技術開発部では分散したアプリケーションをいかにうまく運用するかという点に注力しています。 もしこの辺りに興味のある方がいればまずはカジュアル面談からいかがでしょうか。 https://hrmos.co/pages/lifull/jobs/011 hrmos.co デリバリープラットフォームとして利用している Spinnaker の導入に際して、AWS で Spinnaker の Kubernetes V2 Provider を利用するのにも多少のハックが必要でしたがそれはまたの機会に。
はろーはろー!チバです。 LIFULL HOME'S 賃貸事業部のWebディレクター兼プランナーです。 普段はKPI可視化やサイト改善施策を手掛けるといった業務をしているので、「 プロダクトマネージャーに求められること」や「ユーザーと両想いになるサービスを作るには」を考え抜くことが必要です。 もちろん社内での知見共有も活発におこなわれていますが、今回はメンティのまっつんと2人で会社を飛び出して業界の先輩方の 「愛されるプロダクト」の事例 を聴くために参加してきました! 「 プロダクトマネージャー・カンファレンス 2018 - 愛されるプロダクトを創ろう」の 参加レポート [ day1 ] です! 2018.pmconf.jp ※写真撮影していなかったため文字ばかりです ※公開されている関連資料、記事のリンクを貼っているので詳細はそちらを参照ください セッション内容ごとのまとめ [06-01] Welcome Talk 関 満徳(プロダクトマネージャー・カンファレンス 実行委員長) fullvirtue (@fullvirtue) | Twitter もう一つの基調講演のような感じでした。 「自分たちが作り上げたプロダクトが愛されるためにどういうことをしてきたか、どういうことをしていきたいかについて話してください」 このときの関さんの言葉を聞けたので、今日の講演はどういった目線で聴けばいいんだろうを意識できたように思えます。 [06-02] 基調講演: プロダクトマネージャーとは 丹野 瑞紀(プロダクトマネージャー・カンファレンス 実行委員) twitter.com 基調講演であることから、「(PM1年生向け)プロダクトマネージャーの役割」を主軸としたお話。 プロダクトマネージャーの役割の基本のキ 事業目標を達成するためのもっとも効果的な打ち手を考えるのがプロダクトマネージャーだ と言い切られたときに、プロダクトマネージャーは事業会社の組織における課長や部長のような立場の方がなるのかな?と思いました。 事業目標ができたら、まず作る機能を決めるのがプロダクトマネージャーの役割。 具体的には、「売上前年比50%増」といった事業目標(KGI)に対して適切な重要成功要因(CSF)を設定し、機能提案(PRD)をすること。 ただし、機能提案(PRD)とプロダクトの間には大きな溝がある。 プロダクトの機能と事業目標の間には”大きな溝"がある。その溝をエンジニア・デザイナーと協働しながら埋めていくのがプロダクトマネージャー。 ここまで聞いたところで、冒頭で理解した「課長や部長のような立場の方がなる」の理解が誤っていたことに気づきました。 今回のプロダクトマネージャーはRollのひとつとして語られているんですね。 LIFULLでいうところの、サービス企画職がそういった役割になることが多いです。 「行動≠購入」AIDMAの意味が変わった 「AIDMA」モデルの提唱が始まったのは、1920年代。 そのときと比べて、コンシューマーの行動原理が変わっている。 つまり、”A"ctionは ❌行動≠購入 ⭕行動=利用開始 の方が適しているのではないか、ということ。 「AARRR」モデルの登場 では、利用開始→購入はどういったモデルなんですか?というところで、「AARRR」モデルの登場です。 収益化までつなぐには愛が必要。 「継続利用」が「新規ユーザー獲得」への新たな動線を紡いでくれる。 「継続利用」する人は「紹介」をする。「紹介」してもらうには、「顧客に愛される」ことが必須。 「顧客に愛される」の指標と成り得るのは、「友達に勧める可能性はどれくらいですか?」 。 これまでは推奨度をNPSなどで測っていたが、プロダクトによってはLTRが向いている。 medium.com 関連資料、記事 pmconf2018 keynote speech - Speaker Deck #pmconfjp 2018 まとめ Part.1 「Welcome Talk」〜「基調講演: 愛されるプロダクトを創るべき「3つの理由」」 - Togetter [06-03] FiNCのこれまでの苦悩と今、それとこれから 犬飼 敏貴(株式会社FiNC) twitter.com ヘルスケアの大きな課題「続けたいけど続けられない」がペインポイント 。 「三日坊主」の発生理由は、未来に獲得できるメリットを現時点において実感して信じることができないから。 「ヘルスケアリテラシー」が高い人ほど行動ニーズが高いが、 利用者を増やすには、「ヘルスケアリテラシー」が低く、弱いユーザーにこそヘルスケアサービスが必要。 つまり、 行動ニーズが弱い人に愛してもらえないと長期的に愛してもらえるプロダクトにはできない ! 「リテラシーが低い人ほど行動ニーズは低い」 こういう構造は他の領域でも言える な〜と思いながら聴いてました。 継続10のファクター 「継続10のファクター」はいわゆる「お約束」となり得るもののこと。 「継続10のファクター」が指標となり、それをユーザーの利用状況にあてはめて○△✕-の四段階で評価した ことで、プロダクトの価値理解や整理が共通認識化できた。 ニーズ育成のための0ベース思考 0ベースを怖がらず、ユーザーバリューの本質を提供する。 プロダクトから本当にユーザーが幸せになるための価値を伝え、ユーザーの新しい行動ニーズとなるように育成していく。 もっとも障害となるのが「一瞬で理解できないUI」。文字の説明を使わずに、情報の優先度やデザイン構成で価値を伝えることにチャレンジしている。 高効率PDCA 高速ではなく高効率 → 精度の高い仮説立案 をしている。 明確な目的・現状把握・変数理解・複数手段が簡潔に正確に伝わるように、会議フォーマットが定義されており 意思決定をスマートに されているとのこと。 精度の高い仮説とは、こうした立案者の考慮+レビュー体制を整えている状態で立案できる ってことなんですね。 やみくもにPDCAを回すと方向を誤ったまま進んでしまうことに気をつけましょう、といったお話でした。 関連資料、記事 未来を作るプロダクトづくりへの挑戦 - Speaker Deck #pmconfjp 2018 まとめ Part.2 「未来を変えるプロダクト作りへの挑戦 ~FiNCの今までとこれから~」 - Togetter [06-04] 世界で愛されるプロダクトを作ろう 熊谷 亘太郎(楽天株式会社) 海外から日本への旅行者が増えた結果、Booking.comが楽天トラベルの半分の売り上げ規模になってきてる。(まじかと思ってBooking.com使ってみたけどなるほど使い勝手いいしゲストハウスの掲載も多いですね) 世界で通用するプロダクトは、最初からGeneralizeを視野に入れている 。 日本に閉じず、世界で求められる要件をはっきり理解することが、世界に出ていくプロダクトをつくるうえで重要。だから刷新をきめた。 PMとしてのコミュニケーションで大事なこと posivive *問題は必ず解決できるという態度 positiveな態度を取っていると、人がついてくる open communication issueを深く掘り下げて最適な解決策を提供 バグトリアージで、プロダクトマネージャーだけが言えること cut feature 「機能を削ろう」 won't fix 「これはやらない(改修しない)」 発生したbugはすべて直すべきかというとそうじゃないっていうのが人によって認識ずれがち 。 重要度と緊急度から判断して、そもそも機能自体を失くそうという判断もあるし、影響小さくエッジケースなのでいったん直さずに置いておく判断もある。 それの判断をPMができる。限られた時間をいかにに重要な部分に使えるかが鍵! 関連資料、記事 #pmconfjp 2018 まとめ Part.3 「世界で愛されるプロダクトを作ろう」 - Togetter [06-05] [対談] 食文化を支えるプロダクトマネージャーの仕事術 荒井 茂太(株式会社ノンピ 取締役)/及川 卓也(プロダクトマネージャー・カンファレンス 実行委員) 多様性溢れる組織になったことなどのお話全般為になりましたが、特にプロダクトにも通ずると思ったメモを共有します。 グーグル社食(無料のカフェテリア)での食べ残し問題を解決する為にやったこと サラダバーをセルフサービスで盛れるようにしている。 「美味しかったから、今回はもっと食べよう」といって過剰な量をとってしまいがち 。 それにより、食べ残しが問題となっていた。 そこで2つの試みを実施した。 社員が下げ膳する際に、スタッフが「お口に合いませんでしたか?」「体調悪いですか?」と声をかけた 食べ残しの処分も自分たちでさせた。捨てさせることで捨てられている量を可視化させて自分が食べる限界量を学習してもらった 以上2つの試みで食べ残しが減少した件、Webサービスへも活用できる事例となりそうと感じました。 関連資料、記事 食文化を支える プロダクトマネージャーの仕事術 #pmconfjp #pmconfjp 2018 まとめ Part.4 「[対談]食文化を支えるプロダクトマネージャーの仕事術」 - Togetter [06-06] クチコミサイトからプラットフォームへの挑戦プロセス 吉松 徹郎(株式会社アイスタイル) 皆知ってる@cosmeのお話。 実は、 口コミの多い人気商品と、実売データ(POS)は連動性が薄い 。 メーカーにとっては、 * コンシューマー→消費者 * カスタマー→小売店 なので小売店の仕入れ量を変えることが必要。 メーカーは消費者データを持っていないが、@cosmeは膨大な量のユーザーデータを持っているから今後はそれを活用したプラットフォームの構築を強化していきたい。 関連資料、記事 20181106 istyle pm coference #pmconfjp 2018 まとめ Part.5 「クチコミサイトからプラットフォームへの挑戦プロセス」 - Togetter [06-07] プロダクトマネージャーにもコーチは必要だ 鈴木 雄介(グロース・アーキテクチャ&チームス株式会社) 成長するとコミュニケーションは増える。 顧客からの機能要望 技術的な課題とコスト/スケジュール 会社の方向性とプロダクトの方向性 運営を効率的に回すための要望 増えたぶん、もちろんコミュニケーションの偏りと認識齟齬が生まれる。 そこで、 スーパープロダクトマネージャーを求めるのではなく、組織としてプロダクトマネージメントに取り組むべき ことを必要と説く! 共有するから自律的に動けるのであり、そうすることによって組織としてプロダクトマネジメントに取り組むことができる。 例えば、 リードタイム、リリースサイクル、プロセスなどの【リズムの共有】 アイデア段階、検討中、実装可能などの【ステータスの共有】 売上、コスト、フィードバックなどの【KPIの共有】 以上を共有せずにプロダクトマネージャーとしての振る舞いは求められない。 これらのコーチングが必要であればご相談ください、とのこと。 関連資料、記事 プロダクトマネージャーにもコーチが必要だ - #pmconfjp 2018 #pmconfjp 2018 まとめ Part.6 「プロダクトマネージャーにもコーチは必要だ」 - Togetter [06-08] ユーザーと両想いになるサービスの作り方 金田 悠希(株式会社エウレカ) twitter.com リリース前、リリース後、拡大期の各フェーズで戦略が違う。 1. リリース前:先行プレイヤーとどう価値を分けるべきか 先行事例の観察と、うまく行ってるタイプの満たしている価値の言語化。 これは満たさなきゃダメだよねって軸探し(当たり前クオリティの追求かな?)。 2. リリース直後:価値をどのように拡げていくか 市場でNo.1でないと意味がない、ユーザーは覚えていてくれない。 また、ネットで出会うということへの不安が強い日本。「安心」であることは常に重要な価値として守りながら成長を目指した。 しかしあるとき、 女子大生「Pairsって安心で利用できているのに、なんでああゆうクリエイティブ(局部を強調したような広告)を利用しているんですか?」 と言われてクリエイティブを守らなければダメだとあらためて意識。 3. 拡大期:市場を拡大しながら自分たちも成長する 現在やっていること * 幸せレポート:実際どう出会って結婚までいったのかを取り上げている * 実際のお客様に会いに行って利用してくれてありがとうを言いに行く * カスタマーサクセスに注力している * 競合の機能を追従するのでなく、ユーザーの変化と向き合う 関連資料、記事 ユーザーと両想いになるサービスの作り方 - Speaker Deck #pmconfjp 2018 まとめ Part.7 「ユーザーと両想いになるサービスの作り方」 - Togetter [06-09] インターネットテレビ局「AbemaTV」プロダクトの変遷 長瀬 慶重(株式会社サイバーエージェント) twitter.com プロダクトマネージャーとは マネージャー:組織成果を最大化させる プロダクトマネージャー:プロダクトの成果を最大化させる 「オンデマンド」ではなく「リニア」よりに作ったのは、テレビのように受け身で情報や娯楽を得られることが、「ネットからマスメディアを作る」に近いと感じたから。 流入に成功した施策 AbemaTVのコメントtwitterシェア機能は、Abemaでコメントするとその前後10秒くらいの動画がTwitterに投稿できる(Twitterカードの仕組みのことかな?)。 インフィードが当たり前になってきており、ユーザー的にもTwitter上で広告動画が再生されることは当たり前になっている。 そういった、 ユーザーを取り巻く「当たり前の事象」を逃さず に利用する。 話題を絶やさない工夫 事業を加速させる開発も優先しがちだが、 ある一定のタイミングで話題性を埋める・技術的チャレンジができるローンチ をかけている。 そうなると、その分野は エンジニアからのアイデアや発想が必要不可欠 。 リニア・オンデマンドを分けなかった理由 リニアとオンデマンドの共存(オンデマンドのナビゲーションをどこに配置するかに2年かかった)を決断した事象は、 「見逃し録画機能」がユーザーの当たり前 になっていたことから。 「テレビといえばビデオ録画だよね。入れないとね」といった 当たり前 は採用していく。 関連資料、記事 インターネットテレビ局「AbemaTV」プロダクトの変遷 #pmconfjp 2018 まとめ Part.8 「インターネットテレビ局「AbemaTV」プロダクトの変遷」 - Togetter 500億の先行投資をしている「AbemaTV」のGrowth戦略とは? | 株式会社AbemaTV [06-10] 事業ドメインを絞り込むことで磨かれるプロダクトマネジメントの手法 清水 智雄(ピクシブ株式会) 短期間で多数のサービスをリリースできた理由 事業ドメインを絞ると、社員全員が同じドメインにいることとなる。 そのため、 体制変更が柔軟・高速に行えるし技術の統一やドメイン知識が高いレベルで共有される 。 仕事をしていく中で自然と知見が蓄積されるし、場合によっては 技術の応用が効くのでより高速でのリリースが可能。 ユーザーの理解者 プロダクトマネージャーは特定領域(ドメイン)のプロフェッショナルになることが重要 。 誰よりも その領域について理解し、流れを把握し、考え、未来を描くことができ れば、誰よりも一歩先を歩み続けることができる。 例えば、ピクシブは「創作活動」にまつわるドメインにおいては世界中の誰よりも理解し、考え続けることができる。 理解者であることがユーザーに伝わると、ユーザーからも次第に愛されていくプロダクトとなる。 関連資料、記事 事業ドメインを絞り込むことで磨かれるプロダクトマネジメント - Speaker Deck #pmconfjp 2018 まとめ Part.9 「事業ドメインを絞り込むことで磨かれるプロダクトマネジメント」 - Togetter [06-11] 愛されるプロダクトマネージャーのプロダクトマネジメント~愛されるためにまずは成果を残す~ 金山 裕樹(株式会社ZOZOテクノロジーズ) twitter.com プロダクトマネージャーチームの結成のためにリクルーティングを開始。 採用専任チームはなく、1年以内に数字が必要であり、社内にロールモデルとなるPMがいない…といった不利状況があったため、自らがダイレクトリクルーティングすることとした。 リクルーティングのMUST条件 失敗を恐れず挑戦できる:U30 若手寄りであること 行動から学びを得ることができる:教育バックグラウンド(出身高校偏差値65以上) 学ぶ習慣や学び方を知っている・経験したことがあるであろうフィルタのひとつ チームから尊敬を勝ち取れる:ネット業界在籍 必ずしも有名人でなくともいいが、ネット業界における経歴を持っている人 オンボーディング施策「花を持たす」 優秀な人を採用しても「あとよろしく〜」はできない。 入社までではなく、活躍させられるところまでが採用 。 入社前にトップ、PM間で入社3ヶ月以内に達成する成果を明確にする トップがその成果にコミットし達成する 成果を社内に大きくアナウンスする 花をもたせて信頼を得ることができ、 花をもたせることでその人の振る舞いは変わる。優秀な人がさらに成果を出してくれる状態に できる。 関連資料、記事 愛されるプロダクトマネージャーの プロダクトマネジメント - Speaker Deck #pmconfjp 2018 まとめ Part.10 「愛されるプロダクトマネージャーのプロダクトマネジメント~愛されるためにまずは成果を残す~」 - Togetter [06-12] LINE開発の舞台裏とプロダクトマネージャー 入江 和孝(LINE株式会社) twitter.com プロダクトマネージャーは「愛され」なくなることも往々にしてあるので、「愛され」はじめることがとにかく重要という語り出し。 PMの仕事は成果でしか見えることが出来ない 意思決定や部門間調整が多く仕事をしていないように見えちゃう 上流の業務にいたり頻繁な意思決定の変更が多いので警戒されやすい LINEのプロダクトマネージャーに求められること 目に見える数値の変化だけでなく、 文化の違いや変化を理解し続ける努力 意見を尊重した上で結論を出す 決断力 &時には自分の意見を曲げる 柔軟性 熱量の高い市場の声に耐えながら、 本質と向き合い続けるタフさ 多くのユーザーフィードバック ほんの一部のユーザーが騒いだら炎上 ユーザー像やペルソナ像が絞れない ユーザーのITリテラシーに下限がない ユーザーリサーチ(ゲリラリサーチ)やってみた 日本人「LINEトーク画面にクリスマスで雪降らせるのは北半球だけでええやろ」 タイ人「うちにも降らせて!」 日本人「は?(現地へ行ってみる)」 タイの街並みは、クリスマスシーズンには雪モチーフのイルミネーションで溢れてる。 日本人「なるほど。 思い込みでユーザを取り巻く環境を決めつけていた のか」 関連資料、記事 LINE開発の舞台裏とプロダクトマネージャー #pmconfjp 2018 まとめ Part.11 「LINE開発の舞台裏とプロダクトマネージャー」 - Togetter LINE開発の舞台裏について話してきたこと|Kazutaka Irie|note [06-13] 失敗をデザインする 泉 雄介(ラクスル株式会社) 何を開発するかを決めていないと莫大な予算がかかってしまう。 よく誤解されがちなのが、「ソフトウェア開発は安い」と思われていること。むしろ莫大なお金がかかる! 六本木ヒルズの建設費は2,600億規模だが、みずほ銀行のシステムは4,000億規模 と言われている。 リリースしてから失敗に気づいても遅い。 だからリリースする前に失敗をたくさんする。失敗する前提でプロセスを組む。 例えば、 ラグビー選手は雨が降るとパスが狂うので、雨が降った想定でボールに石鹸を塗って練習する などしている。 同じ失敗に気づくのであれば、安く作ったもので失敗したほうが損も少ない。失敗に備えろ! プロトタイプを作って→ユーザーテストして→プロトタイプ作って→ユーザーテストして…の繰り返し。 その際、 ユーザーテストから仮説ではなくFactを探す、「実際何に困ったのか?」 を。それをユーザーインタビュー対象者そのものを意識して、「石川さんはこういった状況のときにこういった操作ができずに困り〜」などの文脈で話す。 仮説が正しいかどうかを検証し、学ぶことを仕事にする。 関連資料、記事 https://2018.pmconf.jp/assets/files/speakers-contents/pmconfjp2018_raksul.pdf #pmconfjp 2018 まとめ Part.12 「失敗をデザインする」 - Togetter [06-14] クロージング 関 満徳(プロダクトマネージャー・カンファレンス 実行委員長) twitter.com 【感想】参加してみて 昨年参加できずに悔しい思いをしたので、今年こそは!とカンファレンスサイトのオープンを待ち焦がれていました。 それぞれのスピーカーによってプロダクトマネージャーの定義が異なっていましたが、組織の規模やプロダクトのステージによって話は変わるかとも思うので、結果的によかったと思っています。 また、“プロダクト”マネージャーの話だったので、他のカンファレンスと比べても ユーザーへ価値を届けることに対する話題へ熱量が集まっていた ように感じられました。 テーマが「愛されるプロダクトを創ろう」なので、より熱さを感じたのかもしれません。 今回参加したことで、 顕在ユーザーに今以上に愛されるLIFULL HOME'Sにしたい 、 潜在ユーザーにLIFULL HOME'Sを選んでもらいたい!愛されたい! と思える熱量がより高まりました。 すぐにでも試してみたいといった事例も多く、本当に参加してよかったです。 さっそく社内でも共有していきたいと思います。 今後の参加レポ投稿予定 あと2つほど、プロダクトマネージャーConference2018で記事を公開する予定です。 day 2参加レポート(メンティのまっつんが後日公開してくれる予定) 総まとめ座談会(2人で全2日間のセッション内容について得た学びをフリートークする予定) 乞うご期待ください! チバ
こんにちは。 木村 修平@LIFULLジンジニア(エンジニア人事) (@kimkimniyans) | Twitter です。 昨今エンジニア経験者が開発部門以外のポジションで仕事することも増えてますね。 そんなエンジニアあるあるで、 ちょっとスクリプト書くだけで周りから魔法使いか神扱いされる っていうのがありまして。 例に漏れずそんなことがあって大変うれしいのですが、悦に浸るだけではもったいないので何したか吐き出しておきます。 GAS初学者の方にもお役に立てれば。     お題は、『インフルエンザ予防接種の希望日程を申し込むフォーム』です。 これまでは希望に応じて日程ごとに振り分けを手作業でやっていたそうで、すごい時間かかっていたようです。     画面イメージとざっくり仕様   回答送信時に、希望日程ごとの定員上限数と突き合わせして定員上限に達していればフォームから選択肢削除。 例)11/1(木)15:00-16:00、11/1(木)16:00-17:00、11/1(木)17:00-18:00、11/2(金)15:00-16:00、11/2(金)16:00-17:00、11/2(金)17:00-18:00 設問は日程の選択肢プルダウンとその他リクエストのテキストで両方非必須。 選択肢から削除された場合、削除された旨をchatwork(専用のグループチャット)に通知。 すべての選択肢が削除された場合、全日程満員である旨と次の設問にリクエストを記載してほしい旨の選択肢を追加。その選択肢の定員数上限はもちろんなし。 今回は送信タイミングでの回答数チェックはしていません。なので厳密には上限を超えることがあります。 FormApp使ってガシガシっと いくつかの.gsファイルに分割したのでそれごとにコメントで説明します。 片手間タスクだったのでレビューも受けてないし雑でごめんなさい。 公式リファレンスは こちら です。 main.gs グローバル変数である必要ないけどまとめて記載。global領域だとconstで定数宣言できない(?)みたいです。 var ROOM_MAXIM = 40; // 日程ごとの最大人数 var ARY_CHOICE_VAL = [ "11/1(木)15:00-16:00" , "11/1(木)16:00-17:00" , "11/1(木)17:00-18:00" , "11/2(金)15:00-16:00" , "11/2(金)16:00-17:00" , "11/2(金)17:00-18:00" ] ; // 選択肢VALUEを配列に確保 var CHOICE_LENGTH = ARY_CHOICE_VAL.length; // 選択肢の数 var TMP_NEW_CHOICE_VAL = "全日程満員です。次の設問で希望の日程を入力してください" ; // 通常選択肢が全て無くなった後に追加する選択肢VALUE var STR_TARGET_TITLE = "希望日程" ; // 処理の対象とする質問タイトル名 /** * フォーム送信時イベント(初期処理) */ function onSend(e) { reBuildItem(e.response.getItemResponses()); //functionの引数eからイベント発生時の回答時のレスポンス取得して受け渡し } onSendメソッドをプロジェクトのトリガー(フォーム送信時イベント)に設定しています。 編集タブ→「現在のプロジェクトのトリガー」で設定できます。 ui.gs 回答データとの突き合わせとUI項目の操作。前者は別メソッドにしたいっちゃしたいけどまぁいいです。回答データの取得もここでコールしてます。 /** * 選択肢の再構築 * * @param {array} 選択肢ごとの回答カウントデータ配列 */ function reBuildItem(rAnswer) { var form = FormApp.getActiveForm();  //アクティブなformオブジェクトを取得 var items = form.getItems(); // フォームのUI項目を取得 var allAnswer = getAnswer(); // 全回答の取得 // 今回の回答を取得(※プルダウンUIで未選択の場合は回答データに含まれない模様です※) var nowAnswerVal = rAnswer [ 0 ] .getResponse(); var nowAnswerTitle = rAnswer [ 0 ] .getItem().getTitle(); if (nowAnswerTitle == STR_TARGET_TITLE) { // 「希望日程」プルダウンで未選択の場合は何もしない(項目タイトルで判断) for ( var i = 0; i < items.length; i++) { // UI項目分ループ var item = items [ i ] ; var itemTitle = String (item.getTitle()); var itemType = String (item.getType()); // UI項目のタイプ if (itemType == "LIST" && itemTitle == STR_TARGET_TITLE) { // リストボックスかつ項目タイトルが対象の場合 var choiceArray = [] ; var arrayCount = 0 var flgChoiceNone = false ; // 回答突き合わせ後選択肢が残るか否かのフラグ for ( var j = 0; j < CHOICE_LENGTH; j++) { // リスト選択肢分ループ var choiceVal = ARY_CHOICE_VAL [ j ] ; var flgSet = false ; // 上限内か否かのフラグ if (flgChoiceNone == false ) { // 選択肢がまだ残っている場合 if (j == 0 && nowAnswerVal == TMP_NEW_CHOICE_VAL) { // 選択肢が全て無くなった後の追加選択肢のチェックはスルーする flgChoiceNone = true ; } else { if (allAnswer [ j ] < ROOM_MAXIM) { // 回答上限チェック flgSet = true ; } } } if (flgSet == true ) { // 回答上限に達してない選択肢は退避 choiceArray [ arrayCount ] = choiceVal; arrayCount++; } else { if (choiceVal == nowAnswerVal) { // 今回の回答だった場合 sendChatwork(nowAnswerVal); // 満枠になったことをchatwork通知する } } } if (arrayCount == 0) { // 選択肢が全てなくなった場合 choiceArray [ arrayCount ] = TMP_NEW_CHOICE_VAL; // 追加選択肢をセット } // リストボックス作り直し item.asListItem().setChoiceValues(choiceArray); } } } }   ちなみに、''Logger.log(hoge);''でログ出力できます。デバッグに必須です。 実行後、表示タブ→ログから確認できます。 answer.gs 回答データの全取得と選択肢ごとにカウントして返します。 /** * 回答データの取得 * 回答データが取得できない(例外の場合)エラースロー * * @return {array} 選択肢ごとの回答カウントデータ配列 */ function getAnswer() { var form = FormApp.getActiveForm(); var formResponses = form.getResponses(); // 全回答内容を取得 var aryAnswerCount = [] ; // 選択肢分配列定義 for ( var k = 0; k < CHOICE_LENGTH; k++) { // 配列をゼロで初期化(fillメソッド使えないので) aryAnswerCount [ k ] = 0; } var flgAnswer = false ; for ( var i = 0; i < formResponses.length; i++) { flgAnswer = true ; var formResponse = formResponses [ i ] ; // 回答ひとつ分を取得 var itemResponses = formResponse.getItemResponses(); // 質問項目を取得 for ( var j = 0; j < itemResponses.length; j++) {   // 回答内容をひとつずつチェック var itemResponse = itemResponses [ j ] ; var question = itemResponse.getItem().getTitle(); var answer = itemResponse.getResponse(); if (question == STR_TARGET_TITLE) { // 項目タイトルが対象の場合 var x = ARY_CHOICE_VAL.indexOf(answer); if (x != -1) { // 選択肢ごとに回答数カウント aryAnswerCount [ x ] ++; } } } } if (flgAnswer == false ) { // 例外:回答がまだなければエラー吐いて終了 throw new Error( "not Answer" ); } else { return aryAnswerCount; } } chatwork.gs バックオフィスも含めて弊社公式に採用しているchatworkのとあるグループチャットに満枠になったら通知するメソッドです。 chatwork通知の方法はググったらすぐ出てくるので詳細は割愛します。 chatwork通知例 /** * chatwork通知処理 * * @param {string} 回答した選択肢タイトル */ function sendChatwork(rChoiceVal) { const CW_TOKEN = "hogehoge" ; //チャットワークトークン const CW_ROOM = 1111111; // 通知先のチャットルームID var client = ChatWorkClient.factory( { token: CW_TOKEN } ); // チャットワークAPI var strBody = "[info][title]Googleフォームから通知[/title]インフルエンザ予防接種で以下の日程が満席になりました。 \n " + rChoiceVal + " \n " + "[編集用URLでも記載するといいと思います]" + "[/info]" ; client.sendMessage( { //チャットワークに送る room_id: CW_ROOM, body: strBody } ); }   結論 色々できそうでできなかったり もっとちゃんと考えればやれることとか違うやり方とかあるんでしょうけど、GASでのフォーム操作は結構なパワープレイな感じでオススメしません。 要件がシンプルな場合はいいかと思います。 とはいえ、特に今回のようなバックオフィスタスクの負荷軽減には役に立つと思うのでちょっとのjsスキルと利他の気持ちでパパっとやれるのはいいですね。 LIFULLでは当たり前のようにこういった周囲へのサポートがあります。 よかったら参考にしてください。
こんにちは!  木村 修平@LIFULLジンジニア(エンジニア人事) (@kimkimniyans) | Twitter です。 今年も残すところあと僅か。2018年やり残したことはないですか? 12月は皆さん仕事に遊びに忙しいと思いますが、LIFULLも精力的に活動しています! 皆さんにお知らせしたいことがたくさんあるので紹介しちゃいます。   Ltech #3 & #4 12/11(火)に Ltech#3 【podcast × IT】LT Night ! を開催いたします! lifull.connpass.com 昨今盛り上がっている技術系Podcastをネタにライトニングトークする、年末らしくワイワイ楽しい会にしたいと思います。 ちょっとしたおつまみやドリンクもご用意しております。 また、参加者全員投票で選出されたベストスピーカーにはちょっとした景品をご用意しております。 LT枠まだご応募可能ですのでご応募お待ちしております! そして、 12/20(木)には、Ltech#4 Dotfiles Casual Talks を開催予定です! lifull.connpass.com こちらもご参加登録お待ちしております! 奮ってご参加ください。 CTO 長沢 翼のキャリアインタビュー記事のご紹介 エンジニア@type 様にCTOの長沢 翼( Tsubasa Nagasawa (@nagasawatsubasa) | Twitter )のキャリアをテーマにしたインタビュー記事が公開されました。 type.jp 新卒入社からCTOに就任したキャリアの秘訣を熱く語っています! ぜひ御覧ください。 LIFULL job talk データサイエンティストや機械学習エンジニア向けに、 この秋新設しました『AI戦略室』の戦略やエンジニアリングについてお伝えするイベントを12/17(月)に開催します! lifull.connpass.com 過去から積極的に機械学習などの技術を積極的に利用・研究しておりましたが、新たに部署を構え更に注力していきます。 ご好評で既に満枠となっておりますが、今後、追加開催も検討しておりますのでご期待ください。 PHP Conference 2018 いよいよ開催が迫ってきましたPHP Conference 2018にスポンサー&ブース出展の予定です。 【告知】PHP Conference 2018にスポンサーします! - LIFULL Creators Blog 新ノベルティも出来上がってきましたのでぜひブースに遊びにきてください! ホームズくんのカワイイクッキーや新ステッカーをご用意していますよ。 Advent Calendar 2018 そして12月といえばAdvent Calendarですね! LIFULLもQiitaで公開していますのでぜひご覧になってください。 今年もLIFULL Advent Calendar 2018をよろしくお願いします - LIFULL Creators Blog     最後までご覧いただきありがとうございました。 2018年最後の一ヶ月、楽しんでいきましょー!   Information LIFULLでは、一緒に働くメンバーを募集しています! ご興味がある方ぜひご覧いただきご応募ください。 hrmos.co
こんにちは。クリエイターの日運営委員のおおばです。 今回は、社内のモノづくりイベント『創民祭』が開催されましたので、その様子を共有させていただきます。 2015年から始まった創民祭も早いもので、7回目の開催になりました。 創民祭とは 創民祭(そうみんさい)とは、LIFULLで半年に1回開催される社内展示会です。 お酒を飲んだり、ピザを食べながら、業務の成果や「クリエイターの日」、プライベートで創ったものをお披露目するイベントです。 前回の様子はこちら。 www.lifull.blog 今回のテーマ せっかく足を運んでもらうので、よりLIVE感を大切に!と企画を進めました。 そして、今回もたくさん魅力的なブースが展示されました。 今までのブース出展に加え、今回からの初企画!「ライブコーディング対決」や「にがおえやさん」などのイベントも開催し、有志による「コーヒーやさん」、「スムージーやさん」も出展してもらえました。   展示内容 今回、過去最多の13ブースです! 内容もWebに限らず色々なクリエイティブが出展されるようになってきています。 当日、出展されたいくつかのプロダクトを紹介していきます。 イラストレーターさんがで描いてくれる!『にがおえやさん』 創民祭に来場した人を、その場で似顔絵をかく、そのまんま「にがおえやさん」! 弊社デザイナー + エンジニア の計4名が協力して描いてくれました。 お客さんの特徴を捉え、わずか数分で仕上げていく、イラスト力が光ります。 若手 vs 若手のペアプロバトル!『ライブコーディング対決』 お題に沿ってペアで開発していく、そしてその様子が実況されていく、その名も…「ライブコーディング」イベント! 新卒3年目エンジニアの2人 vs 新卒2年目エンジニア + デザイナーの対決でした。 進捗を実況解説されるプレッシャーの中で、黙々と実装を進める面々。最後はベテランエンジニアが審査をします。 今回はVue.jsを使って、機能面にこだわった3年目チームの勝利!!2年目チームはリベンジマッチを決意しました。 廃棄野菜を再利用したスムージー『Clean smoothie』 写真はすごい緑で野菜の味がしそうですが…飲んでみると冷たくて美味しいです!野菜嫌いでもおいしくいただけました。 実はこのスムージー、弊社の事業提案制度で生まれた「Clean smoothie」というサービスです。 Instagramやってます。( http://picdeer.com/clean_smoothie_ ) オフィス向けに廃棄野菜や規格外野菜を買い取ってスムージーを作り、農家もオフィスワーカーも、みんな元気な社会を目指してるとのことです。 導入企業、仕入先農家両方を絶賛募集中ですので、気になる方はご連絡を! 弊社ではもうおなじみ『コーヒーやさん』 弊社では水曜15時にコーヒーやさんがきます。正確には、コーヒーが趣味の社員がリフレッシュルームでコーヒーを振る舞ってくれます! 今回は出張コーヒーやさんで、創民祭でも美味しいコーヒーを淹れてくれました。 今回は特別な豆を使ってくださったらしい…!どうやら豆ごとに最適な淹れ方があるらしく、贅沢な一時でした。 趣味で作成したandroidアプリ『割り勘オンライン』 趣味で作成されたという会計アプリ! 飲み会などで誰かが立て替えた後、自分の返すお金を計算してくれるアプリ。 カラオケ、二次会…とイベント別で勘定するのではなく、まとめて一人何円です!と計算してくれる機能。 忙しいときでも手早く計算できて、実用的ですよね。 『ジオラマ作品展示』 創民祭は過去、アプリやWebサービスが多かったのですが、、、初!ジオラマの展示になります! 実は過去、様々なコンテストでも入賞経験があるという実力者! 『単に景色を切り取るのではなく、作品の中にストーリーを感じられる。』そんな作品づくりを心がけているそうです。 「模型大好き!」( http://www.mokeidaisuki.com/ )というサイトでも、ジオラマの様子が公開されていますので、気になった方はそちらもチェックしてみてください!   ちょっと不思議で怖い、でも可愛いイラスト『Gothic Gallery』 プライベートでイラスト制作を行っている方の展示です! 「あなたの日常に毒とスパイスを」をコンセプトに、ちょっと不思議で怖い、でも可愛い…そんなイラストです。 コピックペンで描いたあと、PCで色塗りや仕上げをしているとのこと! 丁寧な仕上がりでとても可愛いイラストばかりでした! 『オンラインブレスト』 オンラインでブレストができる「オンラインブレスト」! 以前の創民祭でプロトタイプが出展されていましたが、パワーアップして再登場! こちらも事業提案制度から生まれたプロダクトなのですが、実際に他社でも利用が開始しています。 創民祭の間も、「こんなものづくりイベントやってほしい!」というテーマで実際にブレストが繰り広げられていました。 公開中のオンラインブレストサイトはこちらです。 https://brest.nabimoon.com/ 手書きもいいけどメールでも感謝を伝えよう『サンクスカード Web』 弊社には「サンクスカード」という、感謝を伝えたい人にメッセージカードを渡す文化があります。 これまでは名刺サイズのカードに筆記する形だったのですが、有志によりついにWebサービス化されました! サイトにメッセージを入力すると、相手にメールが届きます。 クリエイターの日の活動で開発しており、裏側はサーバーレスで動いています。 その他 その他、LIFULL HOME'Sの新機能開発や、ハッカソンで開発したIoTのアプリケーション、街の雰囲気が分かる地図のアプリケーションなど、魅力的なプロダクトが出展されていました。 また、Lightning TalkではAIとレコメンドについてのお話を噛み砕いて伝えてくれたり、Sonic Piというライブコーディング可能なシンセサイザーを使った、エモすぎる発表も素敵でした。 最後に 第7回目の創民祭。 内容も回を追うごとにパワーアップしており、どんどん多様になってきています。 こういったイベントで刺激をうけると、モノづくりの楽しさを実感して、自分自身ももっと新しいことに挑戦していきたいと感化されますね! それでは! 次回、半年後の創民祭もご期待下さい! LIFULLでは、一緒に働くメンバーを募集しています!ご興味がある方ぜひご覧いただきご応募ください! hrmos.co
エンジニアの鈴木( Kentaro SUZUKI (@szk3) | Twitter )です。 ついに本日で re:Invent 2018は終了になりました。よって、参加レポートもこれで最後になります。 すこしre:Playに触れた後に、総括していきます。 re:Play 昨晩 Keynote 2日目の夜は、re:Playというパーティーが開催されました。 reinvent.awsevents.com 自分も参加してきましたが、昨年以上にド派手で楽しい思い出になりました。 Twitterなどで探すと、動画を上げてらっしゃる方が多いので是非一度ご覧頂きたいと思います。 翌朝、re:Playも明け最終日を迎えた会場は人も少なくなり 会場全体が撤収モード になります。 そんな光景を見ていると、「あー、今年も終わっちゃった...」と実感が湧いてきます。 では、 re:Invent 2018 総括 です。 re:Invent 2018 を振り返る 参加期間中は、この記事 + Qiitaを含め合計8つのフィードバックを出すことができました。 総括としてブログを振り返っていきます。 参加レポート1 この記事では、「なぜre:Inventに参加するのか?」について自分なりの答えをシェアしています。 カンファレンスが始まる前に、現場にいる方に読んでもらいたく投稿しました。 www.lifull.blog 参加レポート2 新しく発表されたRoboMakerについてハンズオンした内容になります。 まさかRobot来るとは思わなかったわー。 www.lifull.blog 参加レポート3 - The Quad / Chalk Talk re:Inventは聞く一方だけではありません、体験したり、ディスカッションする場も設けられています。 www.lifull.blog 参加レポート4 - Keynote AWS CEO Andy JassyのKeynoteを受け、思うことをまとめました。 (なので紹介されたサービスについては記述されてません!) www.lifull.blog 参加レポート5 - DeepRacer ML学習環境としてのDeepRacerは、大人も子供楽しめるので要チェックですね。 www.lifull.blog 参加レポート6 - AWS SDK for JavaScript (TypeScript) 新しいJSの AWS SDK は TypeScript で書き直されています。それについてのChalk Talkに参加してきた内容のフィードバックです。 www.lifull.blog まとめ 自分は、今回で3回目の参加になります。 1回目も2回目も、かなり刺激が強かったのですが、3回目でも昨年と違うブレイクスルーを実感できるのは、 それだけ心を揺さぶられる振り幅が大きいからだと感じています。 同じ場所、同じ空気、同じタイミングで re:Inventに参加するという共通項が、世界中の開発者が楽しそうに参加してくる大きな理由のひとつ だと毎年感じます。 新しい出会いもたくさんありました。 企業同士で具体的なテーマについてディスカッションさせて頂いたり、 近くで生バンドが爆音で演奏している中、組織や抱える課題についてお話させていただいたり、 DeepRacerのWorkshopで同じテーブルになった方と一緒にレース場に行ったり、 re:PlayではAWSの中の方とお話させていただくことができました。 また、Facebookでのre:Invent 2018 コミュニティーグループには何度となく助けていただきました。 皆様の素晴らしいホスピタリティにはかなり支えていただきました。ありがとうございました。 今年もre:Inventに参加することができて本当にうれしく思います。 送り出してくれた、家族・会社・同僚には感謝しかありません。 次のアクションは、このre:Inventの経験や出来事をどう活かすかです。 帰国したら自分にできることで、社内外に貢献し続けていきたいと思います。 コミュニティグループ含め、現地でお話させていただきました皆様ありがとうございました。 re:Cap等ご予定あって、登壇者に困っている方は Kentaro SUZUKI (@szk3) | Twitter までお気軽にご連絡ください! いろんな視点でフィードバックできます! ひきつづき頑張るよー
お疲れ様です。基盤Gの今井です。 Hands-on Labsに参加してきたので、所感を記載いたします。 Hands-on Labsとは  検証用のサンドボックス環境で実際にAWSサービスを実習を行います。  カタログから、実習対象サービスと内容を選択し、シナリオに沿って自分のペースで学習が可能です。  また、申込み予約が不要で、席が空き次第、実施可能なのもありがたかったです。(回転が早いため、ほぼ待つことなく参加できました。)   開催場所  The Venetian(主要会場)にて、開催されます。 開催時間  登録用の初日と、最終日を除き、毎日以下の時間で参加可能でした。 11/26 08:00 ~ 16:00 11/27 08:00 ~ 16:00 11/28 08:00 ~ 16:00 11/29 08:00 ~ 16:00 参加に関して  ラボ参加に関して、最初にアカウント作成が求められます。登録時のメールアドレスがアカウントになりますが、登録後に対象メールアドレス宛にアカウント認証用メールが送信されます。その為、即時、確認が可能なメールアドレスで登録されることをお勧めいたします。  また、シナリオは全て英語でしたが、何をすれば良いのかが分かりやすく、手順を間違うことはありませんでしたので、英語初心者&専門知識無しでも、安心して参加できました。 各Hands-on Labs内容と感想 Introduction to Amazon EC2 Auto Scaling  AWS EC2 Autoscallingを1から構築する手順が、分かり易く纏められていました。 Introduction to Amazon Machine Learning  機械学習を用いたクラス分類の精度評価のための混同行列を学びつつ、機械学習の初期導入が学べました。  上記Auto Scalingと同様に、こちらも1から構築する手順が、分かり易く纏められており、導入・学習としては良かったです。  また、Machine Learning(※AWSサービス名)が必要な設定を任意で対応してくれるため、初心者でも機械学習がやりやすかったです。
お疲れ様です。基盤Gの今井です。 各Keynoteに参加してきたので、所感を記載いたします。 Keynoteとは  AWSに関する基調講演となり、AWS全体に関する内容が発表されます。今年も、11/28(火)、11/29(水)、11/30(木)と計3回開催されました。  新機能・サービスも併せて公開され、発表された機能・サービスのセッションが即時公開されるため、注意が必要とのことです。今回は、11/28にAWS DeepRacer発表後にMGMでWorkshopが公開されていました。 開催場所  The Venetian(主要会場)にて、開催されます。 但し、その他の会場(ARIA、Bellage、Mirage、MGM)と公式アプリでライブ公開され、視聴可能です。発表後1時間程度の遅れはありますが、以下のYoutubeチャネルでも視聴可能となります。 www.youtube.com 開催時間  大体、08:30 開始で約2時間 ~ 2時間半の間で開催されます。主要会場での参加人数がかなり多いため、参加するなら開始1時間前から並ぶか、ライブ配信で閲覧されるのも1つの手だと思われます。 アプリ  Keynoteでは、同時通訳で行われ、以下のアプリをスマホにインストールし、告知されるWIFIに接続するか、Keynote会場時に入口左側のTranslation Table でヘッドセットを借りることで、通訳された内容を公聴可能でした。 Hearing Hotspot Williams Sound, LLC Productivity Free play.google.com 各Keynote内容 11/27(火)  AWSパートナーのためのエコシステムやglobal allianceでした。(次のセッションがあったため、あまり聞けなかった) 11/28(水)  Keynoteとしては、さすがメインだけあって、今回も大量の新サービスが公開されていましたが、個人的に気になるのは以下のサービスでした。  ※各コンテンツの概要は、 AWS re:Invent 2018 で発表された新サービスと機能 | AWS で確認できます。 AWS Control Tower AWS Security Hub AWS Managed Blockchain AWS Lake Formation Amazon Timestream SageMaker Ground Truth Amazon SageMaker RL Marketplace for machine learning Amazon Elastic Inference 11/29(木)  前日が完全新規サービスが多かったのに対して、この日は既存サービスの拡張が多めでした。その中でも、個人的に気になるのは以下のサービスでした。 ALBでLambda functionをターゲットとして、選択可能 LambdaでのCustom Runtime の利用可能 参加した感想  昨日のDevSecOps関連システムインフラ系のセッションなどでも感じましたが、システムを代替しうるマネージドサービス公開の可能性を考慮し、システムを単一機能で、システム間を疎結合にて構築し、構造をシンプルかつフレキシブルに変更可能に設計する事が今以上に必要になってきたと考えています。
お疲れ様です。基盤Gの今井です。 Japan Nigthtに参加してきたので、所感を記載いたします。 Japan Night Japan Nightとは  日本からのre:Invent参加者限定のパーティーです。 登録  登録は、AWS re:Invent 2018 japanのサイトにて登録可能です。Japan Night単独でも大丈夫でした。 開催場所・日時  今回は、ARIA で11/27(火) 18:45 開始。 当日参加に必要なもの  以下のものが必要でした。 プリントした参加チケット パスポート 参加ノベルティ 参加した感想  今回は800人以上の方が参加され、かなり混んでいました。が、いろんな方々と交流することができ、楽しかったです!!
エンジニアの鈴木( Kentaro SUZUKI (@szk3) | Twitter )です。 Amazon.com CTO Werner Vogels が登壇するKeynoteでは、Serverless関連の大型アップデート・新サービスが大量に発表されました。 Wernerの動画はコンテンツも良いのですが、AWS CEO のAndyと同様にプレゼンの勉強になるのでオススメです! www.youtube.com どうしても派手なアップデートに目が行きがちな re:Invent ですが、 各会場で行われるセッションでは、re:Invent前に発表された 地味だけど嬉しいアップデート についても紹介されます。 今回は AWS SDK for JavaScript の Version 3についての Chalk Talk に参加してきたのでレポートします。 Introduction to Version 3 of the AWS SDK for JavaScript (TypeScript) … Introduction to Version 3 of the AWS SDK for JavaScript (TypeScript) Chalk Talkでディスカッションする内容は、約10日くらい前にアナウンスされた新しいAWS SDK のものです。 aws.amazon.com AWS SDK for JavaScriptは現在v2ですが、開発者プレビューのversion3が公開されています。 リポジトリはこちらになります。 github.com version3の特徴を見ていきましょう。 TypeScript 一番の変更点ですが、 TypeScript で書かれています。 TypeScriptによる恩恵は、エディタによる補完や型推論などを通じて開発効率に現れます。 Google社内でも公式言語として採用されていますし、 www.publickey1.jp かの有名なVSCodeもTypeScriptで書かれています。 github.com ちょっと話がそれますが、VSCodeは re:Inventで発表されたAWS Toolkitsの対応エディタ(現時点ではpreview)のひとつに選ばれるくらい人気があります。 New – AWS Toolkits for PyCharm, IntelliJ (Preview), and Visual Studio Code (Preview) | AWS News Blog VSCodeを触ったことがなく興味のある方は、以前まとめた記事が参考になるかもしれません。 よろしければご覧ください。 qiita.com モジュール化 aws-sdk v2がモノリシックな設計だったのに対し、 v3ではモジュール化を意識した設計 になっています。 そのため、v2に比べていくらかサイズが小さくなっています。 SDKのサイズが小さいことはダウンロードやアップロード時間も短くなるので良いことですね。 一般的なWebにおいては、 速さは正義 です。 v2の特徴としては、使わないAWS Serviceのクライアントなどもまるっとインクルードされていた為、サービスクライアントを個別にインポートする必要はありませんでした。 しかし、それは本当に便利だったのでしょうか? たとえば、S3のサービスクライアントしか使わないようなアプリに対して、EC2やEMRなどのサービスクライアントは不要だと思います。 なので、各ソースコードで必要最低限のサービスクライアントをインポートすることでコードの軽量化を含め多くの恩恵が受けられるようになることは、自然な流れだと思いました。 また、ブラウザ側とnode.js側のSDKを分けることで影響範囲を少なくすることにも成功しています。 たとえば、StreamなどNode.jsとブラウザでインターフェイスが違うようなものに関しても、両方のパッケージで適切に処理することができます。 いい感じですね、モジュール化。 プロミス化 各サービスクライアントの非同期的なAPI呼び出しは、コールバックからプロミスに変更されました。 (v2でもAWS Requestオブジェクトのpromise()関数からPromiseオブジェクトを取得することはできます) いままでは、Promiseオブジェクトを取得する際はpromise()関数を呼び出す必要がありました。 v3ではpromise()関数を経由せずにPromiseオブジェクトが取得できるため、スッキリかけそうです。 さらに aync/await で 統一されていると可読性も高くて嬉しい ですね。 グローバルな設定の廃止 v2では各クライアントのコンストラクタに設定を渡すと、グローバルな設定とマージされるような挙動をします。 そのため、この機能が一部の状態下において混乱のもとになっていました。 そのようなフィードバックを元に、 v3からは各サービスクライアントごとに設定することになります。 これは個人的にはすごく良い変更だと思っていて、昨今のアーキテクチャではマルチリージョンで運用するサービス増えているし、 状態としてサービスクライアントに閉じ込めるのはとても自然に感じます。 質問 Chalk Talkだったので、テスト周辺モジュールについて直接質問してみました。 Q「aws sdkってテストがめんどくさいんだけど、mock とか stubとかそういう機能をオフィシャルにサポートする無いの?やっぱりsinonとかproxyquire使ったほうがいい? 」 A「そういう予定はないけど、aws-mockとかあるから使ってみたら。あと○xklsjfwfkj....」 ... ふむ。なるほど。 わからん。。。 残念ながら英語力不足で最後のセンテンスを聞き取れませんでした。 反省としては、会話の中のaws-mockというキーワードを得ることで満足してしまったところです。 遠慮せずに、「もっとゆっくり話して」って言えばよかったですね。。。 多様な英語に触れてコミュニケーションの経験値を積んで行こうと思います。 ちなみに、その後、ホテルに戻ってきてリポジトリのソースコードを読んでると、テストコードではMockはjestを使っているようでした。 jestjs.io まとめ このChalk Talkの参加人数は、ざっくり約30人くらいでした。 他のセッションと比べると圧倒的に会場も小さく、人も少ないです。 ですが、小さい会場において、 手を伸ばせばすぐ届く距離感だからこそ、登壇者の勢いや伝えたい箇所が強く伝わって来るような気がします。 前回のChalk Talkと比べて、登壇者とリスナーが新しいSDKについて積極的にディスカッションしていたのも印象的でしたね。 個人的な参加目的のひとつとして「AWSのエンジニアに 技術的な質問を英語でする 」という ミッションをひとつを達成できたので、一歩前進 という意味でも満足したChalk Talkになりました。 Chalk Talkのような小さいセッションでも手を抜かないのが、re:Inventのいいところ ですね。 次回は、re:Invent 2018 の総括です。
エンジニアの鈴木( Kentaro SUZUKI (@szk3) | Twitter )です。 AWS のカンファレンス re:Invent に来ています! これでもかというくらい新サービスが発表されるので、嬉しい悲鳴とはいえキャッチアップが結構大変です。 そんな人に向けて、これはスゴい!と思うサービスを厳選した記事をQiitaに投稿していますので、ご覧いただければ幸いです。 qiita.com さて、本記事では先日発表された DeepRacerについてのレポート です。 https://aws.amazon.com/jp/deepracer/ より引用 aws.amazon.com AWS DeepRacer DeepRacerは、Keynote 1日目の中で発表されました。 機械学習を学ぶための取っ掛かりとして、こんなに面白そうなものがでてきたのは自分が知る限り初めてです。 Keynote最中に、amazon.comでの販売が発表されたので、即カートにいれました。 決済のタイミングで、去年のDeepLensのことが頭をよぎります。 これは、もしや。。。 ビンゴ、 日本には発送できない とのこと。残念すぎる。。。 そして、Keynoteを最後まで見た後は次のセッションに向かう為にバスに乗りました。 Workshop 弊社CTO 長沢( Tsubasa Nagasawa@LIFULL CTO (@nagasawatsubasa) | Twitter )と「Workshopが追加されたら行ってみよう」みたいな談笑をしながら、 re:Inventアプリでスケジュールをチェックしていると、なんと! Workshopある じゃん! 次のセッションをキャンセルしてDeepRacerのWorkshopに向かうことにしました。 当初の予定から フレキシブルに予定を変えられるのも、re:Inventの楽しみ方のひとつ ですね。 しかし、ふたりがかりでチャレンジしても 一向に予約が取れません 。かなりの数のリピートセッションが表示されてるにもかかわらず全部ダメそう。。。 しかたがないので、ダメ元でWalk-up(予約できなかった人)の列に並ぶことにします。 バスが会場に付き、足早にWorkshopの開催される場所に向かうと、もうすでにかなりの行列が。。。 最後尾に並び、あとは入れることを祈るのみです。 Workshop開催10分前ぐらいになると、Walk-upに並んでいた人が部屋に案内されていきました。 もっと全然ダメかと思いきや、意外とすんなりとテーブルに付くことができました。 運がいい 。 さぁ、いよいよWorkshopが始まります。ワクワクしてきました! Workshopの内容は、以下のリポジトリに沿って行われました。 github.com やることを簡単に説明すると、サーキットのコースをよく早くゴールに辿り着けるように機械学習させたモデルを作ってみようという内容です。 そのモデルの学習経過とシミュレーション内容は、AWSのWebコンソール上で全て確認できるようになっています。 ここにも、 昨日 レポート したRoboMakerのシミュレーション技術 が使われているようでした。 各自自分のペースで資料に沿って、Workshopを進めていきます。 学習が終わるのを待つ間に、Workshopでは同じテーブルの参加者同士でどうやったら精度があがるのか?みたいな会話をしました。 結局、学習に時間がかかりLab1までしか終わりませんでしたが、Workshopの終わりにサプライズが。 DeepRacer キタ━━━━(゚∀゚)━━━━!! ファシリテーターの方が、講演台の下から取り出したのは紛れもなく 実物のDeepRacer!!! また、Workshopで作ったモデルを特設会場のDeepRacerにデプロイして走らせることが可能で、Workshop参加者はDeepRacerが頂けるとのことでした! Amazing (っていうか一体いくらかけてるの???)すぎる。 MGM Speedway 特設会場はめちゃくちゃ広く、本気の遊び心に溢れています。 このサーキットは観客としてみることもできるので、ナレーターがレースの様子をレポートしたり、参加者へのインタビューを行ったりしていました。 本格的過ぎますね。 まとめ 自分もWorkshop後日にサーキットに行きましたが、残念ながら自分のモデルで走らせることはできませんでした。 その時間帯は参加者が多く、次のセッションにどうしても出たかった都合上、自分の順番が回ってくるまえにその場を離れることになったからです。 DeepRacerは、大人向けだけでなく子供向け(むしろこっちがターゲット?)としてもかなり有益だと思います。 こういう体験でテクノロジーを学び、そのテクノロジーを使って世界を変えていく。 DeepRacerを通じて、そんなループを回す子供たちがたくさん出てきそうな予感がしました!
エンジニアの鈴木( Kentaro SUZUKI (@szk3) | Twitter )です。 AWS のカンファレンス re:Invent 2018もいよいよピークを迎えます! 本日は、 AWS CEO Andy Jassy による Keynote のレポート をします。 昨今では日本にいてもリアルタイムで最新の情報が手に入るようになりました。 ですが、このKeynoteを同じ場所、同じ時間で共有する感覚はラスベガスでしか味わえません。 毎年のことながら、今年も 圧倒的 でした! Keynote 眠い目をこすりつつ、Keynote会場へ向かうために少し早起きします。 ラスベガスの朝は気持ちのいい肌寒さで、嫌な感じはあまりしません。 Keynoteは午前8時スタートです。 昨晩の交流会で「7時には行ってないと会場に入れなくなるかも」という情報を頂いたので、ほぼ7時くらいに会場に付くように行きました。 するとやはり、 先頭が遠い。。。 約待つこと20分後、ゆっくり列が動き出します。 扉の中は、ガンガンに音楽がかかっており、完全にクラブのような状態。 朝7時過ぎからテンションが上がりまくりです。 誘導者に促されるまま着席し、Keynoteが始まるまでそわそわしながら待ちます。 そして、会場のバンドによる生演奏に送り出され、 Andyが登場 します。 会場の大きな歓声とともに、Keynoteスタートです。 プレゼンはシンプルで力強く流れもすばらしいので、是非公式の動画でご覧頂きたく思います。 www.youtube.com 今回のKeynoteで発表された新サービスは、わかりやすくインパクトが強いものが多かったです。 「セキュリティ」、「ファイルシステム」、「ブロックチェーン」、「AI/ML系サービスの強化」、「ロボティクス」。 その根底には「エンタープライズドリブン」な強い意思が垣間見えました。 徹底的なカスタマー目線から生まれるサービス群 。これがAmazonの強さであり、AWSの強さであると感じました。 気がつけばあっという間の2時間45分でした。 明日のAWS CTO Werner Vogels' の Keynoteも楽しみです!! まとめ https://www.youtube.com/watch?v=ZOIkOnW640A より引用 Here you help you build Keynoteの締めで出てくるセンテンスです。 サービス提供側として、自分たちもこういう気持ちを忘れずに、 ユーザーとクライアントに期待を超える価値を還元できる存在でいたい と改めて思いました。
こんにちわ、エンジニアの鈴木( Kentaro SUZUKI (@szk3) | Twitter )です。 AWS のカンファレンス re:Invent に来ています! 本日は2日目ということで、午前中にKeynoteがあり、たくさんのサービスが発表されました。 特にすごいのがコレ、AWS Ground Stationです。 フルマネージドの衛星通信基地局 のサービスなります。 オンデマンドで調達するサービスの常識を覆しています。 aws.amazon.com 今年もヤバいの来たなー。 ということで、本日の参加レポートです。 The Quad Ariaという会場のひとつで、 The Quad というコンテンツラウンジが開催 されました。 コンテンツとして、スタートアップ、スポンサーブースの展示、ビルダーズフェアなどがありました。 そして、昨年と同様、完成度の高いレゴのピタゴラスイッチも展示されていました。 とても良くできているので見てても全然飽きません。 ここにに来ると 勢いを感じて刺激になります ね。 Challenges of Embedded IoT Development and How Amazon FreeRTOS is Changing the Scene FreeRTOSという組込み用のリアルタイムオペレーティングシステムについての Chalk Talkに参加 してきました。 Chalk Talk とは、少人数で与えられたお題に対してディスカッションするという 参加型のセッションになる と聞いていましたので、正直ちょっと緊張していました。 Chalk Talk が始まり、そんな気持ちではじめの20分くらいを過ごしたところで、「あれ?なんかディスカッション始まらないな...」思っているうちに、あっという間に40分。結局そのまま最後まで小さなセッションのような形での開催となりました。 ですが、このChalk Talkでは、FreeRTOSがどんなことを課題とし、どのように解決してきたのかをかなり近い位置で聴講することができました。 エッジとしてのFreeRTOSが数千台になった時の管理や、エッジとして求められる起動時間の短さなど、普段考慮しにくい運用面に視野が広げることができました。 まとめ 今日は、「The Quad」と「Chalk Talk」について紹介しました。 re:Inventはただ聴講するだけでなく、このようなインタラクティブなコミュニケーションをする機会もたくさんあります。 そういった機会を通して、自分の成長に繋げられればと思います。 明日は、いよいよAWS CEO Andy JassyによるKeynoteです。 楽しみですねー
お疲れ様です。基盤Gの今井です。 初日のセッションに参加してきたので、各所感を記載いたします。 セッション 〇 セッションの取り方や間隔  通常セッションやoverflowとよばれる予約なしのリモートセッションは席があまっているので、walk-up(その場での参加登録)でも参加可能な感じです。  但し、その他のBuilders SessionsやChalk Talks、Workshopsなどは、公開から埋まるのがメチャクチャ早くwalk-upで当日参加しても基本的には参加不可でした。  また、セッション間は最低30分は間隔を空けないと、移動時間の関係上、登録不可のため、その時間を調整するか、各日の参加セッション1つの会場内にまとめておくのがベターでした。 〇 受けたセッション operational excelence with containerized worlkloads using aws fargate aws secrets managr best for managing, retrieving, And Rotatig secrets at scale Data privacy an d govenance in the age of Big data Running lean architectures AWS Security in Your Sleep Data Lake Implementaion  当たり前ですが、AWSマネージドサービスを使って効率化・自動化しようぜ!!ってのがどのセッションでもメインでした。  その上での所管が以下です。 システム主体がEC2からコンテナに移り変わっている途中かなと。 セキュリティについても、マネージドサービスを利用することで、人力作業を無くす方向に向き、結果の分析や次のアクションの決定がメインになっていくように思われます。 また、外部のSaasやmarketplaceもうまく活用するが重要で、上記のシステム構成と合わせて、コア部分(自身のサービスロジック)を自分たちで、それ以外の部分を外部を利用して、がデフォルトって感じをうけました。 あと、タグを有効活用することで、システム、インスタンス内に何が稼働しているかをわかりやすくしているのは参考になりました。 人が多い&常に流れている  町全体でre:Inventの人が多く、各会場でも常に人が流れています。    また、会場内のフリースペース(特にコンセント有のところ)は、常に人が埋まっており電源確保が困難なため、モバイルバッテリーも持ち歩くのが推奨。その日の終わりには充電しておくのがベストでした。 食事 〇 昼食  昼食は無料で提供されるのですが、売り切れ?るのが早く、12時ごろに行かないと受付で、もうないって言われます。  ただ、別会場では食べれていたそうなので、会場によって変わるのかもしれません。 〇 軽食  15時ぐらいのセッションが終わったぐらいで、飲み物と軽食が提供され、こちらは頂くことができました。   その他  会場間はバスが回っていますが、一部の会場(MGM)以外は、徒歩での移動可能範囲でした。というか、バスにのると交通量が多く、思うように進まないためあまりお勧めはできません。
お疲れ様です。基盤Gに在籍している今井です。 11/25 ~ 12/1まで実施される AWS re:Invent2018に参加してきましたので次回以降に参加される方の参考になればと思い、 レポートを記載いたします。 海外イベントに参加にあたって準備したもの 〇 必須 パスポート ESTA登録(アメリカ渡航にはVISA申請の代わりにESTAへの登録が求められます) re:inventへの登録 re:invent用アプリのインストール   iOS: https://itunes.apple.com/jp/app/aws-re-invent/id1290295824?mt=8   Android: https://play.google.com/store/apps/details?id=com.mobiquityinc.reinvent 上記アプリへの写真登録 ※会場での登録時に必須となります 〇 推奨 Japan Nightへの登録 ※10月中旬にしておくと モバイルバッテリー モバイルwifi ラスベガスへの道のり 今回は羽田 → LosAngels → LasVegas での経路で現地に到着いたしました。 各時間としてはこんな感じでした。 11/24(土) 19:20(羽田発) ~ 11/24(土)12:49(ロサンゼルス) 計:10h 29m 11/24(土) 17:30(ロサンゼルス) ~ 18:45(ラスベガス) 計:1h 15min 空港 ~ 現地ホテル(タクシー)で到着したのが、19:30頃 0day(11/25)  本日は、カンファレンスへの登録と、私の場合、各カンファレンス場所の確認が主なタスクでした。(本日が一番時間に自由が利くので、各会場の位置関係を把握しておきました。)  今年のレジストは、昨年と異なり、バイオレットカラーになっており、おしゃれな感じがします。    登録は、上記で準備したアプリのQRコードとパスポート提示のみだったので、予想よりさくっと終わった感じです。  登録が終わった後、同会場内のSWAGではグレーパーカーがもらえました(サイズ的に、日本よりもワンサイズ小さいサイズ選ぶと、サイズマッチするようです)   まとめ  海外カンファレンス&re:Invent&ブログ公開も全てが初参加なので、つたないかもしれませんが、なにとぞよろしくお願いいたします。
こんにちわ、エンジニアの鈴木( Kentaro SUZUKI (@szk3) | Twitter )です。 今年もAWS のカンファレンス re:Invent に来ています! ラスベガスは連日快晴で、いよいよ本日からre:Inventが本格的に始まりました。 そして、昨日のイベント発表されたロボットアプリケーションの開発を支援する新サービス AWS RoboMaker はだいぶ衝撃的でした!! 発表されたタイミングで、セッションとワークショップが追加されたので、 初日から予定を組み替えて参加してきましたのでフィードバックします。 aws.amazon.com AWS RoboMaker ってなんなの? 端的にいうと、 ロボットアプリケーションの開発支援サービスの総称 です。 ロボット開発って(慣れない人にとっては)めちゃくちゃ難しいんです。 今後のことを考えると、ロボットが活躍できるシーンは右肩上がりになることは想像に難くありません。 ですが、ロボットを使ってイノベーションを起こそうという人の絶対数が足りてない現状があります。 なぜ足りないかというと、 そもそもロボットアプリケーションの開発が様々な面で難しかったり、開発の準備や手間に時間がかかったりする ことが開発者不足の原因のひとつとして挙げられます。 つまり単純化すると、 難しい → 人が少ない → イノベーションが起きづらい という構造になっています。 こういった流れを変えるべく、簡単にロボットの開発ができるような環境を整え、開発のハードルを下げることで、 新たな開発者を取り込みイノベーションを起こしやすくしよう というコンセプトのもとAWS RoboMakerは誕生しました。 そして、ロボット開発を構成する主要機能(デプロイ、テスト、シミュレーション、ロギングなど)を、 AWS RoboMakerとして、いままで培ってきたAWSサービスと統合させることで実現している と考えられます。 では、さっそくセッションの内容から見ていきましょう。 Announcing AWS RoboMaker: A New Cloud Robotics Service 本セッション スライドより引用 このセッションは大きく分けると2部構成でした。 一つは、冒頭にあげたような、AWS RoboMakerについての説明を中心に、内部で使われるROS(Robot operating system)や、RoboMakerの構成要素の説明などの ガイダンス的な説明 。 もう一つは、実際にケアに使われる ロボットのデモ がメインでした。 まず最初に、ロボットアプリケーションの開発が難しい理由について内容に触れ、 それらをどのように解決するかという内容で、ブレイクダウンしていきます。 テスト、Cloudへの拡張、デプロイ、シミュレーションといったテーマに沿いながら大枠の解説がありました。 個別の説明は省きますが、シミュレーションについて思うことは、 いままで個人が用意するのがかなり難しいと感じる部分だと思うので重宝する機能になりそう です、またハード側との問題の切り分けに大きく貢献しそうだなとう印象です。 詳しい内容は後日動画が公開されるので、そちらを見ていただくのが確実です。 そして、セッションの最後には、実際に実装されたロボットが登場します。 デモでは、ロボットの姿を表示したWebページが用意され、登壇者がロボットにふれるとセンサーが反応してWeb上に反映されるというようなデモでした。 反応速度もよく、かなり安定しているという印象 を受けました。 本セッション スライドより引用 Use AWS RoboMaker to Develop a Robot Application to Track and Find Fido 本セッション スライドより引用 午前中のセッションが終わり、本日最後の枠では、 RoboMakerでロボットアプリケーションを作るWorkshopに参加 しました。 こちらは、2時間を超えるWorkshopとなりますが、基本的にはHelloworld的なアプリが2つ用意されているので、そちらを手順に沿って実装していく形になりました。 本来はワークショップ中に2つのロボットアプリケーションを実装する予定でしたが、 Workshopならではのトラブルも発生し、 残念ながら内容を最後まで消化することができません でした。。。 ただ、 現場に居合わせたAWSの方々の支援や、同じセッションに参加されていた日本人の方々とお話させていただくことで理解を深めることができました。ほんとうにありがとうございました! なので、フィードバックらしいフィードバックができるほど理解できたわけではありませんが、 最終的には 一つのロボットアプリケーションを作り、シミュレーションするところまで出来ました。 まとめ もちろんハード側のことには一切ふれていないので、実際に動くものを作るとしたら他の知識も必要です。 ただ、 開発周辺の環境だけでも楽になれば、開発への心理的・技術的ハードルが下がり、スピード感もかなり違ってくる と考えます。 子供教育の観点でみても、ロボット開発はかなりホットで面白い分野だと思います。 また、 Robotics Anywhere はすでに始まっており、この流れは止めることはできない でしょう。 そんな時流に乗って登場した AWS RoboMakerは開発者の間口を広げる素晴らしいサービスだと思います。 今後も動向を追いつつ、自分でも何か作ってみたいと思います!
こんにちわ、エンジニアの鈴木( Kentaro SUZUKI (@szk3) | Twitter )です。 今年もAWS のカンファレンス re:Invent に来ています! re:Inventでは、毎年1000を超えるセッション等が行われます。 reinvent.awseventsjapan.com そのため、個人としてカバーできる範囲はどうしても少なくなってしまいますが、動画が後日公開されるため、内容に関しては後日キャッチアップすることが可能です。 では、なぜ動画でキャッチアップできるのに、わざわざ高いコストをかけて現地に来る必要があるのでしょうか? それはやはり、 現地でしか味わえないライブ感を味わうため だと思います。 ライブ感とは、実際にAWSの開発者とディスカッションできたり、ハッカソンやワークショップに参加したり、他社交流だったり、 人それぞれ だと思います。 とにかく フィードバックして伝えていくことが大切 で、この体験を活かす為の最初の一歩だと考えています。 以下は、自分が書いた2年前の参加レポートになりますが、当時考えていたことは今でもそんなに変わっていません。 www.lifull.blog 今年も とにかく楽しんで行こう と思います! 参加者の皆様、現地では仲良くしてください! よろしくお願いいたします!!
こんにちは、LIFULLのPythonエンジニアの二宮です。 昨年 に引き続き、今年もLIFULLではQiita Organizationの企業アドベントカレンダーを行います。 LIFULL Advent Calendar 2018 LIFULL その2 Advent Calendar 2018 LIFULL その3 Advent Calendar 2018 昨年の繰り返しになりますが、このLIFULL Creators Blogに比べて、Qiitaではより技術職メンバー個人の情報発信・共有にフォーカスしており、アドベントカレンダーでもそれぞれの工夫や発見を共有する予定です。 「株式会社LIFULLってどんなメンバーがいるの?」「どんな技術が使われてるの?」って興味を持たれている方は、それぞれの記事をご覧いただけると嬉しいです。 それでは、12月1日からの更新をお楽しみに!
こんにちは!LIFULLでジンジニアしている木村 @kimkimniyans です。 秋も深まって外に出るのも家でのんびりするのも何をするにもいい季節になってきましたが、知ってますか? 油断してるとあっという間にさむいさむい冬がやってきます。イヤですね寒い冬。 しかしっ、そんな寒さも吹き飛ばすアツいイベント、 PHP Conference が今年も開催されます! 開催日:2018/12/15(土) 会場 :大田区産業プラザ PiO PHP Conference 2018にLIFULLもスポンサーをさせていただいています! 企業ブースも出させていただく予定になっていまして、 新バージョンのホームズくん&LIFULLステッカーやおやつタイムに最適なオリジナルお菓子 をお配りする予定です。 ぜひブースにもお越しください♪ PHPは弊社国内主力事業であるLIFULL HOME'Sのサーバサイド言語で採用しており長いお付き合いです。 PHPの国内ビッグイベントをサポートできることをとても楽しみにしています♪ LIFULL Tシャツを着た弊社スタッフを会場で見かけましたらぜひお気軽にお声がけください 。 それでは会場でお会いしましょう! エンジニア積極採用中! PHPエンジニアはもちろん、各種エンジニア募集中です!ご興味ある方ぜひ覗いてみてください。 hrmos.co recruit.lifull.com