GitHub PagesのJekyllでError: jekyll-remote-theme が発生した

GitHub PagesのJekyllで公開しているサイトがあるのですがbundle updateしたら若干はまったのでメモ。

Summary

  • GitHub PagesのJekyllを使っているプロジェクトでbundle updateしたらローカル環境で実行時にエラーが発生した
    • 発生したエラーはError: jekyll-remote-theme
    • 環境はUbuntu 16.04.3 LTS、Ruby 2.4.3
  • ibcurl4-openssl-devUbuntuにインストールすることで解消した

ことの始まり

先日こんなメールがGitHubから届きました。

f:id:braitom:20180118164740p:plain

「これが噂のDependency graphの機能で脆弱性のあるライブラリを通知してくれているのかー最高に便利だな」と思いました。

ということでアップデートを開始。

環境

今回問題が発生した環境は以下です。

やったこと

Gemfileの確認

GitHub Pagesのgemはこんな感じになっていると思います。

source "https://rubygems.org"

gem 'github-pages', group: :jekyll_plugins

bundle updateの実施

アップデートします。

$ > bundle update

何のエラーもなくアップデートできました。Gemfile.lock もきちんと更新され、中を見ると問題のnokogiri もアップデートされていることを確認しました。

動作確認、エラー発生

ローカルで動作確認をします。

$ > bundle exec jekyll serve
Configuration file: /mnt/c/Users/xxx/xxx/_config.yml
  Dependency Error: Yikes! It looks like you don't have jekyll-remote-theme or one of its dependencies installed. In order
to use Jekyll as currently configured, you'll need to install this gem. The full error message from Ruby is: 'Could not open library 'libcurl': libcurl: cannot open shared object file: No such file or directory. Could not open library 'libcurl.so': libcurl.so: cannot open shared object file: No such file or directory. Could not open library 'libcurl.so.4': libcurl.so.4: cannot open shared object file: No such file or directory' If you run into trouble, you can find helpful resources at https://jekyllrb.com/help/!
jekyll 3.6.2 | Error:  jekyll-remote-theme

おや、なんかエラーが出てる。Error: jekyll-remote-theme ってやつですね。

対応策

調べたところjekyllのリポジトリにそれっぽいIssueが上がっているのを見つけました。

Dependency Error: jekyll-remote-theme is not installed · Issue #6660 · jekyll/jekyll

まさにこれですね。

いろいろ書かれていますが、私の環境では下の方にあるようにibcurl4-openssl-devを入れることで解決しました。

$ > sudo apt install libcurl4-openssl-dev

これでもう一度、bundle exec jekyll serve を実行したところエラーが解消されました。

さいごに

あとはPushすれば無事にGitHubが出しているセキュリティアラートも消えていると思います。
しかし、Dependency graph便利ですね。もっと色んな言語に対応してくれるとありがたいものです。

Regional Scrum Gathering Tokyo 2018参加レポート #RSGT2018

Regional Scrum Gathering Tokyo 2018に参加してきました。

2018.scrumgatheringtokyo.org

参加したセッションで印象に残ったことと簡単な所感を書き残しておきます。資料が公開されているものはリンクを張っておきました。

※一部、私個人の解釈でメモしているものもあり、発表者の方の本来の意図とズレているものがあるかもしれませんがご了承下さい。

Day1

Build a Workplace People Love – Just add Joy

資料 : Richard Sheridan - Build a Workplace People Love – Just add Joy // Speaker Deck

印象に残ったこと

  • エンジニアの喜びとは「自分の作ったものが、世に出て、誰かに使われること」
    • 混沌→PMO導入→官僚主義に→シャドーITが始まる→Agileだ!→でも何もスタートできない...
    • ソフトウエア開発における喜びがなくなっていく
      • Joy Incに書かれてる仕組み作りをはじめることに
  • 喜びとは何か?どうなると喜びが悲しみなるのか?
  • 柔軟なオフィスレイアウト
    • 上司の許可はいらない。好き勝手移動できる
  • 騒音も受け入れる
  • 赤ちゃんを連れてきてもOK。もともとガヤガヤしているのでたいした問題ではない
    • 赤ちゃんのおかげで顧客がやさしくなるという効果も
  • チケットは手書き
    • 手で書くとコピーペーストしないから自分の言葉で書くし絶対読む
  • 学習とは
    • 本を読むことではない
    • 人から学ぶ、一緒に作業しながら学ぶ
  • コミュニケーション
    • Slackなどのチャットツールは使わない
    • 声が一番、直接会話
    • 全社ミーティングはHey Menlow!Hey Rich!のかけ声でさっと実施
  • 恐怖と戦い、変化を受け入れるために実験してみよう
    • それはうちではうまくいかないといった反応には「実験しましょう」と促す
  • 「今日話したことは簡単にできるものではない、しかし必要なことである」

所感

Joy, Inc.の原作者リチャードさんの生講演ということでとても楽しかったです。この本3回くらい読んだので。
内容的には本に書かれていることが多かったのですが本人の口から聞くとまたあらためていろいろと考えさせられました。

仕事する上で「喜びとは何か?どうなると喜びが悲しみなるのか?」については、やはりきちんと定義できていないといけないなと思いました。インセプションデッキで近いことができそうですがあえて「喜び、悲しみ」みたいな項目を入れてもよいかもと思いました。

文化を形成するのにオフィスレイアウトってやっぱ重要だよなとあらためて思いました。柔軟なオフィスレイアウトができるからこそチャットツールを使わないで直接会話が成り立つし、全社ミーティングも成り立つんだろうなあと。

変化を嫌う人、それはうちではうまくいくはずがないという人には「実験しましょう!」と伝え続け、何かを変えていけたらと思いました。

心が折れてもソシキ・カイゼンを続けられるたった一滴の魔法

資料 : 心が折れてもソシキカイゼンを続けられるたった一滴の魔法 // Speaker Deck

印象に残ったこと

  • やってきたこと
    • アジャイルワーク(社内へのアジャイルの浸透)
      • 組織改善、組織変革に有効なのでは?
      • 見える化が大事
      • 総務部でもアジャイル
      • 手法を採用するというよりも、考え方やプラクティスを取り入れていってる
    • 越境ワーク(社内見学ツアー)
      • メンローがやってるやつ
      • 半年先くらいまで予約で埋まっている
  • 価値観
    • 知的好奇心、学び=良いこと
    • 少年サッカーのコーチ経験
      • 「大きい相手でも怖くないよ、そこを気にしたところで何も変わらないから 大変だけどね」 by 小学6年生のキャプテン
    • オーストラリアでの留学経験
  • 続けられるわけ
    • 社内の仲間
      • QCサークル(公式組織)とコミュニティオブプラクティス(非公式コミュニティ)
      • カイゼンの取り組みを少し賞与へ反映させる仕組み
    • コミュニティの仲間
  • 越境なのでボーダーがない
  • ギャザリングの場
  • 人を喜ばせるために、笑顔にさせるためにわれわれの仕事があるのではないか?
  • 見返りを求めずGive&Giveしている人はいるんじゃないかな?好きな人を増やそう
  • 何ごとも自分の選択
    • 義務でも犠牲でもない
  • 子供の「いいこと考えた。聞きたい?どーしよっかなー」ということを大人になってもやっていいんじゃないの?

所感

私は普通の人ですってことを強調されていましたが相当すごい方だと思います。ここまでめげずに成し遂げられるのは普通の人ではできませんよ。本当に。
心が折れそうなときにこの資料を読み直したいと思います。しかし、仲間を作っていくことってほんと大事ですよね。
本買います。

www.shoeisha.co.jp

サーバント・リーダーシップを掘り下げて考えましょう

資料 : サーバント・リーダーシップを掘り下げて考えましょう

印象に残ったこと

  • なぜ必要か?
    • セルフマネジメントチームを可能にする
    • 日本企業への解毒剤となる
      • 縦社会、お偉い様への過剰反応など
  • 世界を変えたいのであればまずは自分自身が変わることからはじめなさい by ガンジー
  • スクラムマスターとサーバントリーダーシップ
    • スクラムマスターという役割には権力、肩書きのパワーが付いていない
    • チームのパフォーマンスをあげてプロダクトを出すために何でもする
  • サーバントリーダーシップは究極のソフトスキル
    • スクラムマスターだけでなくメンバー全員にとって役に立つ
  • 単に命令するだけなら誰でもできる、説得してやってもらうにはスキルが必要
  • チームメンバーから自分の役割に対してフィードバックをもらう

所感

サーバントリーダーシップの話は至るところで出てくるのですが毎回もやもやします。というか、その時々の状況によって常にリーダーシップのあり方は変わり続けるものなので正解なんてないのだと思います。だからもやもやするのかなと。
講演や本などからいろいろな考え方やパターンをインプットしていってその時々の状況に応じてベストな振る舞いができるようになることを目指していきたいと思いました。

