後輩とリモート開発配信した

なんでやったのか

動画配信とかやりたかったからです

作ったもの

まだ未完成だったりリポジトリにCredentialsがはいりっぱなしだったりするのでソースコードの公開はまだですが、 ざっくりいうと tech.speee.jp のリメイクです。 そこそこ評判は良かったのですが、スコープ制御がザルな所が気に食わなくて開発モチベーションが上がらず、何もしないでいたのですが、なんか良さそうな実装案がでたので、今回はそれの開発をしました。

後輩について

twitter.com

オタク。 前職の後輩で、歳は4つぐらい下。私と同時期に転職、現職も会社は違うが私と同業種。オタク。 f:id:anoChick:20180219024024j:plain

21時、配信準備をする

当初は、macでスクリーンキャプチャをする感じで,OBSというソフトウェアを使って動画撮影だけしようと思っていたのですが、通話音のとり方がよくわからなくて、sowndflowerというものも試してみたりもしたのですが、結局うまく行かず断念しました。このあたり詳しくないので誰か教えてください。

通話自体はGoogleハングアウトで行っており、ちょっと調べてみたらGoogleハングアウトやりとりがそのままYouTubeに配信出来たので、「それじゃあもう配信しちゃって、あとでアーカイブされた動画を編集したらいいか」ということになり、そのままGoogleハングアウトをYouTubeに配信していました。

22時、配信開始

配信を開始し、まずディスカッションをはじめました。 といっても、何を作るかとざっくりとした仕様についての方針を決めたぐらいで、 その後は雑に設計議論・調査・実装をしていました。 一度配信を止め休憩をはさみましたが、基本的にはずっと作業をしていました。 明け方の4時頃になって、脳みそが全然働かなくなったのを感じたのでそこで配信を止めました。

良かったこと

進捗がよい・相談のしやすさ

そもそもリモートで互いの画面を配信しつつ、通話で共同開発するっていう体験をあまりしたことがなかったのですが、 二人で作業していると、解決までが速いように感じました。

常につながっているので、会話コネクションの開始・終了が無いように感じられる事が相談の障壁を下げていて、その結果として問題解決スピードが早くなったんじゃないかと思いました。

話すことはたくさんある

ゲーム実況や雑談は、何を話したら良いかわからなくなることが有ると思うんですが、 開発配信となると、ものを作る為に必然的に議論が発生するので、「面白いこと言わなきゃ」とか考える必要がなく、ただ作ることだけ考えていれば良いというのはやりやすかったです。

なので、音声コンテンツとしては結構可能性を感じました(万人が面白いと感じるかは別として)

良くなかったこと

観てて面白く無さそう

音声はいいとして、画面が全然映えないです。 ゲーム開発とかしたらまた違うのかなと思いました。

観せられないものがたくさん

開発作業って、結構観せられない画面多いなぁと思いました。 - Webブラウザ(GitHubのprivateリポジトリとか) - ターミナル(なにがでるかわからん) - 動作画面(作るものによっては問題無さそうだけど今回はSlackだったのでウィンドウ共有は厳しい) - エディタ(うっかりenvファイルを開く危険性)

というような感じで、安心して映せるウィンドウが無くて、今回の配信では 「envファイルをAtomで絶対に開かないという強い気持ち」だけを忘れないようにAtomの画面を共有していたのが9割ぐらいでした。

コーディング配信をする場合は

  • 動作画面が常に見せられるものを作る
  • Credentialsの扱いをちょっと工夫してティストエディタも常に見せられる
  • 開発環境を別に用意する

とかすると良さそうと思いました。

すごい疲れる

ゲームの実況配信と比べて、すごい疲れるのと、疲れた時の脳死感が結構厳しい感じになります。 トイレに行くとかはありましたが、ちゃんと配信を中断して休憩時間を取ったのは、12時ごろの1回だけだったので、 単純にうまく休憩が取れてなかったのかもしれません。

