2015年9月26日、
オープニングトーク(DJ HIGAYASUWO)
Seasar2のオリジナル開発者でもあるDJ HIGAYASUWO a.
なぜSeasar2をやめたのか
冒頭から、
「技術は、
比嘉さんは当時、
「明日は今日よりも成長したい」、
ユーザも先ほどの問題と似たものを抱えています。フレームワークを使い始めると最初は学びが多くても、
Seasar2からの卒業
ユーザへの思いを告げた後、
他の環境に移ってほしいと思いながらもサポートを打ち切らなかったのは、
比嘉さんからはSeasar2の新規開発中止の時期から、
- ※)
- Seasar2のサポート終了については比嘉さんが自身のブログで今後の方針などについて記事を書いています。詳細については当該記事や公式サイトなどをご確認ください。
会場との掛け合い
これまでのいきさつをまとめ、
まずは、
「比嘉さんはアウトプットが大事だと言っていますが、
これに対して比嘉さんはこのように答えました。
「実際にはその後もアウトプットは続けていました。ただ、
Seasar2の開発ストップとともに比嘉さんの業務の関係もアウトプットが減った一因となったようです。
続いて、
「実はSeasar Conferenceの今回の立案者は自分ではない。企画してくれたの橋本
「きっかけは飲みの席での話題ですね。そこからこのカンファレンスが始まりました」
開催のきっかけが伝えられたところで、
「今の話を受けてSeasar Conferenceとは何だったのかを、
当時は、
そんな中で優秀な人がどんどんコミッタに集まってきました。そこで企業が技術力のある人たちを求めて採用を行い、
一方で、
こういうカンファレンスの場で人材を見つけることは良いことだと思っています。Seasar Conferenceにはそういう面があり、
ちょうど今紹介されたビープラウド代表佐藤治夫さんから
「2004年以降、
重視しているのは
2005年ごろからRuby on Railsが流行り始めました。それは、
ほかの人も欲しい、
素晴らしいアイデアが使われるというわけではありません。使われるものが良いもの。アイデアの時点ではそこに優劣はない。使われるかどうかが問題です」。
最後に、
「Seasar2は比嘉さんが所属する企業のビジネスに組み込まれ、
これに対して比嘉さんは次のように答えました。
「まず、
その上で、
さらに星さんからは
継続的インテグレーションの過去・現在・そして未来~ヌーラボの事例と共に考える~
続いて、
ヌーラボの過去・現在・未来
ヌーラボは、
そんな中、
そして現在はPRベースCI、
GitHub+Travis CIというならこのあたりも簡単に実現できますが、
このコード化に使うのはDocker、
ここで、
- 昨今のCI as a serviceの人気
- Jenkinsの自前運用はコストが高い OSSであるせいかUIなどもわかりづらいところがある
- 設定の複雑化に伴って生まれた*jenkinsj職人*の排除。ビルド職人からJenkins職人の登場
- 運用コストの高さ
- Jenkinsでもある程度は活用可能、
JenkinsでもEC2 pluginなどを活用して必要な時に手軽にスレーブ構築もできる - それもつらいなら全部外部サービスにする手も
- 設定の複雑化にはどう対処するか
- Workflow Plugin
- DotCI
つまり、
CIツールの振り返り
ここで、
まず、
そして効率的に利用するフェーズに突入しTravis CIやcircle ciなどより手軽にスケールしやすいサービスが生まれました。
プロジェクト、
ヌーラボのCIは今後どうなる?
最後に、
Dockernizeを進めていけば移行時にも無駄にはならないと睨んでいるそうです。また、
ただし、
まずは状況に応じた利用・
SmartNewsとBacklogの作り方
続いて、
まずはSmartNewsの浜本さん、
ヌーラボ橋本さんはプロジェクト管理ツールとして人気のBacklogの作り方を解説します。ヌーラボは作図サービスのCacoo、
はじめ
- 比嘉:
一番最初はクローラから入って、
ニュースアプリに移行したと聞いていますが、 なぜニュースアプリに移行したのでしょうか。 - 浜本:
もともとはクローラーを作るのが趣味でした。最初はAsk you、
その後は食べログ、 次いではてななどのクローラを作りました。その結果、 次第に興味がジェネラルな対象に移っていったのです。それに伴って情報、 ニュースへの関心が高まり、 「新しくて役に立つ情報がWebの広範なクロールで獲得できること」 に気付いたのです。 - 比嘉:
個人的な興味でクロールをはじめたそうですが、
その部分の影響は大きいですか。 - 浜本:
Twitter APIをかなり使っていました。そこからソーシャルグラフを作成し、
関係性の強いツイートを選別、 その中のURLをまとめればより個人に特化した情報を集められるという発想がありました。 - 比嘉:
SmartNews開発の裏側の体験談として、
「プログラマとしては適切な情報を集められる、 いらない情報のないニュースがないほうが良いと思っていたが一般受けしなかった」 という話を聞きました。実際はどうだったんでしょうか。 - 浜本:
その問題について、
実はSmartNews前に、 ユーザテストから 「個々人向けにフィルタした情報」 にあまり価値がないことはわかっていました。パーソナライズされた情報を重要だと以前は思っていたのですが、 その発想のもとで失敗した経験があります。そこから情報のうち 「共有できる関心ごと」 が重要なことに気付いたのです。パーソナライズ志向からの180度の転換ですね。ノーパーソナライズで既存の技術を応用してSmartNewsが生まれています。 - 比嘉:
スタートアップ企業が方向転換すること、
いわゆるピボットすることはよくあるケースですが、 そこで難航するのも事実。なぜそこでうまく転換できたと考えますか? - 浜本:
内部的な話になるのですが、
当初、 情報のパーソナライズ度合いを設定できるシステムを作っていました。そこでパーソナライズ度を一番薄い状態にしても面白い情報が入ってくることに気づいたのです。 今までの考え方とは異なりますが、
そこで表示される情報もよくできていたように思います。私はシステムのパラメータチューニングを自分で細かくやるのが好きです。また、 機械学習で最適なパラメータを決めることは初期段階では難しい、 その時点でのベストな解を導く (チューニングする) 必要があります。そこの過程でパーソナライズしない部分の良さを見出したのです。 変化の余地をあらかじめ残しておいたというのは他の多くのスタートアップとは違う点かと思います。パーソナライズでの局所最適のことを考えていましたが、
実はそのもっと外に大局解があったのです。ノンパーソナライズの世界の良さに気づけました。 - 比嘉:
UI変更や機能の選択はどうしました?
- 浜本:
たとえば、
SmartNewsは朝刊・ 昼刊・ 夕刊から最新のものを表示し、 かつさかのぼって以前の発行をさかのぼれる機能がありました。昼刊を夕方に表示したことで最新の情報を見たいという反応があったからです。そのロジックはエンジニアとしては理解ができましたが、 ユーザにはうまく説明できませんでした。さらに一歩踏み込んで、 そもそも選択肢がなくていいのではないかという発想に至り、 現在のUI、 そして機能となっています。 - 比嘉:
次にBacklogについて伺います。Backlogは必要性に迫られて作ったものだと聞いています。そこの経緯を聞かせてください。
- 橋本:
Backlogは受託請負の会社だったときにつくったもの。当時、
本社は福岡にありました。東京の仕事を受注して福岡に持って帰ってという形で受託開発をしていました。この東京―福岡間のやりとりをどうするかという問題があったわけです。メールでのやりとりは大変でしたし、 Issueトラッカーもありましたが、 業務用のとっつきにくいものでした。そういった背景から、 共同創業者とその問題を共有でき、 その問題点の解決のために今のようなBacklogが生まれたのです。 - 比嘉:
Backlogの転換点はあるとすればどこ?
- 橋本:
公開のタイミングですかね。Backlogの公開は大きい出来事でした。ソフトウェアというよりも会社としての転換期かもしれません。
「いかにも業務用」 ではないものを世の中に出しました。クラウドへの不信感や提供する会社の規模への不安など、 当初はBacklogは炎上気味であったものの続けてきました。そして今のような形になっています。 そういえば、
炎上といえばSmartNewsも一時期燃えたことを記憶していますがどうでしたか? - 浜本:
圏外でもニュースを読める機能が炎上しましたね。一度は公開停止しようかと思ったのですが、
当時ITmediaの藤村さんが火中の栗のような案件にもかかわらずジョインしてくれました。彼が丁寧に媒体社に、 より良い体験をユーザに提供することなどを解説し、 関係をうまく取り持ってくれて進められました。 そこで助けてもらえたのは、
藤村さんがサービスの意義を理解してくれていたからだと思います。藤村さんは良い意味で衝撃を受けてくれていました。スマートフォンの新しいメディアをつくりたいという思いで動いていたそうですが、 媒体との折衝で難航していたところに折衝なしにSmartNewsが登場したことで大変驚き、 そこで本能的に魅力を感じ、 新しいものがあるのではないかと感じジョインしてくれたという経緯があったわけです。 - 比嘉:
では、
Backlogの炎上はどうやって回避しました? - 橋本:
放置、
です。炎上しましたが結局はサービスは伸びていきました。当時はBacklogに近いことをやろうと思ったらインストールが前提、 ASPで使えるものはなかったことなど人気になる理由がちゃんとあったのです。ものが当たるときは賛否両論にきっちり分かれる。炎上はそういう時の非だったと思います。すぐに使える、 インターフェースの良さがきちんと受けました。 - 比嘉:
Baclogはどんな感じでユーザテストしていますか?
- 橋本:
実はあまりユーザテストはしていません。現場で自分たちが使いながら改善していくスタイルです。社員がUIについてものを言う、
意見のあるタイプが多いので、 自然と多くの意見が出てきます。一方でUIまわりのデザインは社外の人を採用しています。その人はアナログ寄りで、 あまりインターネットに強いという感じではありません。その人に加わってもらうことで、 自分たちだけの視点ではないものができるなどのメリットでした。 - 比嘉:
(インターネットに強い、 弱いで言えば) ダウンロード型ではなくASP型にしたことで受けたと感じています。私の会社でもBacklogを使っていますし。開発者が少ない状態でも使うことは多いですね。気軽にWebで使えるという点は非常に大きいと感じています。なぜ、 ASP型を採用したのでしょうか? - 橋本:
特別な理由はありません。しいて言えば、
パッと使えたほうがいいという意識はあったのでそれを開発担当者が採用。とにかくすぐに使えることというのは意識していたことなので、 ダウンロードはあり得ないという共通認識で進んでいましたね。 - 比嘉:
最初から? 作りながら?
- 橋本:
初期のコンセプトでダウンロード型ではないというのはありました。そうするかどうかでプログラムの作り方も全部変わってきてしまうからです。ダウンロード型だと1社だけで使えればいいということになってしまいがちですが、
ASPの場合、 より多くの人を意識する必要があります。開発当初にその点は意識していました。
- 比嘉:
ピボットというのはよくある話ですが、
この両者は根底にあるものは変えていませんね。 アメリカのイベントSXSW
(サウス・ バイ・ サウスウェスト) で、 無料Wi-Fiが用意されていたものの、 あまりにも人が多くてほとんどつながらないことがありました。SmartNewsはそういう電波のない環境、 飛行機の中でもサービスを深めたというところから生まれてきたと思います。そこで電波なしから物議を生む発想が生まれました。実際に自分たちが困ったところがサービスを生んでいる特徴があるわけで、 それはBacklogも同じです。 スタートアップのだめな例として、
方向性を変えてどれもうまくいかないというのがあります。その要因の1つは、 コアが魅力的なアイデアじゃなくて押し通すことができないということもあるでしょう。 そういう観点で考えた場合、
SmartNewsはたとえばインターネット環境がない場合でも読めるといった機能を削減して出そうという考えはなかったですか? - 浜本:
そういう話ももちろん出ました。しかし、
当時日本では地下鉄に電波が入りませんでした。そうするとほとんどスマートフォンが (情報取得に) 使えなくなります。そんな環境でいくらでもニュースが読めるようになれば、 長期的に業界全体のメリットになるという信念があったのです。そして、 この信念が受け入れられるという確信もありました。藤村さんのジョインでその状況も良くなりました。 - 比嘉:
そこからずっと順調ですか?
- 浜本:
順調にやってきたと思います。昨年、
アメリカ進出も果たしました。これも大きな転換点でした。ただ、 英語化するなど、 アメリカの情報を入力してもらうだけではなく、 現地のスタイルを感じてSmartNewsを作る必要を感じたのです。結果、 現地に何度も足を運び、 拠点も作成し、 現地で採用も行いました。アメリカにコミットして進めました。それがよかったと思っています。 - 比嘉:
Webの情報ではアメリカでもMAUが100万超えと聞いています。アメリカのためにどのようなデザインなど取り入れましたか?
- 浜本:
英語は日本語に比べて一文字の情報量が少ないです
(アルファベットに対する漢字仮名の情報量の差)。同じスペースに情報量を詰め込むのは不利になります。そこで、 なるべく、 大きめの面積でニュースセルを表示して対応しました。 - 比嘉:
なんとなくユーザテストは海外に行かないとだめというイメージがありましたが、
そういう方法があるのはおもしろいですね。 - 浜本:
アメリカではCraigslist、
3行広告が人気です。短い文言で、 簡単な依頼をする広告。これを使ってテック業界やネット業界とつながりのないユーザを集めてテストできますね。 - 比嘉:
Backlog、
あるいはヌーラボの海外進出についてはどう考えていますか? - 橋本:
ヌーラボはソフトウェアファースト。ある程度狙って英語版は出していましたが、
基本的にはユーザがどんどんソフトウェアに対して増えていくという形。ユーザの分布やユーザがいる地域のテック関連の発展具合、 あるいは海外の現地スタッフなどを活用してそのあたりを見ながら海外については考えて進めています。 - 比嘉:
SmartNewsでは現地の人を考えてチューニングをしていました。ヌーラボは?
- 橋本:
ヌーラボではしていませんね。ただし、
スタッフとして海外在住者を採用しています。そうするとそこのスタッフから要望出てくるので、 その調整をします。あまり海外向けのチューニングを強めにやっているとは言えませんが、 採用の仕組みなどから海外の声が入りやすくなっていると思います。 - 比嘉:
SmartNewsはスタートアップの典型のような山あり谷ありで今の成功、
ヌーラボはのらりくらりという感じで対照的でおもしろいですね。 - 橋本:
のらりくらりとは会場に現場のスタッフもいる手前、
言えません (笑)。仕組みをどの程度整えるかという観点はありますが、 社員内でのフィードバックも多く、 ユーザフィードバックは積極的に取るユーザボイスやユーザミーティングなどで外の声を積極的に取り入れることができるようにやってきています。 - 比嘉:
最後にSmartNews、
Backlogを作った2人から、 プロダクト作る人向けのアドバイスやそれぞれの募集する人材について教えてください。 - 浜本:
個人的な経験として、
作ってる側のプロダクトへの目と、 ユーザの目は全然関係ありません。思い入れも理解もないユーザの目はまったく違います。あとになって、 自分の、 作る側の思い込みに愕然とすることがあります。自分としてはどれだけ客観的になろうとしても、 自分が思い入れを作るものにはバイアスがかかるからです。まず、 そういう開発者バイアスを減らしていかなれければいけないと思っています。それは今も苦しんで試行錯誤しているところですね。その解決法として、 ユーザテストというやり方もあります。 また、
ほかのプロダクトを触って自分たちが作っているものとの比較もしなければなりません。たとえば、 街中を歩いている人たちのスマホ利用を観察することも役に立ちます。ファミレスで、 女子高生の雑談からアプリ利用の方法を聞くなんてこともできるわけです。とにかく、 自分の感覚じゃないものを取り入れる努力をしていくことが必要です。プロダクトへの冷静な目を持てるといいと思います。 弊社が募集する開発者のタイプはプロダクト志向です。触ることのできるもの、
それがサービスと比較したときのプロダクトの意味合いだと思います。我々ならスマートフォンのアプリ、 ユーザインターフェースがそれ。サーバーサイドであってもその意思決定がユーザに届く部分がある。その届き方の違いがちょっとだとしても、 ユーザが受ける感覚は全然違います。その繊細な意識ができる人は貴重なので、 そういう人を歓迎したいです。 - 橋本:
開発者にとって大事な点が3つあります。
- おかしいぐらい夢中になっていること
- 冷静な分析
- 素早い判断
浜本さんのことは以前から観察していて、
おかしいぐらい (一つのことに) 熱中しているなという印象を持っていました。SmartNewsのUI変更のときは完全に目がいってしまっていたように記憶しています (笑)。2人で飲んでいたら、 突然周りにいる見ず知らずの人にアプリについて意見を聞くなど突飛な行動を始めたりもしました。でも、 それぐらいの熱中度があるといい。ただ、 その熱中度が開発者バイアスのような悪い影響を生むこともあります。そこで冷静に分析すること、 その分析からさらに素早い判断を下すことがまわせれば良いわけです。それは実際に作るところの話ですね。さらに売るところの大変さもあります。今回はそこまで話せないので割愛します。 ヌーラボは今は人材募集は行っていないので、
募集についてはとくにありません。 以上、
SmartNewsとBacklog、 2つの日本発のプロダクトを開発したエンジニアの生の声、 そして、 プロダクトに対する思いを聞くことができるセッションでした。
もちろん端末サイズで切り替えますが、
Javaプログラマー向けGoガイド
次はAbby代表取締役米林正明さんによるJava経験者向けのGo言語解説のセッションを紹介します。ちなみに、
1年間、
JavaからGoへ - その文法
まずはGoの言語的説明から。GoはC言語に近くLLではありません。Javaと比較するとJava
まず、
また、
interface、
Goの作法
言語仕様から少し離れたGoの特徴について。一般に配布には必要ライブラリを含める必要がありますが、
次にテストについて。Goを数万行書いた米林さんですがその半分以上はテストだと言います。JavaはJUnitが基本でAssertを実行しますが、
コード整形でもGoには特徴的な文化があります。IDEまかせのJavaに対して、
今まで述べてきた事柄について基本的には違和感を抱きつつも落ち着きつつある米林さんもGoによる依存関係まわりだけは気になっています。JavaではGradleやMavenが担う領域である依存関係の管理ですが、
最後に
一通りのJavaプログラマー向けのガイドを終えたのち、
最後にJavaユーザにGoは向いていること、
現在最も話題の言語の1つであるGo。この講演で利用への興味が増した人も多かったのではないでしょうか。
まとめ
Seasarのサポート終了告知から始まった波乱のSeasar Conference 2015でしたが、