以下は雑なメモ。

  • タックマンモデルの段階によってはサーバントリーダーシップだけではうまく回らないこともあると思う
  • 出来たての組織とかメンバーが大きく変更した組織の場合は最初のうちはトップダウン型のリーダーシップでよいのでは?
    • ある程度、組織がレベルアップしたらサーバント型に移ればいいのでは?
  • このあたりエラスティックリーダーシップに書いてあったはずなのでまた読もう

ゲーム開発現場の中心で心理的安全性を叫ぶ

資料 : ゲーム開発現場の中心で心理的安全性を叫ぶ [RSGT2018]

印象に残ったこと

前半
  • 社内勉強会に参加しづらいと感じる
    • 隣の席の先輩が忙しそうだから...
  • 社内勉強会を開催したいが
    • 業務時間内にやっていいの?
    • いちいち報告しないといけないの?
  • こんな状態が続くとモチベーションが下がって何やるにも億劫になるという負の循環が起きてしまう
  • 勝手にできないと決めつけて言わずに諦めていた
    • RSGTへの参加なども言ってみたら会社から許可おりた
    • 研修費用もお願いしたら会社から出してもらえた
  • 組織の空気を少しずつ変えていく
  • LT大会の実施
    • 勉強会のハードルを下げる
    • コミュニケーションの活性化
  • 起きた変化
    • イベント参加報告をレポートからLTに
    • 自由参加できる勉強会が増えた
  • 継続させるために
    • スタート前に協力者を探す
    • スペシャル会を開催する(大御所を呼ぶなど)
    • 地道な宣伝活動
  • Chatwork社員雑談部屋
    • 退室自由、避難禁止
    • 時期を見て情報の発信量をコントロール
    • バカなふりする
      • 間違っていても雑に発言してよい空気を作る
      • もやっとしてることでも言っていいんだ
      • やりたいこと、熱量を吐き出していいんだ
    • 言える化
      • 思い込みを取り除き気軽に発信できる → 相談したり助けてと言える → 問題や間違いを指摘し合える
  • 全員を巻き込めずイライラするよりも今一緒に活動している人達で楽しむにはどうすればよいかに集中する
後半
  • チームを潰した話
    • 透明性を重視していろいろ見える化した
    • リーダークラスの人が辞めてしまった
    • 見えないものを見えるようにして何が悪いんだろうと思っていた。しかし何も考えずに全てを見えるようにするのも良くないことに気づいた
      • 隠したいスケジュールとかがあった?
    • そもそもなぜ隠さないといけなかったのか?隠さないとイケない雰囲気のチームがいけなかった
    • このようなチームにいきなりスクラムを適用は厳しいことを知った
    • 心理的安全性があるチーム作りが必要
  • 心理的安全性とは
    • 仲間に背中を預けチャレンジできる状態・状況
    • 個人が安心して本気で取り組める
  • 話し合える場を作る
    • 対等な立場でプロダクトやチームについて話し合える場
  • 話すきっかけ、雰囲気作り
    • ムードメーカー(この人だったら多少のことを言っても許されるって人)に期待
  • 個人との対話も重要
    • 個人の不安はふりかえりでは拾えない
    • 人への不満は時間の無駄
    • チームVS問題という構図になるようにする
  • ふりかえりで感謝の言葉が増えてくると良いチームになってくる

所感

前半のお話は今自分が取り組んでいることに近い話だったのでとても共感できましたし参考になりました。イベント参加報告がレポートからLTになったというのはとてもよいですね。言える化という言葉もしっくりきました。言える化の状態作ってもメンバーの入れ替えがあるとまたちょっと戻った感じになるのでその辺どうしているのかどなたかと意見交換したいなあと思いました。

後半のお話からはとにかく対話が大事ということがビシバシと伝わってきました。やはりなんやかんやで対話大事ですよね。がんがん対話していきましょう。

Scrum プロジェクト開始のベストプラクティス

資料 : 【資料公開】Scrumプロジェクト開始のベストプラクティス | Ryuzee.com

印象に残ったこと

  • ベストプラクティスはない
  • 自分たちで考える
  • インセプションデッキも単なるフレームワーク
    • 書けば終わりではない
    • 目的は共通理解の形成
  • 対象領域によって開発手法を選ぶ必要性
    • プロジェクトの特性によって本当にスクラムでやるのか考える
    • ウオーターフォールの方がうまくいく場合もあることをきちんと考える
  • プロダクトオーナーとスクラムマスターは外部とのインターフェイス。外部パートナーをアサインするというのは好ましくない
  • リスクが高いチーム体制
    • パートナー比率が高い
    • 既存チームが強力な指示型で運営されている
  • プロジェクトは初期で決まる。人が大事。兼任辞めさせる、経験がある人を集めるなど
    • プロジェクトを成功させたかったら、十分条件を満たしなさい。開発の初期で成否が決まることが多い
    • スクラムは不十分な状態からプロジェクトを成功させられるフレームワークではない。成功させるためには十分な状態で開始する必要がある
  • ワーキングアグリーメントを設定する。みなで話し合って働き方を合意しておく
  • スクラムの知識レベルを揃える
  • 非機能要件はアーキテクチャ、コスト、開発期間に影響を与える
  • 技術検証はキリがないので、タイムボックスを設定する。全てを検証するのは無理。結果によってはプロジェクト中止もあり得る
  • ラクティスの選択は最初から盛り込みすぎない
    • 学習コストが高すぎる
    • 後で変えてもよい
  • バージョン管理システムの使い方が分からない人に本番コードは書かせない。まずは教育をしっかり行う
  • スプリントの期間はスプリントが長い方が難しい。最初は1週間が楽
  • 最初のスプリントの開始までに必要な準備期間のお勧めは1か月。最初のスプリントができるかどうかで判断
  • 社歴の長い人がスクラムマスターすると社内に知り合いが多いので調整がスムーズにいくことも多い
  • Q:スクラムマスターの評価どうすればいいの?
    • A:評価いらなくない?個人の成果よりビジネスとしての成果が大事なのでは?それが許されないならチームメンバーにフィードバックしてもらう

所感

最高でした。学びしかないセッションでした。 冒頭でも述べられていたのですがベストプラクティスなんてなく、その時々の状況応じて自分たちで考えていけないということを忘れてはいけません。
質疑応答で出ていたスクラムマスターの評価の話も印象深かったです。個人の評価よりもビジネスとしての成果が大事なのでは?って話はほんとそうだよなあと思いました。

Day2

敢えて属人化せよ!エキスパートの集団こそが最強のチーム

印象に残ったこと

資料が公開されていないのでここはセッション内容のメモをそのまま貼っておきます。

  • 環境は大事
    • 超人の同僚といつでも議論、協力できる
    • よいマネージャーがいる
    • 健全な勤務時間
    • いつでもリモート作業、会議
    • 広い机と速いマシン
      • スペックのよいマシンが使えなければ会社に行く意味なくないですか?
  • 楽しく作れる条件
    • 大きな裁量、権限
    • 頼れる仲間
    • 上がる給料
      • お金大事
  • 始めてアメリカに移ったとき
    • 今までの習慣でプランニングドキュメント書きますといったらやってもいいけどコード書けっていわれた
    • そのドキュメントを作った1週間を無駄にしていることを身をもって知った
    • コードが知識の履歴そのもの
    • バックログが常にあるのは最初ツラいことだと思っていた → 常にやること(改善出来ること)があるということは良いことだと思えるようになった
  • 最初の数回のスプリントをとにかくやってみる
    • 口で聞いても分からない、体験することが大事
  • App Servicesの開発プロセスの変遷
    • DevOps → NoOps → Dev + Support
    • お客様からの意見をいかに反映させるか
    • お客様が実際にどう使っているか知ることは非常に学びがある
  • よいマネージャーを探すのは難しい
    • 自分からよいマネージャーを探してそのチームに入るという考え方
  • 評価システム
    • 5段階評価だったがなくなった
    • どうしてもチームがギクシャクする
      • こんなに頑張ったのに...なんであいつの方が...とか
    • 無くすことで心理的に楽になり働きやすくなった
      • 何かに追われている感がなくなった
    • 評価基準はimpact
      • マネージャーの力量が問われる
      • 同僚をどれくらい助けたかなど
      • 評価しあう仕組みはとても大事、チームの雰囲気を良くする
        • 自分がいい仕事ができたとき、それを助けてくれた人に感謝したくなる
      • マネージャのこともレビュー、その上司が評価するのに使う
        • マネージャが悪いと部下が逃げる
  • ハッカソンの力
    • ハッカソンからいくつもの本番提供しているサービスが生まれた
    • 業務と直接関係ない場所でも自分のアイデアを活かせる場
    • 組織的に支援できる環境が必要
      • MSではハッカソンの期間1週間くらい取ってくれる、表彰もしてくれる
  • マネージメントの力
    • 本当にそんなことやって意味あるの?って人に対して継続的にメッセージを発信していくのが大事
    • トップは大きなビジョンをきちんと伝えることが大事
      • MSはそれでだいぶ変わった
      • ただし時間はかかる。バルマーのときから変わり始めていた
  • スイッチを切り替える
    • 上司は使うもの
    • バグはあって当たり前
    • 内部向けの議事録不要
      • 意思決定に参加してない人に対してアピールすることはない
    • 積極的に発言しないミーティングは出席不要、途中退席可
      • 逆に自分が貢献できそうなミーティングには積極的にアプローチする
        • スケジュールがもし合わなかったらリスケしてもらう、同じミーティングをもう1度開いてもらうなど
    • 属人化したExport集団こそ最強
      • 特定の人しかできない作業があるとその人が休んだり辞めると業務が止まってしまう
      • それぞれの分野で尖っている人がいてそれをまとめる人、サポートする人がいる
      • サッカーチームと一緒
        • 尖っている人たちを集めて最強のチームをつくる(属人化を許容。FW、GKと役割が完全に分かれているってこと)
        • 彼らがいなくならないような最高の労働環境を整える
        • サッカーだと試合に勝つことがゴール、我々はよいプロダクトをつくることがゴール

