読者です 読者をやめる 読者になる 読者になる

ボクココ

サービス開発を成功させるまでの歩み

オープンソース界隈で有名人になる方法

雑談

ども、@kimihom です。

f:id:cevid_cpp:20160820012330j:plain

今回 Github を中心とした OSS 界隈で有名になるいくつかの方法やメリットを挙げようと思う。私自身はまだまだ未熟者で、できていない部分もあるので、参考程度に読んでいただけたら幸いである。

OSS 界隈で有名になること

OSS界隈で有名になるとは具体的にどんなことかっていうと、「誰もが使っているライブラリを作った人」になるというのが端的な説明である。Ruby on Rails を作った DHH といったように、人気のOSS であればあるほどエンジニア界隈では知らない人はいないくらいなレベルに到達することができる。やがてそれに関しての勉強会やカンファレンスが開かれたりするようなレベルにまで達することもある。ギークなエンジニアの方々であれば憧れの一つとなるだろう。

んで、そうなるとどんな良いことが起こるかっていうと、自分が目指したソフトウェアを他の皆と作り上げることができるのである。これがソーシャルコーディングってやつだ。自分が欲しいと思った機能をプルリクエストによって他の誰かが作ってくれたり、バグを修正してくれたりするようになる。するといいプロジェクトはどんどんいいものになって、さらにみんなが使われるようになる循環が生まれる。

エンジニアのセルフブランディグとしての究極像だ。転職するときだけでなく、自らの自己紹介をするときに「あぁ、あのライブラリを作った方ですね」と思われるだけで一気に評価が高くなる。スペシャリストとしての信頼や信用が生まれ、特にフリーランスであればプレミアムな方として好待遇となることだろう。

オープンソースの作り方

よくある gem や npm ライブラリの作り方、みたいな方法論があるが、あれは結局最初の一歩を示しているだけであって、具体的にどんなものを作ればいいのかを示しているものではない。

私は優れたオープンソースを作るためには2つの方法があると考えている。

最も良い方法は、「自分のプロダクトの中で機能として分割できるものを分割して OSS 化する」ことである。まさに”副産物”という考え方にふさわしい。んで、これって作る最初の段階からある程度意識して作らないと、コアのシステムとライブラリが密結合してしまって切り出すことが困難になるので注意しよう。最初からモジュールとして分けて作るってのは難しいんだけども、作る前から意識するだけで 良い gem や npm ライブラリを公開できるのなら、検討する価値は十分にある。

2つ目に、新しい言語で他の言語の設計思想に基づいた新しいフレームワークを作ることである。ほとんどのプログラミング言語では Web アプリフレームワークがあるのと同じように、その他のあらゆるライブラリが存在する。例えば 機械学習や統計に強い Python のライブラリを Ruby クローンとして実装すれば、かなり有名な OSS 開発者になれる可能性がある。Python でできるなら Python 使えばいいやんって考える方々がほとんどな中で、それをやることに価値があるのである。今なら、 Elixir の Phoneix フレームワークの Rails クローンなライブラリを作れば、今後有名なOSS開発者になれるかもしれない。プログラミング Elixir も発売されるし!

プログラミングElixir

プログラミングElixir

日頃から発信することを意識しよう

んで、それを作っただけでは、他の誰でも知る機会を得ることができない。てことで、テクいブログをひたすら書き続けるってのが重要なアクションになる。その世界では読者数なんてのは関係なくて、ギークな一部の方々に好かれて読まれるような記事を書けばいいのである。自分の好き勝手に書いていいけど、「書き続けなければならない」っていう使命がある。

それすらもやらないと、いつまでもエンジニアとしての Value を高めることはできないだろう。

そうした日々の情報発信を通じて、いろいろなカンファレンスで発表する機会を得たり、何かの記事を書く機会を得たりすることができる。本を書くって方法もあるね。でもこれらはどうしても一時的な情報発信になてしまうので、やはりブログを書き続けるってのが一番大事なことだと私は考えている。

あとは英語。これは避けて通れない道である。日本語で書かれた Github の README は、日本語に特化した何かのライブラリでない限り誰も使おうとは思わないだろう。てことで OSS 界隈に足を踏み込んだら、真っ先に「英語をちゃんと勉強しておけばよかった」と後悔するパターンに陥る。今からでも遅くはない。私も頑張ってるので、共に頑張ろう。