もしかしたら3人でやったらもう少し余裕ができるかも。

これどうやって動画投稿するんだ

約5時間の動画が出来たわけですが、検索履歴とかが映っていたりもするため、そのままあげることは出来なくて、 かといってこれを編集するのもしんどいので、きっと今回の動画が世にでることは無いんじゃないかと思います。 「30分程度の動画コンテンツとして仕上げる」ということについてはまだ全然考えきれていないので、もう少しこのまま開発配信をやっていこうと思います。

まとめ・次回配信に向けて

開発配信はすごく楽しかったです。色々知見が得られたのと、リモートペアプログラミングの可能性を感じました。

動画コンテンツを作るのって難しいなと思いました。ですがいずれはちゃんとした動画ファイルにして投稿出来るところまでやりたいです。

@miyachikは頻繁に関わっていたり、一番コンテキストが近いエンジニアなのでとてもやりやすかったです。 機会があればまたやろうと思います。

もちろん、それ以外の人ともやってみたいなと思います。 なので、僕と一緒に開発配信してみたい人、いらっしゃったら気軽に声かけていただければと思います。 開発スキルのレベル感は問わず、「プログラミングやったこと無い〜」って人でもそれはそれで面白いんじゃないかと思ってます。

追記:結婚相手も募集してます。

個人ブログでよくない?

入社して4か月。 社内のドキュメント共有ツールが流行ってない。

毎日書いてる人もいるが、利用者がとてつもなく限られている。もったいない。

記事はどれもとても良くまとまっていて、そのまま外部に出してもいいんじゃないかってぐらい。

というか、 個人ブログでよくない?

普通の個人ブログに書けば、世界中の人に見てもらえるし、弊社の一社員として書けば会社のアピールにも繋がる

技術的な話って、一般化して話してしまえば、事業戦略上の都合や、よほど法的に黒い業務内容でない限り公開してしまって問題ないのではないかって思う。

会社の人々に見てもらう機会が減ることもあるかもしれないけど、みんなのブログのfeedが流れるSlackチャンネルを作ればいい気がする。

色んな事情や思惑は有るんだろうけど、 Slackのプライベートチャンネルの存在にあれこれ言うより、社内の"パブリック"な情報を真にパブリックにしたほうがずっと有意義だよきっと。

だからね、ブログ書こ?

今年の目標を立てたのと、月2回の振り返りを実施します。

さっと書く。

今年の目標立てた。3つ。

  • YouTubeでチャンネル登録者数1万人超える

    • 現在0。動画投稿数はたしか1。
  • 年間10本のプロダクトをリリースする。

    • うち3本がゲーム。3本がwebアプリ。あとは好きに。
  • "結婚を前提とした交際"が成立する

    • 現在進捗ゼロ

そんな感じです。

OSSへの貢献」とか「英語力」とか入れるとぶれちゃうので外しました。 エンジニアとしての成長がどうこうというよりは、私生活そのものを重視していく方向性です。

自分の振り返り。

1月末からやります。 毎月2回、15日と月末日のあたりに実施。

その内容は取捨選択

  • 続けること
  • やめること
  • 始めること

を決める。

年始に「漫画読むのやめます」とか言いながらまた読むようになっちゃってるし、 読み始めるなら始めるでちゃんと律する感じに始めたい。 逆に、「毎日○○やるぞ!」系もうまいことセルフコントロールしたい。

そんだけです。

コンテンツを消費しきれない。

あけましておめでとうございます。duenoです。

皆さんは大晦日をどのように過ごしていたでしょうか。

私は、特に予定もなく、リアルで会話を交わしたのは松屋の店員さんに対する「ゴマ(ドレッシング)で」の3文字のみでした。

そんな非リア極まりない一日にも関わらず、私は「忙しくてたまらない」という気持ちになりました。なぜでしょう。それは楽しみたいコンテンツが多すぎるからです。