所感

なんというか本当に素晴らしかったです。会場もスタンディングオベーションが出るんじゃないかくらいの雰囲気でした。
最高の環境で、自分が本当に好きなことに取り組んでいて毎日楽しいんだ!って気持ちが伝わってきました。そんな状態を支えているのがマネージャーであり評価制度であるわけで。これらをまずはしっかりしないと働き方改革なんてうまくいくはずないよね?と改めて思いました。

リモートワークは難しい - それでもぼくらは歯をくいしばってやっていく

資料 : リモートワークは難しい - それでもぼくらは歯をくいしばってやっていく // Speaker Deck

印象に残ったこと

  • 何が難しいのか?
    • サボる人がいるのでは?
      • サボる人は会社にいてもサボっている
    • 労務管理の難しさ
      • 仕事とプライベートの境界が曖昧
      • 真の裁量労働でないと多分成り立たない
    • メンバーに自主性が求められる
      • 自主性が必要、個人の裁量も必要
  • 突き詰めるとコミュニケーションの難しさ
  • つまり、コミュニケーションが難しいということ
  • お客様と一緒に仕事するときってオフィス離れて働いてますよね?リモートワークは突き詰めるとそれと一緒なのでは
  • コミュニケーション
    • メインはSlack
      • 仕事も雑談も。雑談重要
      • テキストだけに頼らない
      • 必要員応じて音声、音声のログはwikiなどに共有
  • テキストコミュニケーションの難しさ
    • 情報が少ない
      • 情報とは: 声の抑揚、表情/仕草、空気感
      • 感情が分からない
      • 良質なコミュニケーションと感情は切り離せない
    • フラットな感情はやや不機嫌気味に伝わる
      • 大げさに絵文字や感嘆符を入れる
  • 雑談
    • 情報の欠如を補うもの
    • 毛づくろいのためのコミュニケーション

所感

自分とだいたい同じ考えだったのでとてもよく理解できました。リモートワークが難しいのではなく結局はコミュニケーションが難しいのですよね、やっぱり。リモートでうまくいかないチームは同じ場所にいても結局うまくいかないと思っています。ただ、オンラインでの議論については工夫と前提条件が必要だとおもっていてその辺りは以下に以前書きました。

braitom.hatenablog.com

スクラムチームとして、妨害リスト(Impediments List ) を運用して見えてきた課題解決方法

資料 : 妨害リストを運用して見えてきた課題解決方法 // Speaker Deck

印象に残ったこと

  • 妨害リスト
    • 開発チームの進捗を妨げるものを排除する
    • 明確に定義されているものではない
    • Trelloのボードで運用
      • まずはFactに入れる
  • 登録される例
    • 人やスキルの話
    • 環境に関する話
    • プロダクトに関する話
    • 品質やスタンスの話
  • 何が妨げになるのかを俯瞰できる
    • チームで共通の課題認識を持てる
    • 問題 VS 私たちの構図になる
  • いつも出てくる問題の多くはチームの外にある
    • 前提を変えない限り大きな改善にならない
  • 妨害リストにも透明性
    • 誰でも見えるように
    • チームの外の人にも見えるようにすることで相談しやすくなる
    • 相談するときには経緯が伝わっている
  • 更新されなくなる問題
    • デイリースプリントで聞いてみる
    • 定期的に棚卸しする時間を取る
    • ミーティングで出た課題を追加する
    • Slackなどで妨害っぽいものがあったら追加を促す

所感

梶原さんの話は以前にも聞いたことがありその時も妨害リストの考えいいなーと思いつつ行動に移せていませんでいた...これを機に今度こそ実際に試してみようと思いました。確かに前提となるような問題ってチームの外にあること多いですよね。そのため透明性を保って誰にでも見られる状態にしておくのは大事ですよね。

「ふりかえり」の始め方と続け方

資料 : 「ふりかえり」の始め方と続け方 // Speaker Deck

印象に残ったこと

  • ふりかえりの大前提
    • 心理的安全性があること
    • 時には参加者を選ぶことも必要
  • 状況にあったやり方を選ぶ
    • 何でも感でもKPT使えばよいというものではない
    • チームの状況は?
    • 参加人数は?
    • 何にフォーカスする?
  • 点ではなく戦でふりかえる
    • メトリクスを取る
  • アクションを日々の活動に組み入れる
    • タスクボードに見える化する
    • タスクをする時間を見積もり確保する

所感

ふりかえりってやっぱ難しいなあとつくづく感じました。いろいろ試行錯誤してパターンを増やしてその時のチームや状況に合うものを選択できるようになりたいです。

モヤモヤ女子大生がプロダクトオーナーになったら!

資料なし

印象に残ったこと

  • 専門用語はあえて使う必要は無い。分かりやすいものに変える
    • 非エンジニアからすると横文字ばかり使われるのは何言ってるか分からなくて怖い
  • 自信をつけてもらう
    • 開発者との知識差を負い目と感じてしまう
    • 勉強会などを開催して武器を持たせる

所感

軽い気持ちで参加したのですが学びが多かったです。自信がない状態だとやはり引け目を感じてなかなか自分の意見も言えず前に出て行けないものです。それを打開するために勉強会をするなどして何かしら武器を持たせてあげるということはとても大事だと思いました。飛び抜けている武器を身につけられなくても言っていることが分かるくらいの知識レベルを持たせてあげるだけでも十分なこともあります。若手の成長を考える上ではこのことはとても役にたちそうです。
あと、エンジニア以外の人と話すときに横文字を連呼するのは本当にやめようと思いました。

Panel - 実感駆動でものづくり ー 協調学習過程としてのスクラム。欲しいものを、どうやって知るか。

資料 :

印象に残ったこと

  • 社内政治を攻略する
    • うまく組織をハックできるなら組織にとっても良いこと
  • 金とアジャイル
    • エンタープライズだと年次の予算計画が多い
    • 新規事業なのに計画駆動になる
    • 1年先を予想して予算作る
      • 不確実な情報をもとに
      • 軌道修正が不可能に
    • アジャイルを選択しても
    • 資金調達のタイミング
      • 説明責任単位で資金調達できるとよい
  • 金の話
    • 決裁権限ある人はやっちゃえばいい
      • グレーゾーンわざわざ聞くから黒になる
  • 政治の話
    • 経営層での支援者は必要
    • 角を立てずに波風を立てる
    • 偉い人くらい手玉に取れなければいけない

所感

いやー世の中けっきょく何をやるにも結局は金と政治だよねーと改めて思いました。いくらうまくプロセス回せたとしてもお金がなければ何もできませんし、お金を得るためには政治が必要なわけですしね。

さいごに

はじめてRSGTに参加しましたがとてもよいイベントでした。
なんというかこのイベント自体が心理的安全性が確保されているというかなんというか。多少の失敗があっても笑って許し合える雰囲気がある感じがしました。議論も至る所で起きますし、初参加者でも違和感なく参加できる感じでした。

内容も意識が高まるものが多く、同じ悩みを抱えている人がどのように課題に取り組んでいるのか、工夫しているのかが知れて勉強になると同時に元気がもらえました。
失敗しても死ぬわけではないのでとりあえずやってみる、実験してみるの精神で今年もやっていこうという気持ちでいっぱいです。

運営の皆様、発表者の皆様、参加者の皆様、本当にありがとうございました!来年も参加したいです!

2017年買って満足度が高かったもの

2017年も早いものでもう終わりですね。
皆さんがやっているのを見て自分もまとめておこうと思ったので今年買って満足度が高かったものをつらつらと残しておこうと思います。

iPhone X

www.apple.com

なんやかんやで満足度高いです。ホームボタンがなくなることでどれくらい影響があるのか心配でしたがすぐ慣れました。 今となってはホームボタンがなぜ存在していたのか分かりません。

一番懸念していたのはApple Payの支払時にTouch IDが使えなくなることだったのですが、Face IDでの認証が思った以上に速いので杞憂に終わりました。
Face IDはマスクをしていると認証しないからイケていないと思う方もいるかもしれませんが、マスクをちょっとずらせば認証できますし、そもそもマスクしているときにそんなに頻繁にロックを解除することがないので私は全く問題ありません。