終わりに

私自身が AWS Lambda を使ったオレオレバッチフレームワークを開発していて、これは他の人にも有用なんじゃないかと思うようになったことがきっかけで記事を書いた。腕の立つエンジニアってのは最初からそういうこと前提でソースコードを書いてるんだろうなぁと一つ思ったことがあって、自分への戒めとして書いている。

以上、自分/仕事へのマーケティングやブランディングとしてのオープンソース界隈で有名になることについての記事でした。

Increments ++ Tech Talk に参加してきた

Rails

ども、@kimihom です。

今日は今をときめく Tech 系スタートアップ Qiita さんにて開催されたIncrements ++ Tech Talkに参加した。個人的に最近 Rals 5 でアプリを作り始めていたのでちょうどいいタイミングでちょうどいいテーマだった。

connpass.com

個人メモなのでかなり端折ってるけどメモ内容を上げておく。

# Rails5
## WebSocket と ActionCable

シームレスなRailsインテグレーション
Rails::Engine をマウントする実装なのでWebSocketサーバーを切り離せる
Unicorn と EventMachine が相性が悪い
スケールを考えるとPuma必須

Rails 側で Channel を作成してJS側で購読
- bloadcast で Channel購読者に配信
- bloadcast_to で個別配信


高頻度イベントにまつわる状態は Redis が向いている
リアルタイムデータを Redis で保存して、永続化(ログアウトしたらとか)にデータベースに保存

## Rails 5 アップデート
attr_protected が使えなくなる
submit_tag の disable_with がデフォルトになる

active_record.warn_on_records_fetched_greater_than
たくさんのクエリ結果を返す時に警告を出す

accessed_fields メソッド
どの属性にアクセスしているかを調べられる
select で限定すればちょっとはやくなる


Drop jQuery as a dependency!!
> これヤベェw

ActiveJob の再実行がよりスマートになった

ActionCable は趣味アプリでどんどん使っていくには面白く使えそうだ。たくさんリクエストを裁くことを考え始めるとまだどうなることやら、といったところ。自分がリアルタイム系のを作るんだったら Firebase か Twilio Sync を使うだろうなぁ。餅は餅屋ってやつ?何でもかんでも Rails でやらせるってのは判断に迷うところである。

Rails 5のアップデートに関しては、自分の本業の Rails アプリは 4.1 から作り始めたプロダクトだからあまりアップグレードは大変ではなさそう。それよりも関連Gem のアップデートの方がまだ安全にアップグレードするには時間がかかりそうな感じである。てことでわざわざ荒削りな レールを渡る必要はまだ特にないかなー。

Rails 5.1 で jQuery なくそうぜ 的な話が上がってるのが個人的には割と困るw 自分のコードだけ無くせばいいって話ではなくて jQuery プラグインもどうするかってのを考え出すと、こりゃあ困ったといったところである。 ただ新しい JavaScript は jQuery っぽい書き方が簡単にできて、もはやブラウザ間の誤差も気にならなくなってきたからという背景があるようなので、それらのライブラリも次第に jQuery に依存しない シンプルな JavaScript ライブラリになることだろう。てことできっと時間が解決してくれるだろう、といったところ。

今は ActiveJob とかのバックグランドタスクは全部 AWS Lambda に投げとばしてるんだけど、 DB絡めるところとかが Node.js で SQL 叩くよりかは ActiveRecord で扱えた方が楽だなぁと思うときはある。てことで ActiveJob の利用はそのうち(いつになるかは不明)検討しようと思っている。

俺と David

今日は DHH に思いを巡らせる日にもなった。この写真を拾い出してきた。ちなみに DHH の左が私ねw この笑顔よ。そりゃ嬉しいよね!

f:id:cevid_cpp:20160819000918j:plain

んで懇親会を話している中で、 Rails が好きなだけでなく、 Bascamp の運営や思想そのものに共感している方々がいることに感銘を受けた。 Rails は スモールチームが適切なシステムを作れるようになるために存在するのである。

このスレッドはかなり面白くて micro serivce についての DHH の考えも言及されてある。