私は2017年12月31日に、オンラインゲームをしてテレビを見てマンガを読んでYouTubeを観てツイッターをしてSlackをしてAbemaTVを観て文化放送を聴いて松屋で牛とじ丼を食べて最終的にYouTubeでミライアカリの生配信を観ていました。

これだけでわかるでしょう。コンテンツが多すぎるんです。興味のあるコンテンツの生産スピードが人一人の消費スピードを越えてしまっているんです。

私は声優の水瀬いのりさんが大好きなのですが、 20時からは水瀬いのりさんが出演していた [KING SUPER LIVE 2017 TRINITY]がAbemaTVで配信されていました。 そして22時からは水瀬いのりさんのラジオ番組「水瀬いのり「MELODY FLAG」」が放送されていました。 するとどうでしょう。時間的に被るのです。実際かぶりました。 AbemaTVでは水瀬いのりさんがライブの締めの挨拶をしているまさにその時、文化放送では水瀬いのりさんが番組の締めの挨拶「おやすみなせ〜」を発していたのです。当然私は同時に二つの番組を楽しんでいたわけですが、忙しすぎます。

また、23時からはバーチャルユーチューバーミライアカリちゃんの年越し生配信が行われており、 同じくバーチャルユーチューバーのねこます氏は、VRChatで年越しをするとTwitterで発言していました。 さすがにVRChatの世界に入ってしまうと、他のコンテンツが一切楽しめなくなってしまうため、VRChatでの年越しは諦め、 ミライアカリちゃんの生配信を観ながらテレビでは意味もなくNHKを流し、TwitterやSlackで友人や同僚と適度なコミュニケーションを交わしながらの年越しとなりました。忙しすぎます。

そこで私は思ったわけです。

興味のままにコンテンツを消費するのはしんどい

これは大晦日に限った話ではありません。 毎日毎日色々なYouTuberがそこまで面白いわけでもない動画を投稿しており、何となく見漁ってしまいます。 夜眠れないともはや無限に生産されている異世界転生漫画をKindleで購入して読んでしまいます。 はてぶで技術記事をあさっていたはずが、読んでいたのはよくわからないエモい話。性差別だなんだというSNSの一連の流れをまとめたTogetterとかそういうやつ。

本当にきりがない。

あと全然関係ないけど「アグリゲーションサイト」とよばれるやつ、だいたい情報ノイズを増やしているのでムカつく。全然関係なかった。

整理していく

断捨離、やっていこうと決めました。 まぁどうやるかはわからないですけど、Kindleやマンガアプリはアンインストールしました。 情報収集の方法とか、フィルタリングとかは仕組みでかいけつ出来るやつだと思うので、 諸々整理しようと思います。

そして

バーチャルユーチューバーはシロちゃんが一番可愛いと思っています。よろしくお願いします。

youtu.be

しかし、パイオニアとしてのキズナアイさんの功績はとても大きく、キズナアイは人類史に残るレベルのそれになると思ってます。

なんにしても、バーチャルユーチューバーの今後が楽しみです。

「OK,Google. いいニュースを聞かせてくれ」

この記事はWebスクレイピング Advent Calendar 2017の2日目の記事です。

adventar.org

どうも、duenoです。先日転職をしまして、 前職ではそれはもうたーーーーーっくさんWebスクレイピングあれこれをやるような職場だったんですが、 現職ではそういった事、一切やらないです。 まぁでもなんか書こうと思ったので書きます。よろしくお願いします。

OK, Google. ニュース

こう言うと、GoogleHomeは最新のニュースを読み上げてくれるんですが、 今やってみたら某相撲暴行問題の話。 ぼくはそんなネガティブなニュースばかり聞きたくない。いいニュースを読み上げてくれ。

そんなわけで、タイトルの通り、「OK,Google. いいニュースを聞かせてくれ」と言うとポジティブなニュースを読み上げてくれる機能を実装したいと思います。

仕組み