カメラの性能も本当に素晴らしいです。何も考えずにシャッター切ればきれいな写真が撮れます。過去、カメラに定評のある端末をいろいろと試してきましたが間違いなく最高の出来だと思います。

唯一の不満は、ずっとPlus系の端末を使ってきたので画面サイズがとても小さく感じることです。これも慣れればどうということは無いのですが、たまに妻のiPhone 7 Plusを見ると画面の大きさが恋しくなります。

iPhone 8 Plus

www.apple.com

新しいiPhoneを9月に使えないというのが私には耐えがたかったのでiPhone X発売までの繋ぎに買いました。iPhone Xを入手したのですでに手元にはありませんが...
1か月ちょいの利用でしたが本当に満足度が高かったです。

今までのiPhoneの延長で最新型を使いたい方には間違いなくお勧めです。画面の見やすさ、動作のヌルヌルさどれをとってもiPhone 7系から進化していて素晴らしかったです。
カメラの性能も格段に進化していました。子供の幼稚園の運動会はこれだけで挑みましたが全然問題無かったです。

Apple Watch Series 3

www.apple.com

Apple Watchもなんやかんやで全シリーズ使っていますがこのSeries 3はやっとまともなApple Watchになったと感じさせてくれるものでした。

性能がアップしたことでアプリの起動、Apple Payの起動が格段に速くなっています。
Series 2も初代に比べれば格段に動画が速くなっていたのですがまだストレスが残るものでした。それがSeries 3では本当にスムーズに使えるのでストレスがなくなりました。

ただ、デジタルクラウンの赤ぽっちがちょっとダサく感じるのが残念です。今となってはもう慣れましたが。

ちなみに目玉機能であると思われるCellular通信については契約はしたものの一度も使ったことがありません。

Apple Watch Hermès - 38mmケース用ヴォー・スウィフト(エトゥープ)シンプルトゥールレザーストラップ

www.apple.com

Apple Watchのバンドはいろいろと買ってきたのですがちょっと冒険してみようと思い買ってみました。

つけた瞬間に、これがHermèsのレザーか!と感動しました。滑らかさが全然違います。今まで私がレザーだと思っていたものはいったい何だったのでしょうか。それくらいの衝撃。気持ちよすぎてついつい触ってしまいます。

Apple Watchの安いモデルと同じくらいのお値段ですが、今後も長く使えるものなので興味のある方は買ってみるとよいと思います。

Galaxy S8+

www.galaxymobile.jp

私は日本市場で人気のあるAndroid端末の現状を把握するという意味で、毎年GalaxyかXperiaどちらかの最新モデルを買うことにしています。
今回はこのGalaxy S8+を買いました。

画面が大きいのに手に収まるちょうどいいサイズ感、ベゼルレスのかっこよさ、スペックどれをとっても間違いなく今まで使ってきたAndroid端末の中で最高峰のものでした。

ただ、期待していたアシスタント機能である「Bixby」がゴミのような出来だったのが非常に残念です。

iPad Pro 10.5

www.apple.com

久々に大きな進歩を遂げたと感じさせてくれるiPadでした。
120Hzのリフレッシュレートは伊達じゃないです。

Apple Pencilでメモを取りながらの資料読みや技術書読みがとてもはかどります。

Kindle Oasis (Newモデル) 32GB

Kindle Oasis (Newモデル) 32GB、Wi-Fi、電子書籍リーダー

間違いなく過去最高のKindleです。毎日の通勤時の読書ライフの質が格段にあがりました。

防水、ページ送りができる物理ボタン、7インチになった画面サイズ、どれをとっても素晴らしいです。
私は気になった部分をハイライトしながら読むことが多いのですが、このハイライトするときの動作が速くなっていることも嬉しいところです。数秒の差かもしれませんが積み重ねると結構な時間の節約になっていると思います。

Nintendo Switch

www.nintendo.co.jp

言わずもがなSwitchです。
ただ、私はそこまでSwitchのゲームはしていません。

Switchの満足度が高い理由は、子供と一緒にTVゲームができるという機会を与えてくれたことです。

5才と3才の子供も細かいことが分からなくても一緒に遊べます。さすがNintendoさんです。
自分が子供のころにさんざんやったマリオシリーズを大人になってから自分の子供と一緒にできるということはとても感慨深いものです。

Logicool MX ERGO Wireless Trackball

www.logicool.co.jp

ロジクールから久々にでた新型のトラックボールです。M570tを愛用していたので迷わず飛びつきました。

最初はちょっと大きいなと思っていたのですが慣れてくるととても手にフィットします。電池ではなくて充電式になったこともありがたいです。
あと、傾斜を変えられるのがとてもよいです。基本は20度に傾けて楽な体勢で使うようにしていますが、ちょっと気合いを入れたいときは0度にして使っています。これが自分にとっての気合いスイッチとなっています。

Beoplay E8 - B&O PLAY

kanjitsu-boplay.jp

完全ワイヤレスイヤホンです。
昔、EARINが出たときに完全ワイヤレスイヤホンは体験していて残念な気持ちになったので敬遠していたのですが、まわりで買う人も多く、各種メーカーがこぞって出してきたので何か買っておこうということで買いました。結果、買って大正解でした。ケーブルがないってやはり素晴らしいです。

私が完全ワイヤレスイヤホンを使うのは主に通勤時とジムにいったときだけなので音質は捨てました。音質や防水を求めるなら間違いなくBoseSoundSport Free wireless headphonesを買った方がよいと思います。

私が大事にしたのは操作のしやすさと音漏れしないかの2点です。

この機種は横をタップするだけで操作できます。また、外の音が聞こえるようになるTransparencyモードも地味に便利です。話しかけられたときなどに左側をワンタップするだけでイヤホンを外すことなく外の音を聞くことができます。

音漏れについては入念に確認しましたがそこそこ大きな音にしても漏れません。個人的に電車の中での音漏れはけっこう許しがたいのでイヤホンを買うときはこのチェックがかかせません。

ちなみに、イヤーチップを変えるだけで音質やつけ心地、音漏れの印象はだいぶ変わってきます。私はComplyのものをいつも買っています。お持ちのイヤホン用のものを探して買ってみて下さい。

www.comply.jp

なお、長時間の移動時や普段はBose QC 30を使っています。これは去年の発売と同時に買いましたが本当に素晴らしいです。

bbs.kakaku.com

ThinkPad X1 Carbon 2017モデル

www3.lenovo.com

MacメインからWindowsメインに変えようとした年だったのでWindowsノートが必要になったので買いました。勉強会やセミナーなど外に行くときの相棒です。

安定のThinkPadでした。本当に何の不満もありません。この軽さでこの性能、そして何よりこのお値段で買えることがすごいです。特盛りにしてもMacBook Proよりも全然安かったので買うときに本当にこの値段でいいの?と不安になりました。

Apple Watch Series 3の赤ぽっちは許しがたいですがThinkPadの赤ぽっちはやはり最高です。

ヘアードライヤー ナノケア EH-NA99

kakaku.com

Panasonicのドライヤーです。ドライヤーが壊れたのを機に買いました。

髪の毛を乾かす速さが段違いに早くなりました。寝癖がすごいので毎朝頭を洗っているのでかなり時短できるようになりました。

また、我が家は私以外は女性(妻と子供2人)なので、彼女たちは髪の毛がさらさらになると喜んでいました。

常盤珈琲焙煎所のコーヒー豆

tokiwacoffee.com

最後にいきなりガジェットではなくてコーヒー豆です。

家では豆を自分でひいてドリップする派なのですが今年はここのコーヒー豆にはまりました。
浅煎り〜中煎りが好みなので大宮ブレンド常磐ブレンドをメインで、気分次第でその時々のシングル豆を買っていました。

店舗はさいたま市周辺に数店舗しかないのですが通販もやっているようなので興味がある方はぜひ。


最後に

他にもGoogle HomeAmazon Echo、Clova WAVE、HoloLensなどなどいろいろと買いましたが満足度が高いというよりは技術的な興味で買ったものなのでここには載せませんでした。

今年はあまりモノを買わないようにしたつもりなのですが無駄にApple製品を買ってることが分かりました。

来年も経済を回していきたいと思います。良いお年を。

リモートワークを神話にしない実践者勉強会に参加してリモートワークについて考えてみた

リモートワークを神話にしない実践者勉強会というものに参加してきました。
「リモートワークをどう実践しているか学べる場が欲しい」という目的で開催されたとのことです。

forkwell.connpass.com

現在私の所属する会社ではリモートワークは育児、介護などの一部の人だけに許可されています。私も育児の理由で1年半くらい週2でリモートしています。
また、全社員に向けてリモートワークを制度化しようという動きもあったりするので皆さんどんなことで悩んでいるのか知りたかったという気持ちもありました。

セミナー内容のざっくりメモと自分なりの考えをまとめてみます。

内容メモ

トーク - 株式会社grooves