こんな そもそもの "Why Rails" のお話や、「小さなチーム大きな仕事」って本を何回も読んで勉強して Rails でスモールチームで 革新的な Webサービスを作ろうとしている方だったり素晴らしい同志とも言える方に会うことができて嬉しかった。

あとは 各地で開催されている ~~.rb 系の勉強会にも機会があれば参加してみようと思った。割とああいうのって初見が1人で行くのは気が進まなかったけど、やっぱり一人で rails とかで悩むよりかは、それを共有してみんなで解決していく。他の誰かが悩んでいた時は私も考えることができるし. そういったことがコミュニティのより良い関係を築くことができるのだろう。

イベントレポートまでが勉強会ってことで、今回はそんな感じの素晴らしい勉強会でした。

エンジニアの副収入を得る方法の選択肢

スタートアップ

ども、@kimihom です。

f:id:cevid_cpp:20151109120202j:plain

せっかく技術を持っているエンジニアたるもの、その技術を使って何か副収入を得られるようなものを作れたら何といいことだろう。誰にも指図を受けず、自分の作りたいものを作って、それがお金に換わる。そんな夢を目指して試行錯誤していることかと思う。かくいう私も何かしらの副収入って意味でいろいろとトライした経験がある。そんなわけで私が実際に試したそれぞれの方法と結果について記してみよう。

アプリを作る

真っ先に思いつくのはこれだよね。iPhone/Android アプリを作って一発を狙う作戦だ。アプリ開発の経験があるのなら、100万DL くらいされれば広告収入だけでも最低限の生活費は稼げるくらいにはできる。アプリ市場は満杯だと思ってあきらめる必要はない。それと同じくらい人々は個々のアプリを「飽きる」からである。何か新鮮味のあるアプリを作り、人々の心を捉え、拡散できる仕組みを作れば不可能なことではない。

実際のところ、私はアプリ開発が最も副収入としてうまくいっている。大した額ではないが、趣味で作ったレベルで小銭が入ってくるのなら有難いことこの上ない。アプリ開発は、自分のスキルの腕磨きの場として、ある時は仕事で使う新テクノロジーの実験の場として多いに役立つ。

個人でアプリ開発をするのなら、3つのことに気をつけよう。

一つは拡散できるコンテンツを徹底的に考えること。拡散できるコンテンツを用意すれば、ユーザーは Twitter や Facebook でシェアをしてくれる。そのシェアが新しいユーザーを勝手に呼んでくれて、広告費を一切かけずともユーザーを獲得できる。何かアプリで達成感を味わえるような何かは拡散してもらいやすい。まぁそもそも拡散したくなるようないいアプリを作ることは大前提だけども。

二つ目に、定期的に使いたくなるアプリを作ることだ。副収入ってことはクレカ取引とかするようなサービスは作りにくい(クレカ審査で法人登録が必要)。なので広告収入に頼ることになる。てなるといかにユーザーがアプリを開き続けて、その広告を見てくれるかが大事になってくる。1回開いて楽しめば終わり、というアプリや、月に一回くらいしか開く場面が想定できないようなアプリはうまくいかない。"〜する時にこのアプリを開く" という何かしらの理由付けが出来るアプリこそがあなたが作るべきアプリだ。

そして最後に、検索ワードを考えよう。これは1つ目の拡散に近いものがあるけど、たいていのユーザーは AppStore や GooglePlay で何かしらのワードを検索してそれを入れる。当然のことながら上位に来れば来るほど、レビューが高ければ高いほどダウンロードの確率は高まる。ただし、ありきたりなワードでは当然検索にすら引っかからないので、ニッチなワードを徹底的に考えてアプリ検索の最適化を行おう。

以上3つのことを満たしたアプリが一人で作れたら、なかなかいけてる副収入になることだろう。

ブログを書く

次に思いつくのはやはりブログだろう。純粋に自分の勉強したことをブログに書いて、読者が増えて広告収入が入れば良いことづくしである。これはアプリには敵わないし、ある程度上限も決まってるけども、ちゃんと続ければ確実に効果があると言える。

ではブログを書く上で注意すべき点を挙げてみよう。