f:id:anoChick:20171202235539p:plain

「OK,Google. いいニュースを聞かせてくれ」 ↓ IFTTTが反応して、cloud functions をHTTPでたたく ↓ ニュースサイトから最近のニュースを何件かスクレイピングする。 ↓ GoogleナチュラルらんげぇじAPIで感情分析。 ↓ 最もポジティブなニュースを読み上げる。

そんなかんじです。

読み上げるのに

anoninoni.hateblo.jp みたいな仕組みを使ってます。

あと1分で今日が終わるのでこれで詳細は後でかきます。

ありがとうございました。

退職したよー

adventar.org

この記事は退職者 Advent Calendar 2017の1日目の記事です。

いまさらになっちゃうんですが今年の10月頃に株式会社Speeeを退職しました。2年と9か月ぐらい在籍していたと思います。 現在は新宿の某社で働いています。

在職中のこと

在職中はずっとデジタルコンサルティング事業部という所にいました。 主に社内システムや、Webコンサル・広告配信に関するWebアプリケーションの運用・開発を行っていました。

自分とディレクターが1名ずつの小さいプロジェクトもあれば、 エンジニアが10名弱のプロジェクトのリードエンジニアを任されたりもしました。 詳細はあんまり話せないやつですが色々経験できて楽しかったです。

Speee社の良かった事

変化のスピードが半端ない

入社当初と比べて、社内の変化がもの凄かったです。

オンプレサーバにPHPでWebシステムが動いていたのが、 ある日を境に基本的にはRubyでやっていくぞ!という方針になり、 AWSをはじめとするクラウドサービスもばりばり使っていくようになり、 ReactもAngularもプロダクションで動くようになっていたり、 なかなかモダンなWeb開発ができるようになったように感じます。

全社でみても、わかりやすい所だとChatwork→Slackの移行だったり、CI・VIの刷新であったり、 変化させる、新しくする労力を惜しまない所はとてもよかったなぁと思います。

代表の個性や哲学が社風に表れていて面白い

話すと長くなるので割愛しますが、 Speee社は「知の共有」について一人ひとりがめちゃめちゃ哲学されていて、個人的に好きなところの一つです。 Slackや、Google AppsKibelaなどのツールを使う事についても非エンジニアの方も含め、どんどんハックしていき改善していく様子が面白かったです。

転職の動機

シンプルに環境を変えたかったというのが大きいです。

ありきたりなフラストレーションを感じ、これはもう環境を変えるしかないなと思ったというだけです。 転職のエモい話とかそういうのは他の方が書いてくれると思います。

ただ、転職の意思を固めるにあたって、「半年後、自分 or 会社がこういう状態になっていたら退職しよう」 というような設定は自分で継続的にするようにしていて、今回その条件を満たしたので転職するに至りました。

あとは、自分自身の人格が会社の環境に強く依存してしまったことがしんどかったです。

普通、職場環境に応じて自己人格をある程度最適化する(演じる)って事は少なからずあると思うんですが、 私はこのオン/オフがなんだかよくわからなくなってしまって、 自分は何者で、何がしたいのか、今一度落ち着いて考えて方針を定めるという事がしたくなりました。

だいたいそんな感じです。

どうやって転職先を決めたか

業種のこだわりはなかったので、基本的には転職ドラフトで活動していました。 ありがたいことに20社弱からの指名をいただき、とにかく色々な会社と面談をさせていただきました。

最終的には

  • 自分が活躍できる環境か
  • 自分が素でいられる環境か

という点を重視して転職先を決めました。 単純にスキルと人格の適合度ともいえると思います。

逆に、

  • エンジニアとして成長できる環境か
  • 責任領域が広く、裁量のある立場か

というところは優先度を低く考えていました。