イントロ
  • クラウドエージェント事業部
    • ほぼリモート
      • 月1出社も
    • 完全にリモートと割り切ってチームビルディング
  • Forkwell事業部
    • 週初と、月末以外の日は個人の判断でリモート可
リモートワークの導入まで
  • 一人のエンジニアから始まった
    • 会社に行かなくても仕事ができる状態だからリモートしていい?
  • 上司の不安
    • その人単体では機能するけど周りのメンバーとの関係は維持できるのか?
    • エンジニア以外もリモートしたいって言い出したらどうしよう...
  • まずは週2からはじめてみた
  • 質の高いコードを量産しだした
  • これをきっかけに社内にリモートワークの良さが広まってきた
どう解決したか
  • 大前提となる考え方
    • 付加価値を最大化すること
    • ひとりひとりの裁量、自由度が必要
  • Q: その人単体では機能するけど周りのメンバーとの関係は維持できるのか?
    • A: 向き不向きがある
    • リモートが向く人
      • 能動的である、自律的である
      • テキストでの高いコミュニケーション能力
        • 相手に配慮した会話
        • その上で言いたいことが言える
      • 情報アクセスの容易さ
        • 本人だけが持っている情報もチームの資産
        • 周りのメンバーはその資産にアクセスする権利がある
      • 利他的であること
        • 自分の利益だけでなくチームの付加価値向上にこだわった行動、振る舞いができること
    • リモートする上で払うべきコスト
      • ログを残す
        • 曖昧なものごとも言語化する努力が必要
      • チャットは返答する、スルーしない
        • リモートでも必ず返答があるという信頼感が必要
        • 即レスしろということではない
      • オフラインコミュニケーションの時間を有効につかう
        • オフラインでの関係構築が大事
  • Q: 他のエンジニアがおれもおれもと言い出したらどうする?
    • A: 小さく試して判断する
    • 本人とメンバーが発揮するバリューが落ちないならOK
    • 不公平感 < チームの成果
    • 職種ごとにバリューを発揮できる環境、時間帯が違うのは当たり前
      • バリューが発揮できるかどうかを小さく試していく
その他
  • ツールを使えるリテラシーが大事
    • エンジニアがエンジニア以外の人にもいろいろ教え回っていた
  • ジュニアな方だと育成は大変
    • 中途採用の応募者の数、質があがっているので結果的に教育コストは下がっている
  • 新メンバーが加わったとき、キックオフMTGは対面が有用
  • リモートワークに向いていない人はどうすればいい?
    • トレーニング推奨

LT

スマートキャンプ株式会社
  • リモートワークの立ち位置
    • 従業員の生産性、快適さを追求する取り組み
  • 月一で働き方を考えるMTGしている
  • 開発チームの取り組み
    • 毎日1時間の集中タイム
    • MTGを全て火曜日に
  • リモートワークは水曜日に、リモートワークデー
  • ルール
    • 勤怠はSlackで
    • 勤務時間内はSlackで連絡が取れるように
  • 集中してクリエイティブに開発したい作業を水曜日に持ってくる
  • 実体としては半数は午後から出社して静かなオフィスで開発していたり
  • ノートPCを全員に支給
リンカーズ株式会社
  • 週2でリモート勤務OK
    • 使っても使わなくてもOK
  • MattermostとSkype for Business
    • Slackは使わないでMattermost使っている
      • セキュリティ的な理由
  • コミュ力が高いことが大事
サイボウズ株式会社
  • 半分のチームがリモート
  • リモートワークに必要なこと
    • 制度、風土、ツール

座談会

  • メンバー同士でコラボレーションするときに気をつけていることは?
    • 新人にもやってもらっている。やった後に何が良くて悪かったのかちゃんと振り返ってもらう
    • 成果物だけで評価は難しい
    • サイボウズは市場価値で決めたりしている
    • マインドとかツールではない
      • 情報の整理ができるか。人によって情報の精度は違う
      • 勘で言っているのか何か事実に基づいて言っているのかの判断が必要
      • 嘘をつくことは前提で信頼する
        • 100%事実を伝える人間はそういない。それを念頭に。
  • 過去に起きた問題はある?
    • セキュリティ事故は怖い
    • 不公平感が出ちゃう
      • 不公平感は絶対出るよという前提
        • 育児する人しない人とか。そうい感情は割り切ってもらう
  • リモートに慣れるためにやっていることある?
    • リモートに向いていそうな人をそもそも採用している
    • 最初のチームビルディングは大切にしている
  • オンラインでチーム感を出すための工夫
    • オンラインでゆるいやりとりができるように
      • Slackなどの使っているツールでTwitterみたいな使い方をする
        • timesチャンネルみたいなもの
    • オンラインでも成果を求めればチーム感は自然と出てくるのでは?
  • Linkersではチャット上では議論しないルール
    • チャットはあくまでも報告の場、アツい議論はオフラインで
  • サイボウズはとことんオンラインで議論する派
    • そういうときは収拾させないで燃え尽きさせる
    • 議論をちゃんとするフレームワークは用意している
      • 真実なのか、そう思うというただの考えなのかはっきり分けるように

所感と考え

会社の規模によってリモートワークに対する考え方が全然違うということをあらためて認識できました。会社の規模や業務内容によって仕事の進め方もそうだし、セキュリティ的な話(何を守りたいのか)もだいぶ変わってくるので当たり前といえば当たり前なんですが。
自社でどうしようかと考えてばかりいると、どうしても固定された考えになってきてしまうのでやはりこういう場は必要ですね。

個人的に思っていることをいくつかのポイントでまとめてみます。

評価について

評価方法はどこも悩んでいるようでした。
成果で評価すればいいじゃんって話もありますが成果は職種によりそれぞれ。数字できちんと出せる仕事の人もいるしそうでない人もいる。
サイボウズさんの評価指標に市場価値があるというのはかなり理想的ですが、人事制度を同じように変えるのはなかなか難しいですからね。

ここは結局、評価指標をどうするかがポイントだと思っています。
OKRなどできっちりと自身の役割をマネージャーと認識合わせをして定期的に1 on 1などで振り返りを行うことで、たとえリモートであろうと適切な評価ができるのではないかと考えています。すでにこういう評価が行えている会社はスムーズにリモートワークが導入できるのでないでしょうか。しかしこのような評価ができていない企業も多いはずです。

つまり、リモートワークをやるならマネージャーの意識改革(場合によっては評価制度の変更)も重要になってくるということです。リモートワーク自体の制度を入れることばかりに夢中になってしまいこの大事な部分を忘れがちになってしまっては元も子もないです。

オンラインでのコミュニケーションスキルは大事

「オンラインで文章をきちんと書けない人ではリモートは厳しい」
これはどこも共通認識としてあるようです。

これも話が出ていましたが、リモートワークが当たり前の時代になることを考えると訓練してもらうしかないと思います。
冷静に考えると、相手の文章をよく読み、論理的に文章を組み立てるということはビジネスでは当たり前のスキルではないのでしょうか?
これらができるように努力しないということは業務に必要なスキルの取得を放棄していると見なすこともできると思います。(ちょっと言い過ぎな気もしますが)

もしかしたら一般的なビジネス研修(論理的思考とかそういうもの)の中で「オンラインコミュニケーションのための文書作成術」のような研修が必要となってくるかもしれません。それくらいできて当たり前の風潮にしないといつまで経ってもできる人、できない人の差を埋めることは難しいと思っています。

オンラインとオフラインの使い分け

対面で話した方が細かいニュアンスまで伝わるのは間違いないです。なのですべてをオンラインだけでやる必要はありません。
さらにいうと、オンラインでもテキストだと厳しいがビデオチャットなら意思疎通ができそうという場面もあると思います。

そこで、自分たちの組織でのルールを決めておくことが大事になってくると思います。
「基本はオンラインのテキストでやりとりするが、こういうときはビデオチャットで、さらにこういう場合は対面でやる」というルールを明確に決めておけるとよりスムーズにコミュニケーションできるのではないでしょうか。

オンラインでの議論

この話はとても興味深かったです。
オンラインで議論するのが普通だと思っていたので、議論はオフラインで行い、オンラインは事実だけを報告する場という考えは新鮮でした。確かにこれだと顔の見えない相手と変な読み合いをしながらの議論をしなくて済みますからね。やったことある人は分かると思いますがオンラインでの議論はけっこう頭も体力も使うので。

個人的にはチームビルディングがしっかりできている、かつオンラインでのコミュニケーション能力が高い人が集まっていればオンライン上でも議論は可能だと思います。むしろリモートやる以上そこを目指さなければいけないのではないでしょうか。
そのためにも、サイボウズさんのようにオンラインでの議論のためのフレームワークみたいなものを作って徐々に浸透させていく必要があると思います。

ただ、その状態になるまではオンラインでの議論が空中戦になってきたと感じたら、「ちょっと1回対面で話しましょうか」という方向に持っていくことも必要となるでしょう。

さいごに