1つ目に必ず更新を続けることだ。エンジニアが書くブログってのは大抵3年も経てば古臭くで誰も読まない価値のないコンテンツになりがちだ。だから常に最新を追ってそれを試し、ブログに細かくまとめていくことが大事だ。新技術の概要をざっくりと知りたい時に、基本的な内容を知るために検索をする人が母数としては圧倒的に多い。スペシャリスト向けはブログで稼ぎたいのならやるべきではない。

2つ目に収入を目的にしないことが大切だ。いきなり収入目的でブログを書くと、1年経っても100円にも満たないのはザラにあるので絶対続かない。それ以外のブログを書き続けられるモチベーションを持とう。私は人に何かを教えるのが好きなので、今読んで頂いているあなたに「教える」ということを意識することで続けることができている。

私の場合は継続して記事を書き続けてそれなりに読者が増えたとはいえ、収入という意味ではアプリの10分の1くらいだ。ブログを書くってのはその程度と思ったほうがいいだろう。

CtoC 系サービスを活用する

最近流行りの CtoC でプログラミングや設計の相談に乗ってあげて収入を得ることができる。または 外出中に Airbnb で部屋を提供することもできるだろう。新しい働き方として今とても注目されている方法だ。

CtoC 系サービスを幾つか利用している身としては、サービスによってはとても良いものだったりするのでまずは試しに使ってみるということが大事だ。それで自分に合わなかったら使わない。クソなCtoCサービスは退会しても迷惑メールを送ったりしてくるけども、最悪でもその程度なので試してみる価値はある。

ただしほとんどの場合は何かのついでというよりかは、そのために時間を割く必要が出てくるのでパフォーマンス的には劣るものがある。その分ちゃんと顧客に価値を提供できれば定期的に確実に収入を得られる方法になりうるだろう。基本的にはどのCtoCもレビューの仕組みがあるので、いいレビューをキープし続けるための努力を惜しまないことが大事だ。

何か自分の中で「もったいない」と思えるリソースを持っていて、それを提供できそうなCtoCサービスがないか探してみよう。意外と見つかるものだ。

終わりに

今回はとてもオーソドックスな3つの方法について掲示した。どれもこれも大切なのは「信じて続ける」ってこと。そうしないと評判を生み出せないので、違うことに浮気するといつまでたっても探し続けるような感じになってしまうだろう。

副収入を得るってことは社会的にも勉強になるし、実際の仕事にも活きてくる。自分に合った方法で頑張ってみていただきたい。

Rails5 でフロントエンドを綺麗に扱う方法を考えてみた

Rails

ども、@kimihom です。

SMAP解散騒動が騒がれる中、新規プロジェクトとして Rails 5 のプロジェクトで色々と遊んでみている。その中でフロントエンドの部分の書き方で自分なりに答えを出しながらやっているので、そこの方法をシェアしようと思う。

JavaScript の書き方

まず、最近よくあるフロントエンドのツール(BrowserifyやWebpack, grunt や gulpなど)は使わない想定。あくまで Rails の提供する範囲内で 最大限 JavaScript を美しく保つ方法を記す。

最初はapplication.html.erb のレイアウトから。

<head>
  <title>My App</title>
  <%= csrf_meta_tags %>
  <link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.5.0/css/font-awesome.min.css">
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track': 'reload' %>

  <!-- CDN -->
  <script src="//....js"></script>
  <!-- app -->
  <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>

</head>

CDN から読み込む系の JavaScript は、jQuery に依存しない JavaScript コードだけを読み込むようにするのが注意。jQuery に依存する場合はapp/assets/javascripts/vendorディレクトリに突っ込む必要がある。jQuery の読み込みは application.js の方でやるため、順番が後になってしまうからである。それさえ気をつければ CDN は1行で読み込みが完了して楽なので積極的に利用していいと思う。

この方法はシンプルが故の欠点があって、JS ライブラリの依存関係とかそういうのを考えないような設計になる。そのため、今後のアップデートで他のライブラリが動かなくなるんじゃないかとかそういう心配をする方にはお勧めできないのかもしれない。ただ、手軽さで言えば断トツでこの方法だろう。

さて、続いて application.js へ移ろう。これは割とシンプルで Rails 搭載の JSライブラリ、外から持ってきたJSライブラリ、自分のJavaScript ファイルの順番で読み込む感じになる。

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require_directory ./vendor
//= require_directory ./main