エンジニアとしての成長というのは、会社に求めるよりは 個人の活動によるものが大きいなと思ったのと、 そんなに常に自由や裁量があっても考える事が増えてしんどいだけだよなぁと 働いているうちに思うようになったからです。 勉強会、Slack、GitHubTwitter等で色々な方と関われるので、 「この会社にいるから全然学びを得られない。」なんてことはほぼないんじゃないかと思ってます。

ちなみに、転職ドラフトのレジュメはかなり時間と熱意をかけて準備したと思います。

最終的に文章を書いたのは5時間程度で、 業務で携わったプロジェクトの話をするのも限界があるので、 今持っている技術をちゃんと入れた個人プロジェクトを用意したりしました。

なので「転職ドラフト参加したいけど話せるプロジェクトないよ~~」って人は個人プロジェクトを公開してそれについて書くとよいと思います。

この後

今年の抱負として「技術を使って自己表現する」的なものを立てたんですが、大失敗しておりまして、というか転職することを第一目標に変えたのでそこまで進捗していない。というのが現状なのですが、そちらのほうやっていきたいと思います。

あと、収入や待遇の話していないのですがもちろん転職理由としてあり、 無事転職も済み、収入にも余裕ができたので来年こそは結婚しようと思います。

そんなわけで、

退職者 Advent Calendar 2017の1日目は@anoChickによる 僕と結婚を前提としたお付き合いをしてくださる方募集の記事でした。

f:id:anoChick:20171127030539p:plain

ありがとうございました。

引き続きよろしくお願いいたします。

Google Home でツイッターをする

新しい職場で開かれたとあるコンテストで入賞し、GoogleHomeを頂いたので遊んでみました。

今回作った機能は下記の3つです

  1. 「OK,Google ツイート {ツイート内容}」と言うと{ツイート内容}がツイートされる。
  2. 「OK,Google リプライ {ツイート内容}」と言うと{ツイート内容}が一番最後に自分に対してリプライをしたユーザのツイートに対してリプライされる。
  3. 自分へのリプライが行われると、GoogleHomeがリプライ内容を喋る。

1.ツイートする

qiita.com

上の記事を参考に、基本的にはIFTTTで実装しています。

「おっけーぐーぐる ツイート 外に出る気力がない」

と言うと以下のようにツイートされるようになりました。

f:id:anoChick:20171015221530p:plain

ただ、これだとツイート内容の単語間にスペースがはいってしまっています。

そのため、Firebase Functionsを経由し、そこで整形を行った後にツイートするというようにしました。

exports.tweet = functions.https.onRequest((request, response) => {
  var postParams = {
    status: request.body.text.replace(/ /g, '') + " - Google Home から"
  }
  client.post('statuses/update', postParams);
  response.status(200).end();
});

f:id:anoChick:20171015221901p:plain

出来ました。

2.リプライする

リプライについても同様に、IFTTTからFIrebase FunctionsのエンドポイントURLを叩き、内部でツイッターAPIを使って最後のリプライを指定、ツイート。と言うような感じです。

f:id:anoChick:20171015224416p:plain

つまづきポイントとしては、IFTTTの音声認識の設定を「リプライ $」とすると認識されづらく、「reply $」でも認識されるようにしたぐらいです。

3.自分へのリプライを喋る

qiita.com

↑を参考にしました。 GoogleHomeを喋らせるようのサーバを建て、発話APIを作ります、 IFTTTをつかってリプライが来たらwebhookによって発話APIを叩くようにします。

こんな感じで、リプライが来ると喋りだすようになりました。 上のデモでは、「@anoChick おk」というツイート内容を発話しており、「@anoChick」の部分を抜きたかったので、この場合に関しても、Ficebase Functionsを経由して整形しています。

結果、下記のような構成に落ち着きました。 f:id:anoChick:20171015223844p:plain

やっぱりIFTTTだけだと痒いところに手が届かないので、Cloud Functionsや AWS Lambda等、を使うといい感じになりそうです。

f:id:anoChick:20171016085637p:plain

こういう独特な言い回しは間違えやすい