自分の考えをまとめていても思ったのですが、やはりリモートワークに対する考え方や仕組みについては正解がないものであり自分たちの組織に合ったものを試行錯誤しながら決めていくしかないと思います。同じ組織でも今はフィットしているが時代と共にフィットしなくなることも十分に考えられます。
働き方やそれにともなう制度を柔軟に変えられないとこれから先はいろいろと難しくなってくるでしょうね。

いろいろな会社の考え方を知ることができ、またリモートワークに対する考えをいろいろ整理できて非常に有意義でした。
主催者の皆様ありがとうございました。

LINE DEVELOPER DAY 2017に参加してきた ~アウトラインメモ~

LINE DEVELOPER DAY 2017に参加してきました。去年は都合により参加できなくなったので初参加です。

linedevday.linecorp.com

参加したセッションのアウトラインメモと所感を残しておきます。中途半端なメモのところもありますがそこはご愛敬ということで。
また、都合により最後まで聞けなかったので最後の方のセッションは聞けていません。

なお、全セッションの資料は以下にまとめられています。

engineering.linecorp.com

※一部、私個人の解釈でメモしているものもあり、発表者の方の本来の意図とズレているものがあるかもしれませんがご了承下さい。

The Technologies in Clova

www.slideshare.net

LINEの新たなプラットフォーム戦略として、クラウド型AIプラットフォーム「Clova(クローバ) 」を開発しています。本発表では、AIプラットフォームであるClovaやスマートスピーカーWAVEについて、ビジョン、アーキテクチャについて紹介します。

内容

What is Clova

  • Cloud-based virtual assistant
    • この頭文字を取ってClova
  • 身の回りにある色々なものに搭載していきたい

History

  • プロジェクトスタートから実は1年しか経っていない
    • 2016年9月にプロジェクトスタート
    • MWC 2017で初プレゼン
    • 2017年8月にトライアルバージョン販売開始
    • 2017年秋に一般販売開始予定

Technology

  • アーキテクチャ
    • BRAIN
    • SKILL
      • 音楽再生、天気情報の読み上げなど
    • PLATFORM
      • 認証認可、ユーザープロファイルなど基盤部分
  • インターフェイス
    • CIC
      • Clova interface Connect
      • ClovaクライアントとClova接続のインターフェイス
      • SDKAPIのコレクション
      • 入力情報をClovaに送る、出力情報をClovaから受け取る
    • CEK
      • Clova Extenstion Kit
      • Clova上でアプリケーションを実行するためのAPI
      • CEKを通してSkillを呼ぶイメージ

今後の予定

  • 認識部分の強化
    • 話者認識ができるように
    • 発話以外の理解
      • 日時の理解、履歴の理解など
  • 開発環境の提供
    • 2018年を予定

所感

Clovaのこれまでの歩みと今後についてとアーキテクチャについての説明でした。

Clovaってプロジェクトスタートから1年しか経っていないということにかなり驚きました。
ハードの開発含めてこのスピード感で行うのかなりすごいですよね。開発チーム大変だったんだろうな...

WAVEの先行体験版を購入して使っていますがやはりAlexa等と比べるとまだ微妙な部分が多いのも事実です。細かいところの精度を上げるよりもまずは市場に投入して評価してもらったりテストデータを集める方が賢明と判断したのでしょう。

2018年には開発環境の提供を予定しているそうなのでそこからがClovaの本番でしょうね。開発環境の提供を楽しみに待ちたいと思います。

Gateboxのこれまでとこれから

www.slideshare.net

"次元を超えて、逢いに来る" 世界初のバーチャルホームロボット Gatebox は、その発表以来多くの反響を呼んでいます。現在初回の出荷に向けて準備が進んでいるこの製品の生い立ちと現在、そしてそれを支える技術と今後のテクニカルな展望、Clovaとの関わりについてお話をいたします。

内容

Gateboxのこれまで

  • 世界初のバーチャルホームロボット
  • 我々は機械的なロボットやスピーカーとコミュニケーションを本当にとりたいか?
    • かわいいキャラクターなら話しかけたくなるのでは?というのが開発のきっかけ
  • 2016年1月にコンセプトムービーを公開
    • 日本より海外からの反響が多かった
  • 2016年12月、1台30万円で限定300台販売
    • 売り切れた
    • 出荷はまだ
    • 今年5月に購入者にプロトタイプを体験してもらった。かなり好評だった

技術スタック

  • ソフトウエア
    • キャラはUnityで実装
    • 基盤はLinux
    • node.jsがメインでGateBoxの振る舞いを制御
    • C++音声認識や顔認識部分
  • Cloud側
    • Azure使っている。Functionsも利用
      • 元MS社員だから...

Gateboxのこれから

  • Clovaとの連携
    • スマートスピーカーはクラウド側から返ってくる音声を読み上げるだけ
    • Gateboxはそれに加えキャラクターがアクションを取らないといけない
    • 自然な振る舞いができるような音声合成をしないとキャラクターの動作が不自然になってしまうのでそのあたりの調整がキモ
  • 国際化対応
    • 海外からの反響も多いのでどう答えていくか
  • スマートフォンと本体をどう連携させるか
    • 外で起きたことをスマートフォンで検知してその出来事にもキャラが反応してくれるようにできれば

所感

Gateboxを立ち上げたきっかけとこれまでの活動、そして今後取り組もうとしていることが説明されたセッションでした。使われている技術スタックについての解説もありました。

Webの記事だけでしか情報を見たことがありませんでしたが、実際の開発者の方の話を聞くと目指している世界がはっきりと伝わってきて応援したくなりました。

音声に加えキャラクターの振る舞いの制御も考えないといけないのは非常に難しそうですがこの製品の肝となる部分だと思うのでいろいろとノウハウ知りたいですね。

また、初音ミクバージョンを初音ミクファンの方に使ってもらったときに「いつもありがとう」とGateboxに向かって話しかけていたという話はかなり興味深かったです。
相手が機械でも初音ミクという実像(たとえポリゴンであっても)があれば人間は感謝を伝えるというコミュニケーションを取ろうとするということ。考えさせられました。

Paying back technical debt - LINE Androidクライアントの事例から -

www.slideshare.net

LINE Android Client の開発は7年目に入り、サービスの拡大に伴いクライアントの実装も肥大化および複雑化してきました。このような状況下で今後も持続可能な開発を行うためには、機能実装と技術的負債の返済を同時に進める必要があります。本発表では、技術的負債を返済しやすいような環境作りとして、我々がどのような改善をしてきたかについて、コード、CI (Continuous Integration)、チームの3つに焦点を当てて紹介します。

内容

  • リファクタリングは難しい
  • 技術的負債を返済しやすい環境づくり
    • Code
      • Kotlin採用など
      • ただ入れるだけではダメ。制限するところは制限する
        • コーディング規約の整備
        • ライブラリの悪用を制限
          • 例) ReactiveXはいろいろな用途で使えてしまうのでラッパーを作って対応
    • CI
      • PRに補足情報を入れるボットを作っている
        • 自動でIssueトラッカーのリンク挿入、APK installコマンドの提示、推奨レビュアの表示など
      • Releaseブランチからtrunkブランチへのオートマージ
        • コンフリクトが起きたらLine Notifyで通知
      • Issue Tracker Police
        • PRには必ず対応するチケットがあるはず。対応するチケットがない場合はマージできないようにした
      • gradle-versions-pluginを利用してライブラリの最新バーションをチェックする
    • Team
      • 文化を変える
      • 知識や技術の共有
        • 勉強会、資料の共有

所感

LINEのAndroidアプリ開発において技術的負債を返済しやすいようにどのような環境を作ってきたのかを説明したセッションでした。

PRを扱いやすくするためのGitHub用のボットを各種自作して利用しているのが印象的でした。
特にIssue Tracker Policeが私は気に入りました。チケットとPRが必ず結びつくようになっていることを自動で徹底できるので楽。こういう仕事は人間がやるものではない。

LINEにおけるBluetoothを活用した取り組みの紹介

www.slideshare.net

スマートフォンの枠を超えたユーザ体験の実現のため、LINEではBluetoothを使ったデバイス連携サービスを提供しています。このセッションでは、LINE Beaconおよびtappiness自販機の事例をベースに、LINEがどのようにBluetoothを活用しているか、注意した点、苦労した点などをお話します。

内容

What is a LINE Beacon

  • BLE使ったBeacon
  • 事例
    • 書店においてLINEマンガと連携
      • そのまま試し読みできる
    • Tappiness
      • 自販機に搭載
      • 双方向通信を使った決済システム
        • LINE PAYで支払える
        • ポイントが貯められる
  • 開発者も利用可能
    • Beaconを検知したらWebhookを送る仕組み

アーキテクチャ

  • 最初はiBeaconやEddyStoneを利用しようとしていたが独自方式でいくことにした
    • その場所だけのサービスを実現したかったため
      • なりすましされにくい物が必要
      • iBeaconなどはUUIDの領域が決められていて独自のセキュア領域を含めることできない
  • 16bit UUIDを利用
    • Bluetooth SIGにお金を払うことで発行できる