続いて個々の JavaScript の書き方。だいたいのイメージがつかめるように、特に意味のないコードを含めている。

let ConsoleCtrl = (function(){
  var localVariable;
  
  function privateFunc() {
    localVariable = "local";
  }

  $(document).on("click", "#console .btn", function() {
    localVariable = "clicked";
  })  

  return {
    publicFunc: function() {
      return localVariable;
    }
  };
}());

いくつか大事な点がある。まず一つ目に(function() {...}()) でくくることで、JavaScript スコープをこのファイル内にとどめるようにしている。結局 Rails は作ったファイルを一つに統合するので、何も考えないでコードを書くと JavaScript のグローバル領域を汚染することになるのだ。function でくくることで、グローバルになるのは、ConsoleCtrl だけになる。そんでlocalVariableを外のJavaScript ファイルから読み込みたい場合は、return で関数を含んだオブジェクトを返すことで対応できる。こうすれば ConsoleCtrl.publicFunc() でメソッドを呼び出すことが可能だ。

そして、 jQuery の書き方は基本的にすべて$(document).on(~~) の書き方になる。これは HTML が常に動的に書き換わるため、ロード完了後のHTMLだけのイベントしか定義できない $("#elem").click(~) の書き方は正しく動作しないためだ。一見動作が遅くなるように見えるけども、何十個もこの書き方をしても、ほとんど速度に関して違和感を感じることはない。

あと最後に、ページを初期化した時に呼びたい JavaScript があった場合にどうするかって話なんだけども、これは jQuery の trigger を使うことで対応している。 Turbolinks にも各種イベントがあるんだけども、全部の JS ファイルに依存するイベントになるので採用しなかった。では実際にどうするのかっていうと、HTMLに triggerを記述する。こんな感じ

<!--  HTML  -->

<script>
  $("#main-ctrl").trigger("main:loaded")
</script>

んで JavaScript 側に通常と同じようにイベントを定義してあげる。

$(document).on("main:loaded", "#main-ctrl", function() {...})

"初期化イベント"っていうくくりで初期化ができるので、割と直感的になっていると思う。

CSSの書き方

これは別に rails 5 に限った話じゃないんだけども、普通に application.css.scss 通りに書くと、変数の読み込みがうまくいかなかったり、Sass をうまく使いこなせていない感がある。てことで、ちゃんと Sass を使う方法として以下のようにしている。

まず application.cssapplication.css.scssに書き換える。そんで以下のようにすべて importでファイルを読み込んでいる。

@import "bulma/bulma.sass";
@import "partials/*";

今回は CSS フレームワークの bulma を使った例。bulma は Sass ファイルのテンプレートを用意してくれてるので、そこに用意されている変数も app/assets/stylesheets/partials ディレクトリ内のすべてのファイルで読み込むことが可能だ。

JavaScript も Stylesheet も、開発時にはキャッシュが効いてしまって色々と面倒なことになりがちなので必ず開発者ツールを起動してキャッシュがかからなくするようにすること。

終わりに

いつまでも Rails のフロントエンドの議論は尽きない。方法は人それぞれだと思うので参考程度にしてみていただけたらと思う。自分のアプリの場合、Gmail のような1ページで収まるシングルページなので、Turbolinks の恩恵はあまり受けないかもしれない。引き続き Rails 5 を触ってみて、Turbolinks 5 や ActionCable などで有用な情報が見つかればシェアしていきたいと思う。

Heroku Dataclips だけで管理画面もどきを作ってる話

Heroku

ども、@kimihom です。

f:id:cevid_cpp:20160809214545j:plain

今回はみんな大好き Heroku の中の Heroku Postgres について。Heroku Postgres を使えば、データベースに関する操作をクラウド上で限りなく簡単にSQLコマンドを実行やデータの移行を行うことができる。

そして今回紹介する Heroku Dataclips を使えば、管理画面っぽいのを気軽に作成することができるので紹介しよう。

Heroku Dataclips とは