Tappiness(自販機)について

  • Line Appがインターネット接続を仲介する
  • Web Bluetoothの仕様を参考にしている

LINE Simple Beacon

  • ラズパイやMacbookをBeaconとして利用できるものを公開した
  • 13biteのFreeのUUIDのスペースを用意
    • ここに好きなデータを載せられる

所感

LINE Beaconの概要と事例を知ることができたセッションでした。

iBeaconやEddyStoneを利用せず独自方式を採用した背景などを知ることができて面白かったです。
自販機のTappinessの仕組みも面白かったです。自販機自体には通信機能を持たせずスマートフォン経由で接続するというのはなるほどなーと思いました。

Line Simple Beaconも面白そうなので何か作ってみようかと思えました。


全体所感

運営方針が本当に素晴らしいと感じました。
参加者の快適性と自社製品のアピールがうまく混ざっていて好感を持てました。

LINEの専用アカウントを活用

  • 受付用のURL含め基本的にLINEで連絡が来る
  • 次のセッション情報や会場の案内などもいいタイミングで通知がくる
    • これがすごい便利だった
  • タイムテーブルや、会場案内図、アンケートなどが全てLINE Bot上で実装されている
    • 自社プラットフォームでできることをきちんとアピールしていて使ってみようという気にさせてくれる

情報提供の速さ

  • 資料が即時アップロードされ、セッション終了後にURLが届く
  • 公式のまとめブログをその日のうちに発信

その他運営全般

  • 会場キャパシティと参加者の数がちょうど良い
    • 混み過ぎでもなく、空き過ぎでもなくちょうどよい快適さ
    • 他のイベントだと混みすぎて部屋の移動もできないことが多いのでかなり快適に感じた
    • どう見積もっているのだろうか?
  • カフェを貸し切って休憩場所にするという方針は素晴らしい
    • 参加者、発表者の交流の場にもなっていて良かった

残念だった点

  • セッション時間がちょっと短いように感じた
    • そのせいか概要レベルのセッションが多かったように感じた
    • もう少し技術的に込み入った話があってもよかったかもしれない
  • 発表がちょっと堅苦しい感じがした
    • おそらく話すスピードとかスライドのめくり方とか細かい指示があったのではと予想
    • そのせいで本来の力が出せていない発表者もいたように感じた
    • 一定のクオリティを保つことも必要だとは思うので難しいことではあると思うが…

builderscon tokyo 2017 2日目 ~アウトラインメモ~

builderscon tokyo 2017の2日目のレポートです。

builderscon.io

1日目のレポートはこちら。

braitom.hatenablog.com


builderscon 2017 tokyo day2

3Dプリンタで作る1次元セル・オートマトン 階差機関 、アナログコンピュータ

speakerdeck.com

  • 階差機関と3Dプリンタ
  • デルタ型の3Dプリンタ使っている
    • 中国語の説明書見ながらつくった(中国語分からないから写真見ながら…)
  • 階差機関
  • 桁上がりの仕組み
    • 出っ張り見たいのがあってそれで分かるようになっている(0-9管理している)
    • 原理的には10進数以外でも実装できるはず?
  • 設計方針
  • 産業革命時代になぜ達成できなかったのか?
    • 精度が足りない
    • 人の問題、金の問題
  • 今の時代ならできるのでは?→そう3Dプリンタならね
  • CADソフト
    • OpenCADだといろいろツラくなってきたのでFusion 360
  • 3Dプリンタの苦手なこと
    • Z軸方向に長いとブレる
    • 摩擦がかかるパーツは苦手
  • 積層型3Dプリンタのつらいところ
    • 浮いているとことは苦手
      • サポート材で対応→しかしサポート材取り除くのつらい
      • 分割しちゃうという手も

所感

階差機関って何ぞや?状態でしたが、図を用いた説明がかなり分かりやすかったです。ぜひスライドで確認してみましょう。
3DプリンタのTipsもためになりました。昔、3Dプリンターでちょっと遊んでいたこともあるのでサポート材を取るのが面倒くさい問題は良く分りますw

階差機関の歯車の仕組みなんて絶対自分では調べない領域なのでとても楽しめました。歯車の仕組みすごい。産業革命すごい。 しかし、昔最先端だったものを現代の技術の力で個人が開発するって面白いですね。

今日から使えるCSS Grid

geckotang.github.io

  • CSS Grid
    • より複雑なレイアウトに対応するために登場
    • Flexboxもあるけどちょっと足りていない
  • グリッドレイアウトを作りやすい
    • CSS側にレイアウト情報を持つのでHTMLがシンプルに
    • Flexboxは縦、横どちらかの整列
    • CSS Gridは縦、横両方の整列ができる
  • ブラウザ対応状況
    • IE10+とEdge以外は対応している
      • IE10とIE11は古い仕様を参照している
        • 使えるけどできないことがある
        • polifillあるけどお勧めしない
      • Edgeは次のバージョンから新しい仕様に対応する
  • CSS GridとFlexboxの使い分け
    • CSS Gridが向いているもの
      • 大きい部分だとウエブサイトの大枠
      • 小さい部分だと縦横に揃える必要のあるリスト
    • Flexboxが向いているもの
  • 参考リンク

所感

CSS GridとFlexboxってどちらかだけを選んで使うものと思っていたのですがそんなことないのですね。同じ画面でも場所によってそれぞれのメリットを理解して適用させていくのが大事ということが理解できました。
使い分けでも紹介されていたように、パターンとしては大枠のレイアウトをCSS Gridで整えて、細かいところはパターンによってCSS GridかFlexboxを選んでいくって感じになるみたいです。
この辺は実際に自分のページレイアウトに当てはめていって試行錯誤しながら学んでいかないと感覚つかめないかなあと思いました。

polyglot になろう !!

speakerdeck.com

  • polyglotって?
  • polyglotだと何がうれしい?
    • ある言語の概念を他の言語に持ち込める
    • 他の言語の経験によってより理解が深まる
    • 2つ目以降の言語はより簡単に習得できる
      • 新しい言語は何かしらの言語の影響を受けている
    • 作れるものの幅が広がる
      • 言語ごとに得意分野がどうしてもある
  • polyglotになるには?
    • やる気と時間
    • 全く別の領域に手を出してみる

所感

感覚的に、確かに初めてのプログラミング言語を学ぶときは「あっ、これはあの言語でいうあの機能に該当するものだ」っていうことがありますよね。そういう感覚をうまく言語化してまとめてくれているなあと思いました。
複数言語を完璧に使いこなすのは難しいかもしれませんが、2つくらい覚えておけばその知識を活かして何とかできる気がします。

しかし、他の言語をやってみようって思うきっかけって何なのでしょうね?
全く別の領域に手を出してみる方法を推奨されていましたが、今の時代どの言語でも結構色んな領域に対応できちゃうのですよね。プロダクトレベルだと無謀だと思いますが個人開発レベルだとそれでもなんとかなってしまうので悩ましいところです。

WEB+DB PRESS 100号記念 特別企画

  • Vol.1~
    • vol.1はJSP徹底入門!
    • vol.2で宮川さん登場
    • vol.3から稲生さん参加
    • 4月の新人歓迎号と総集編が売り上げよくなる
    • この辺りはJavaの時代、特集1は全部Javaだった。使っている言語、これから使いたい言語ともにNo1だった
  • vol.25~
    • vol.27でAjax登場
    • vol.28でRails登場
    • vol.32で大幅リニューアル、連載増やした
    • vol.36、Seasar2によるスーパーアジャイルなWeb開発。この頃Seasar2全盛期
    • vol.43でAWS初登場
    • vol.46、最初で最後のPython特集
    • 時代がWindows中心からLinux
    • XMLが減ってきた(紙面数的にも嬉しい感じに)
  • vol.49~
    • vol.49、仮想化が一般的になってきた。VMware ESXi特集
    • vol.50、Git登場
    • vol.51でRails特集
    • vol.57、Android特集
    • vol.69、GitHub特集
  • vol.73~
    • vol.75、Infrastructure as a code流行ってきた
    • vol.79、Docker登場
    • この辺りは結構最近なので記憶が新しい
  • Q&A
    • 編集部ではどのように技術キャッチアップしてるの?
      • イベントやSNS
      • 著者に直接教えてもらう
      • 自分が知りたいことは記事や本を書いてもらうw
    • ライターの探し方は?
      • 毎号5人から10人くらい新しい人が書いている
      • 記事書いたことある人に頼めばOk
      • 著者経由で
      • 1懇親会1企画を目指していく
    • 「WEB + DB」とは
      • あまり意識していない
      • Webアプリケーション開発のためのプログラミング技術情報誌という中心だけを意識
      • 役に立つなら何でも載せる

所感

技術の歴史を振り返ることができた。 私がこの業界に入ったのは2007年なので自分が触れてきた技術の振り返りって意味もありとても楽しめました。
こう振り返ると、その時代の旬の技術についてはちゃんと情報追えてキャッチアップできてきているのかなーと思いました。
こういう感じで定期的にトレンドの流れを振り返るのは大事ですね。今後何をやればいいのかも見えてくる気がします。