Heroku Dataclips とは Web 上で実行可能な SQL 文をまとめられるサービスのことだ。例えば、ユーザーのメールアドレスリストを抽出するリストを予め Dataclips として SQL 文を作っておけば、チームの他のメンバーは SQL を書かなくても Dataclips の URL を知っていれば簡単にユーザーリストを取ってくることができるようになる。もちろんその編集も Web 上で行えるので、何かちょっと条件を加えたいと言った時も専用の pg コマンドなどを打たなくても Web 上で編集が可能だ。つまり誰でも SQL 文の書き方を学べば、ブラウザ上で好きなようにデータをアクセスすることが可能になる。

Heroku Dataclips で管理情報の取得

Heroku Dataclips のおかげで、わざわざ情報表示のために専用の Gem を入れたり管理画面を作っていたような煩わしさからは解放される。Heroku アカウントを持っていれば、ここにアクセスできるかと思う。

私の場合は、何かシステムトラブルが起きた時などでユーザーのメールアドレスを拾って情報をすぐに提供できるように、Dataclips にSQL処理をまとめている。Heroku にログインさえすれば、エンジニアじゃなくてもユーザーの最新情報を取得できるようにした。今までは Rails の rake タスクを heroku run コマンドで実行していたが、こっちならリンククリックで一発だ!

f:id:cevid_cpp:20160809220303p:plain

他にも、参照系だけで済む管理画面の場合は積極的に Dataclips に書き出すようにしよう。Dataclips が増えれば増えるほどサービス関係者は情報を容易に取得できるようになる。みんなが SQL を学べば、誰でも欲しい情報をいつでも取ってこれるような環境を実現することだってできる。

ところでRails で書くと 複雑に入り組んだ長い SQL を書くなんてことはあまりしなくなるのだけども、生 SQL は頑張って出力したい結果が出せた時の喜びがあって良い。パズルみたいに組み合わせて作り上げられるのが SQL の面白いところだよね。

ちなみに作った Dataclips の URL の末尾に .json の拡張子をつけるだけで、JSONの結果を返すこともできる。API のモック用のレスポンスとしての使い方を想定しているみたいだけど、そんなのやるくらいだったらちゃんと API のコードを書いてからやればいいだけだと思うので、個人的にはあまり利用しないかなといったところ。

Dataclips の注意点

注意点として、 Free と Hobby プランの Heroku Postgres にはユーザー認可の仕組みがないので、URLを知っている人なら誰でもアクセスできてしまう点がある。なので機密情報を Dataclips としてまとめたいなら、 Standard 以上のプランに上げる必要がある。$50 にすれば Hobby に比べて一気にできることが増えるので、それなりのサービスを運営しているなら早めに Standard に上げるべきである。

終わりに

管理画面の作成に時間をかけるくらいだったら、ユーザーの価値あるものの開発に時間を注ごう! 管理画面は Dataclips などの ツールを駆使していかに手軽に早く欲しい情報をゲットできるかの勝負だ。そこに HTML や CSS などで調整するなんてことはそもそも必要ないはずだ。更新処理などもできるだけ rake タスクなどで自動化し、コマンド一発で更新できるようにしよう。

てことでこの後やるべきことは、 Heroku Postgres を使っているなら早めに Standard に上げて、Dataclips をどんどん作っていくってことだ。

スタートアップはユーザーが儲けられるサービスを考えよう

スタートアップ

ども、@kimihom です。

今回は新しくサービスを作る上でとても大事な考え方についてシェアしよう。

誰かが欲しいサービスを作るという罠

皆さんはサービスを考える上で何をベースに考えているだろうか?きっと、自分や誰かが欲しいと思うサービスを考えていることだろう。その人が欲しいと思うなら、他の誰かが欲しいものという考え方である。確かにその方法は"ニーズ"という意味ではそれなりに満たす可能性があるものの、マネタイズを考えるとダメなパターンになるケースが多い。

なぜユーザーはお金を払ってまでそのサービスを使いたいのか。 これが抜けているケースが多く、たとえそれなりにユーザーを獲得したとしても、資金が底を尽きて終了してしまうサービスが後を絶たない。

んで、私も同じように常日頃からサービスのアイディアを考えてきてはいるんだけど、うまくいっているサービスの共通点として、最近ある一つの真理を見つけたのよね。

ユーザーが儲けられるサービスを作ろう

ユーザーが儲けられるサービス。最近のうまくいっているサービスってのはこれが本当によくできているものなのだ。こういう時にたいてい例に挙げられる AirbnbUber 。これも結局は泊まる旅行者のためのサービスではなくて、自分のリソースを売って儲けられることのできるサービスだからこそ、成功したのだと仮説を立てられる。んで、それが本当に誰でも儲けられるサービスであればあるほど、イノベーションというくらいの大変化が起きるものなのではないか。Airbnb は空き家があれば誰でも儲けられるし、Uberはドライブしていれば誰でも儲けられる。日本ではメルカリなどが例としてあるが、それも商品を持っていれば誰でも儲けられる。

サービス成功の可否を見極める最終的な軸として、

  1. 儲けの費用対効果が高いか
  2. ユーザーが簡単に儲けられるか

の2つを見ると良い。1はマストで満たしていなければならない。これがないサービスは失敗する。2に関して言えば、社会を変えるレベルを目指したいのであれば馬鹿でも儲けられるくらいのサービスを考える必要がある。

ではなぜそれが大事なのかっていうと、儲けられるからこそ、その人たちがサービスを仕事として広めていってくれるからである。彼らはサービスの"営業"や"マーケティング"担当者として、運営側がお金を払わずとも勝手に広めていってくれる。簡単に儲けられれば儲けられるほどその熱狂度合いは増し、社会を変革するサービスが生まれるのである。だからもしあなたがシェアリングエコノミー系の CtoC 系サービスをやろうと考えているのであれば、徹底して儲けられる側のメリットを考え抜くべきである。簡単に誰でも儲かるのであれば、そのサービスの成功の見込みは生まれる。その儲け方が誰でもパッと分かれば分かるほど、広く普及する。ちょっとでも小難しい感じの儲け方だったり、儲けがだいぶ先であったり、ボランティアや何かのついで目的で儲けられる程度のサービスは大成功はしない。

さて、 CtoC だとパッと見て説明しやすいのだけど、 BtoB プロダクトの場合も同様であることを説明したい。例えば私の運営する CallConnect を例に挙げよう。これは電話窓口をクラウド上で簡単に構築できるサービスである。基本的に使って頂くユーザーが月額課金で支払うモデルとなっているが、それを払ってまでして使っていただけるのは、電話窓口を設けることで最終的にその費用よりも "儲かる" からなのである。電話窓口を設けて効果的に対応できるようになれば、メールよりも問い合わせが上がるし、獲得の角度も高くなる。サポートとしての電話であれば、メールやチャットよりも顧客満足度が上がって継続して利用してくれる。さらに従来の電話機やコールセンターよりも人件費を抑えられるので、その分利益が上がることになる。 BtoB でもこの儲けられる度合いが大きければ大きいほど支持を得ることができる可能性が生まれる。

自分が儲けることは考えるな

自分が顧客に価値を提供して儲けるサービスが、たくさんのユーザーの支持を得ることは難しいだろう。 Amazon のような例外もあるけども、結局あそこも Amazon web Services っていうクラウド事業がメインで儲かる会社になっている。ビジネスとしてうまくいくのは、やはりユーザーが儲けられるサービスの方なのである。

自分だけが儲かるってことは、お客さんの呼び込みは自分たちでやらないといけない。お客さんがどれだけそのサービスを気に入っていたとしても、それを呼び込むなんてことは滅多にしない。 Uber みたいに儲けられるドライバーと比べてみてほしい。どう考えても熱狂的に広めていってくれるのは後者の儲ける方だろう?

インターネットサービスってのは概して、何かをサポートするためのツールにしか過ぎない。それだけを使って儲けるってのには限界がある。だからこそ、スタートアップが考えるべきは、100万人が利益を生めるサービス は何だろうというアイディアである。

終わりに

創業者がサービスとしての将来性や社会貢献を主張するのは結構なことだけど、実際にそのサービスを使うユーザーから見た時には、"儲けられる"っていうすぐ目先の利益を掲示できるようなサービス運営が必要である。

逆を言えば、成功するスタートアップの条件はとても簡単に見定められる。自分が儲かるかでなく、使っているユーザーが儲けられるか。ぜひこの視点で新規サービスを考えてみてほしい。