The Evolution of PHP at Slack HQ

  • Slackの開発している
  • DAU
    • 北米、UK、日本の順。日本は結構多い
  • 有償利用者も増えている
  • 急成長しているが、この中生き延びないといけない
  • Enterprise Gridは84社が使っている
  • SlackのコアはPHP使っている
  • PHPはぶっちゃけお粗末な言語、しかし成功しているサービスはPHP使っている
  • PHPの良いところ
    • State
    • Concurrency
    • Programmer Workflow
      • アプリの変更時のフローのこと。PHPはサーバーリスタートいらない、reloadだけ
  • 2015年
    • PHP5 + functional-ish programming
    • OOPは使わない
    • SlackのファウンダーはFrickr作った人。Flickrがこの方法で成功したから同じ方法で
  • HHVM + Hack
    • Speedとパフォーマンス
  • Hack
    • 型チェック
    • Data Structure
  • HackはPHPの欠点をfixしてくれる
  • HHVMへの切り替え
    • Route5とCloudFront
    • Route53のWRRを設定。振り分ける重みを変える。少しずつ実施
    • パフォーマンス大幅に向上
      • レスポンスタイム、PHP : 116ms、HHVM : 62ms
    • 今は100%Hackに変換している

所感

あまり聞くことのできないSlackのサーバーサイド側の話を聞くことができて有意義でした。機能のElectronアプリの話といい本当に貴重な経験でした。

正直、PHP関連の動向はほとんど知りませんでしたが質疑応答等の内容も含めてPHPの現状が把握できた気がします。まさに「知らなかった、を聞く」状態でした。
今までPHP系の情報は全スルー状態でしたがHackは悪く無さそうに感じたのでちょっと意識して軽く情報には目を通していこうと思いました。

全体を通して

冗談抜きで今まで日本国内で参加したカンファレンスの中で一番良かったです。
いつもとは違うことを色々知ることができた、セッションが魅力的だったというのももちろんあるのですがなぜそう思ったのかを簡単にまとめると以下のような感じなのかなと。

  • コンセプトがはっきりと体現されている
    • 「知らなかった、を聞く」がまさに実現されている
    • 本当にいろいろな内容のセッション、つまり様々な分野が得意な人が集まる→つまりは文化が違う人が集まるということ
  • 運営が素晴らしい
    • 参加者への配慮(朝食の用意、アイコン付き参加賞の配布など)
    • 運営メンバーの担当範囲がしっかりしていて色々と運営がスムーズ
    • 変な内輪乗りもなく、かといってかしこまった感じでもなくちょうど良い和やかな感じ
    • 牧さんのアツい想いが伝わってくる

私自身、社内の技術イベントを主催しているのですが実はbuildersconの思想にかなり影響を受けています。前回は都合がつかず参加できなかったのですが今回参加してあらためて「こういうことを目指しているんだ!」というのを再認識できました。
次回は運営のお手伝い等もできればと心から思いました。

本当に最高のカンファレンスをありがとうございました!

builderscon tokyo 2017 1日目 ~アウトラインメモ~

builderscon tokyo 2017に参加してきました。

builderscon.io

参加したセッションのアウトラインメモを残しておきます。中途半端なメモのところもありますがそこはご愛敬ということで。資料が公開されているものはリンクを張っておきました。

※一部、私個人の解釈でメモしているものもあり、発表者の方の本来の意図とズレているものがあるかもしれませんがご了承下さい。


オープニング

  • buildersconはYAPCの直系のイベント
  • Discover somthing new
  • 発見と知識を共有

Desktop Apps with JavaScript

  • SlackでDesktopアプリを作っている
    • チームは4人
  • Windows7だと絵文字とかのサポートがつらいから早くアップデートしてw
  • クロスプラットフォームアプリを作る理由
  • JavaScriptで書かれたアプリはもう世の中にあふれている
  • Electronについて
    • Node.js + Chromium(レンダリングエンジンの部分だけ) + C++(OSネイティブ機能)
    • Main ProcessとRenderer Process間での通信が可能
  • Slackアプリの話
    • Electron、TypeScript、C++
    • 複雑な部分(全体の5%くらい?)はC++使っている。Video Call部分とか。
  • ライブコーディングしながらElectronアプリを作るデモ
  • テストはこの辺り使って行っている

所感

Slackの中の人の話を聞けるなんて本当に良い経験でした。
ライブコーディングが最高でした。Electronアプリの作り方の基本がばっちり理解でき、Electronで何か作ってみようと思わせる非常に良いセッションでした。

SlackではVideo Call部分はC++で書いているといっていましたし、パフォーマンス求められるようなアプリを作るにはやはりElectronだけではダメなんだろうなと思った次第。

なお、ライブコーディングしたサンプルは以下で公開しているそうです。

ブラウザ拡張のクロスブラウザ対応についてどう向き合っているか

speakerdeck.com

所感

私自身ブラウザ拡張機能はいくつか作っていたりするのですがクロスブラウザ対応するという考えは今まで考えたことありませんでした。そういう意味でなるほどなーと考えさせられました。
ちゃんとしたサービスのブラウザ拡張を仕事で作っていないと出てこない考えだよなーと。個人で作ると、正直自分のメインブラウザだけ対応すればいいやってなっちゃいますからね。
自分のブラウザ拡張をクロスブラウザ対応してみようという気持ちがかなり高まりました。

自分でクロスブラウザ対応するためのツールを色々作っているのもすごいですね。便利そうなので使ってみたい。

Haskellを使おう

speakerdeck.com

  • Stack
    • cabel-installに変わるビルドツール
    • プロジェクト間の依存パッケージのバージョン違いを適切に扱ってくれる
  • Stackage
  • Hoogle
    • 関数名、型名とか検索できる
  • 日本HaskellユーザーグループのSlackの#questionで質問受け付けている
  • 本出す
  • I/O処理
    • あんまり得意ではない。が、苦手というほどでもない
  • I/Oモナド
    • PythonとかPHPなどと同等の機能を提供する
    • 入出力、ミュータブル変数、例外
  • do記法のコツ
    • let x = ...x <- ...を使い分ける
    • 冗長でも<-で別の変数に束縛してから使う
  • HaskellではI/Oはモナド
    • モナドを使ったプログラミングが必須
  • モナディックなAPIの読み方
    • 何を提供するモナドか、メンタルモデルを把握する
    • モナドの剥がし方を探す
  • なぜHaskell使う?Goじゃだめなの?
    • GHC使うとパフォーマンスを担保できる
    • Goと比べると型システムが優れていて抽象度の高いコードが書ける

所感

すごいH本を過去に1度読んだだけの私にはなかなか理解がキツかったです…
Haskellではモナドを理解しないとダメなことが良く分りました。モナドが曖昧になっているのでこれを機にすごいH本を読み直そうと思いました。

RDBアンチパターン リファクタリング

speakerdeck.com

  • データベースの寿命はアプリケーションより長い
  • 最近はDBのチューニングはマネージドサービスがやってくれる
    • でも、設計は自分たちでやる必要がある
  • データは生き物、基本的にdeleteよりinsertが多い
  • RDBアンチパターンを見極めるのが大事
    • 不吉な臭いを見極められるように
    • Softwear Designで連載してるから見てね
  • 何をリファクタリングするかはアプリの特徴によって変わってくる
  • データベースリファクタリングはすごく長くなる→戦うための準備が必要
  • 「モニタリングのないオペレーションはテストのないコードと一緒である」→モニタリングは超大事
  • DBを止めるのは難しい
    • 停止時間を限りなく短くすることはできる
    • サービス停止の壁は政治と技術の両方で解決する
  • データベースリファクタリングするだけの価値があるか見極める
    • 意味はあるのか
    • 作業に応じた効果があるのか
    • 今やるべきか
  • 小さい変更を長いスパンで繰り返す
    • 欲張らない、一気にやりたい気持ちを抑える
    • DBは影響範囲が広いので切り分けできるように
  • 金で殴る
    • 金の弾丸
    • DBはお金の力でなんとかなることも多い
  • 1度作ったDBは消せない
  • RDBの知識は寿命が長い
    • 1度覚えれば長く役立つので勉強の費用対効果が高い

所感

過去のスライド等に目を通していたので、内容はだいたい知っていたのですがやっぱせっかくなので生で講演を聞こうと思って参加。プレゼンもうまく非常に楽しませてもらいました。
RDBリファクタリングは技術や政治の力が必要だけど「覚悟」も大事。

しかし、やっぱアプリの要はDBですね。DB知らないでアプリは作れん!と改めて思いました。DBエンジニアの方は偉大だ。

RDBは学習の費用対効果が高いというのはごもっともだと思いました。今をときめく機械学習系のライブラリやVR技術なんかは10年後どうなっているか予測できませんが、RDBが10年後に無くなっているとは到底思えませんからね。


1日目はこんな感じでした。「知らなかった、を聞く」ことができて非常に満足度高いです。 明日も楽しみです。