皆さんの成功を祈っている。

夢を追い続ける人生でありたい

雑談

ども、@kimihom です。

今回は生き方についての自分の考え方について語ろうと思う。

趣味に生きる人生

例えば 趣味の旅行、アニメ、グルメ、運動などなど。 楽しいことに打ち込んで、今を全力で楽しむ。そんな姿をよく聞く。初対面とかでは趣味の話は鉄板だ。そして、「仕事は趣味を楽しむためのお金稼ぎ。お金がなければ何もできない」という考えが凝り固まっているような現実がある。お金があれば、今できることが増える。どこへでもいけるし、なんでも買えるし、困ることがなくなる。お金があるに越したことがない。だから楽して金を稼げる方法がないかを追い求めている。

このような考え方はあまり口にする人はいないが一般的なもののように見受けられる。しかし、それだけが目的の人生って短期的な楽しみだけを求めているだけに過ぎないのではないだろうか。その楽しみが終わったら、時間をおいて同じことをやって楽しむ。それの繰り返し。その短期的な楽しみのために日々退屈な仕事をこなして生き続ける。では、そもそもそんな時間やお金が尽きてきたらその人は何を生き甲斐に生きていけばよいのだろうか。いつか何か起こるかもしれない不安と、その不安を拭うための何かとのバランスで生かされている感覚で生き続けなければならない。

夢を追い続けること

夢は常にロマンがある。何かを達成するために日々努力してそのことだけを考え続けられる。

夢を持つことは甲子園を目指す球児たちだけのような特権ではない。誰だって夢を持って追い求め続けることができる。夢を突き詰めれば、ライト兄弟のように空にだって飛ぶことができる。努力の分だけ、夢が叶った瞬間は特別なものになるし、それまでの努力すらも素晴らしいものだと感じることができるのだ。

"それは成功したから言えることだ"、という反論が聞こえてくる。だけど達成するまで努力し続ければいいだけなのだ。だからこそ、努力し続けられる夢を持とう。例えば先ほどの甲子園に出るというのが目標の高校球児であれば、大会に負ければその夢は終わる。そのあと彼らは仕方なく勉強して大学に行き、就職するのだろう。短期的な目標や夢だとそれが不可能となった瞬間、蛇足のような人生を送る羽目になる。その反対に、努力し続けられる本当の夢ってのは、人生をかけてチャレンジできるものになる。そんな夢が持てたら、毎日がスペシャルだ。

夢を持つと、自分の思考や生き方に軸が生まれる。今目の前にあることは自分の夢を実現できるものなのか、そうでないのかを判断できるようになる。いうなれば取捨選択できるようになった状態とも言える。軸がないと、いろんな人たちの誘いに乗ってしまい、自分でもいったい何がしたいのかわからないような人生を送ることになるだろう。多趣味の人ってのは大抵そういうパターンだと私は思っている。あれもこれもと手にとってしまった結果、何も輝くものを持てない特徴のない人間になる。そして常に短期的な楽しさや利益だけしか見えない思考になってしまうのである。

笑われるくらいの夢を持つことの素晴らしさ

他の人から「そんなの無理だよ」と言われるくらいの夢を信じられる人ってのは本当に素晴らしいと思う。私はつい先日久々にニュースを見て、感心したものがある。

www.asahi.com

13年だ。13年も空を飛ぶ瞬間を目指して作り続けた方がいるのである。夢が実現したその瞬間はもちろんのこと、それに向かって努力し続けた13年は素敵な人生だったと本人はきっと感じていることだろう。13年という長い月日をかけて成功するまで続けた成功だと言える。これこそが本当の夢である。

実現したところで何?とほとんどの人はそう思ってチャレンジしようとすらしない。でも彼は絶対作るんだという夢を持ち、信じ続けたことで彼にとって最高の結果を得ることができた。本当に素晴らしいストーリーだ。

あなたの夢は何ですか

その場しのぎの趣味に生きる人生か、夢を追い求める人生か。たった一度の人生をどっちの方針で過ごしていきたいかは人それぞれだと思う。

私は夢を追い続ける人生でありたい。それが自分の人生を豊かにするものだと信じて。