tag:crieit.net,2005:https://crieit.net/users/Fujiyama_Yuta/feed
フジワラ@CLOCKの投稿 - Crieit
Crieitでユーザーフジワラ@CLOCKによる最近の投稿
2019-12-06T06:29:41+09:00
https://crieit.net/users/Fujiyama_Yuta/feed
tag:crieit.net,2005:PublicArticle/15584
2019-12-06T06:29:41+09:00
2019-12-06T06:29:41+09:00
https://crieit.net/posts/GCP-AutoML-12
GCPのAutoMLを使っていたら12万の請求がきてしまった話
<h2 id="はじめにGoogleCloudPlatformの運営の方々に感謝"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%ABGoogleCloudPlatform%E3%81%AE%E9%81%8B%E5%96%B6%E3%81%AE%E6%96%B9%E3%80%85%E3%81%AB%E6%84%9F%E8%AC%9D">はじめにGoogleCloudPlatformの運営の方々に感謝</a></h2>
<p>GoogleCloudPlatformのAutoML(AutoML Vison)を使って学習モデルを作っていたら12万円の請求が来てしまいました...。</p>
<p>AutoMLはとても便利で素晴らしいサービスですが、内容をしっかりと理解しないまま使っていると、私のように10万以上の請求が発生します(当たり前)。</p>
<p>今回、私の確認ミスから高額の請求が発生しましたが、Googleg社のご好意で金額調整の適用処理をしていただきました。</p>
<p>本当に感謝を申し上げます。ありがとうございました。</p>
<p>今回の内容についてGoogleCloudPlatform側に公開してよいか確認したところ、構わないとお返事をいただいたので、AutoMLを使った開発者が、今後同じミスに陥らないために、この事案をアーカイブとして、残しておこうと思います。</p>
<h2 id="AutoMLについて"><a href="#AutoML%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">AutoMLについて</a></h2>
<p>AutoMLは、機械学習エンジニアでなくても、高度かつ高品質でカスタマイズされた機械学習モデルの構築が可能なGoogleが提供しているサービスです。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/automl/?hl=ja">AutoML</a></p>
<h3 id="AutoML Visionについて"><a href="#AutoML+Vision%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">AutoML Visionについて</a></h3>
<p>すでにGCPには「Vision API」というサービスを提供していますが、これは事前にGoogleが学習させているモデルを使っているため、まだ学習していない写真・モノについては認識することができません。</p>
<p>AutoML Visionは、ほぼノンプラミングで独自の画像認識モデルを作れ、そのモデルを使ったAPI公開することができるサービスです。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/vision/automl/docs/?hl=ja">AutoML Vision</a></p>
<h2 id="作ったもの"><a href="#%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE">作ったもの</a></h2>
<p>今回はAutoML Visionを使ってウォーリーを探すモデルを作ることにしました。<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/96693052-ff91-b0dc-dcd3-5fb91478bb42.jpeg" alt="10879641157221.jpg" /></p>
<h4 id="元ネタ"><a href="#%E5%85%83%E3%83%8D%E3%82%BF">元ネタ</a></h4>
<p><a target="_blank" rel="nofollow noopener" href="https://gigazine.net/news/20180809-wheres-waldo-finding-robot/">「ウォーリーを探せ!」のウォーリーを最短4.45秒で見つけて指し示すロボットが開発される</a></p>
<h2 id="手順"><a href="#%E6%89%8B%E9%A0%86">手順</a></h2>
<h4 id="1. ウォーリーの素材集め & トリミング"><a href="#1.+%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AA%E3%83%BC%E3%81%AE%E7%B4%A0%E6%9D%90%E9%9B%86%E3%82%81+%26amp%3B+%E3%83%88%E3%83%AA%E3%83%9F%E3%83%B3%E3%82%B0">1. ウォーリーの素材集め & トリミング</a></h4>
<p>ウォーリーを探せを3冊購入。全部で60程のウォーリーの顔のサンプルを取得。<br />
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/12dcf246-2731-1099-ef45-aa11e8ae766b.jpeg" alt="IMG_20191107_213803.jpg" /></p>
<h4 id="2. GCPにプロジェクトを作成しAutoML Visionから「新しいデータセットの作成」"><a href="#2.+GCP%E3%81%AB%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%82%92%E4%BD%9C%E6%88%90%E3%81%97AutoML+Vision%E3%81%8B%E3%82%89%E3%80%8C%E6%96%B0%E3%81%97%E3%81%84%E3%83%87%E3%83%BC%E3%82%BF%E3%82%BB%E3%83%83%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%80%8D">2. GCPにプロジェクトを作成しAutoML Visionから「新しいデータセットの作成」</a></h4>
<p><img width="1274" alt="スクリーンショット 2019-12-05 8.04.09.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/5ac820c0-7567-3e9b-7668-7043948bf769.png"></p>
<h4 id="3. ウォーリーの画像データを整理して投入"><a href="#3.+%E3%82%A6%E3%82%A9%E3%83%BC%E3%83%AA%E3%83%BC%E3%81%AE%E7%94%BB%E5%83%8F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E6%95%B4%E7%90%86%E3%81%97%E3%81%A6%E6%8A%95%E5%85%A5">3. ウォーリーの画像データを整理して投入</a></h4>
<p><img width="908" alt="スクリーンショット 2019-12-05 7.59.52.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/2ee40cc5-200c-e894-2f07-49a31fd578f8.png"></p>
<h4 id="4. マシンラーニング(2時間ほど)"><a href="#4.+%E3%83%9E%E3%82%B7%E3%83%B3%E3%83%A9%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%EF%BC%882%E6%99%82%E9%96%93%E3%81%BB%E3%81%A9%EF%BC%89">4. マシンラーニング(2時間ほど)</a></h4>
<h2 id="できたもの"><a href="#%E3%81%A7%E3%81%8D%E3%81%9F%E3%82%82%E3%81%AE">できたもの</a></h2>
<h3 id="完成!!"><a href="#%E5%AE%8C%E6%88%90%EF%BC%81%EF%BC%81">完成!!</a></h3>
<p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/3e8c43c3-b65e-b276-a652-8520b0befc5e.png" alt="スクリーンショット 2019-11-08 10.02.46.png" /></p>
<p>アウトプットとしては、画像をアップロードすると、ウォーリーのオブジェクトとして認識した位置を予想してくれる画像認識モデルが出来上がりました。学習モデルと同時に、APIを公開することも可能で、これを使い、何かアプリケーションを作ろうと思い、デプロイしたまま放置することにしました。</p>
<h3 id="このモデルを作るためにかかった金額"><a href="#%E3%81%93%E3%81%AE%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%9F%E9%87%91%E9%A1%8D">このモデルを作るためにかかった金額</a></h3>
<ul>
<li>ウォーリーを探せ:3冊 1,485×3= <strong>¥4455円</strong></li>
<li>AutoML Image Object Detection Online Prediction:<strong>¥7,944円(無料枠内なので実質0円)</strong></li>
<li>AutoML Image Object Detection Model Training:<strong>¥4,628円(無料枠内なので実質0円)</strong></li>
</ul>
<p>※ マシーンラーニングについて、正確な時間は残っていないのですが画像60枚で3時間〜4時間だったと記憶しています。</p>
<p><img width="935" alt="スクリーンショット 2019-12-05 8.27.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/72aa6277-094c-6ea6-1bdf-7a4b658bc358.png"><br />
無料枠なのでしっかりと割り引かれています🙌</p>
<h3 id="AutoML Visionの料金について"><a href="#AutoML+Vision%E3%81%AE%E6%96%99%E9%87%91%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">AutoML Visionの料金について</a></h3>
<p><a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/vision/automl/pricing?hl=ja">AutoML Vision料金</a></p>
<div class="table-responsive"><table>
<thead>
<tr>
<th align="left">画像分類</th>
<th>無料</th>
<th>有料</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">トレーニング</td>
<td>40 ノード時間まで無料(1 回限り) </td>
<td>*ノード時間あたり USD $3.15</td>
</tr>
<tr>
<td align="left">デプロイメントとオンライン(個別)予測</td>
<td>40 ノード時間まで無料(1 回限り)</td>
<td>**ノード時間あたり USD $1.25</td>
</tr>
<tr>
<td align="left">will</td>
<td>will</td>
<td>will</td>
</tr>
</tbody>
</table></div>
<div class="table-responsive"><table>
<thead>
<tr>
<th align="left">画像分類</th>
<th>無料</th>
<th>有料</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left">トレーニング</td>
<td>毎月最初のモデル 10 個については、アカウントごとに 1 ノード時間まで無料です。 </td>
<td>以後のトレーニング時間については、1 時間あたり USD $20.00 の料金が発生します。</td>
</tr>
</tbody>
</table></div>
<p><img width="798" alt="スクリーンショット 2019-12-04 12.28.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/c0d2b69d-1523-d0a5-1ceb-68331c7961fb.png"></p>
<p>※ 無料枠のプロモーションクレジットについてはGCPの管理画面からも確認することが可能です。</p>
<h2 id="しばらく経って悲劇は起こった..."><a href="#%E3%81%97%E3%81%B0%E3%82%89%E3%81%8F%E7%B5%8C%E3%81%A3%E3%81%A6%E6%82%B2%E5%8A%87%E3%81%AF%E8%B5%B7%E3%81%93%E3%81%A3%E3%81%9F...">しばらく経って悲劇は起こった...</a></h2>
<p>月末になりGoogleCloudPlatformをの金額が気になり確認してみました...。</p>
<p><img width="551" alt="スクリーンショット 2019-12-02 16.29.44.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/a11a2af5-ad1a-4685-bef1-bf618d2a2cac.png"></p>
<p>...?</p>
<p>桁が一桁増えている...??</p>
<p><img width="663" alt="スクリーンショット 2019-12-02 16.29.53.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/240375e3-c0e5-b9e5-47bc-e0360a670433.png"></p>
<p><strong>...小計 ¥129,306円</strong></p>
<p>ちょっとまってくれ。確認したときは確かに¥7,944円だったぞ...。すぐさま動かしていたプロジェクトを削除しました。</p>
<p><img width="639" alt="スクリーンショット 2019-11-26 13.10.40.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/4bd77785-7d24-26b3-a4d0-caa2628a14b3.png"></p>
<p>月末合計費用(予測)のグラフが凄まじいことに...😭(最初は何かのバグかと思った)</p>
<h3 id="GCPサポートセンターに連絡"><a href="#GCP%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%82%BB%E3%83%B3%E3%82%BF%E3%83%BC%E3%81%AB%E9%80%A3%E7%B5%A1">GCPサポートセンターに連絡</a></h3>
<p><a target="_blank" rel="nofollow noopener" href="https://support.google.com/cloud/contact/cloud_platform_billing?hl=ja">Google Cloud Platform の課金に関するサポート</a></p>
<p>その日にすぐ、これまでの経緯をまとめてGCPのサポートセンターにメールをすると、その日に連絡がきました。</p>
<blockquote>
<p>プロジェクト「◎◎◎-◎◎◎」のAutoMLモデルが削除されてから48時間後、最終的な金額が確定されます。請求情報が更新され次第、担当部署に11月分請求金額の調整依頼を提出致します。進捗につきまして、11月26日 (火) に改めてご連絡させていただきます。</p>
</blockquote>
<p>指定の11月26日(火)に連絡がなかったので催促をしました。</p>
<blockquote>
<p>弊社担当部署に金額調整依頼を提出させていただきましたが、調整金額は高額になっているため、承認されるには長時間を要する可能性がございます。進捗につきまして、11月29日 (金)に改めてご連絡させていただきます。</p>
</blockquote>
<p>このときは祈ることしかできませんでした🙏</p>
<h3 id="祈りの結果..."><a href="#%E7%A5%88%E3%82%8A%E3%81%AE%E7%B5%90%E6%9E%9C...">祈りの結果...</a></h3>
<p>後日GCPのサポートセンターから連絡がありました...。</p>
<blockquote>
<p>弊社にて適用可能な金額調整は一度限りに対応になっております。今後はご利用頂きますGCPリソース全てに対してのご利用料金が発生いたしますので、ご留意願います。</p>
</blockquote>
<p><img width="933" alt="スクリーンショット 2019-11-27 17.07.46.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/865d9b92-7c08-8968-3d12-c7056dd97c81.png"></p>
<p>料金表を確認したところ、調整金額が反映されていました😭<br />
Google社の方々、本当にありがとうございます🙇♂️</p>
<p>最初に気づいてから、金額調整をしていただくまでの2週間は精神的に疲弊していました...。本当にありがとうございました。</p>
<h2 id="今回の原因"><a href="#%E4%BB%8A%E5%9B%9E%E3%81%AE%E5%8E%9F%E5%9B%A0">今回の原因</a></h2>
<p>今回は <code>AutoML Image Object Detection Online Prediction</code> に対して12万円の請求が発生してしまいました。</p>
<p>マシンラーニングが終わった後にデプロイするかどうかをチェックすることができます。今回はどんなモデルが作られたのかを試したかったこともあり、チェックをつけてデプロイをしました。デプロイするとGPUノードを1つ使い続けるのです。これが今回の原因です。</p>
<p><img width="779" alt="スクリーンショット 2019-12-05 17.41.22.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/9785ad31-a2be-3078-0ef4-eb59d56aadd4.png"><br />
上にも書いていますが、デプロイ後に確認が終わったら<strong>「デプロイの解除を行う必要があります。」</strong></p>
<p>完全に見落としていました...。</p>
<h2 id="再発防止策"><a href="#%E5%86%8D%E7%99%BA%E9%98%B2%E6%AD%A2%E7%AD%96">再発防止策</a></h2>
<h3 id="公式のドキュメントを読もう"><a href="#%E5%85%AC%E5%BC%8F%E3%81%AE%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E8%AA%AD%E3%82%82%E3%81%86">公式のドキュメントを読もう</a></h3>
<p>再発防止策としては、まずは「とりあえずやってみよう」ではなく、最初にドキュメントを読むことが大切だと思いました(当たり前)。そして、どんな仕組みなのか?料金体系はどうなっているのか?を公式ドキュメントを理解を深めることが大切です。(自分への戒め)</p>
<h3 id="過去の失敗から学ぼう"><a href="#%E9%81%8E%E5%8E%BB%E3%81%AE%E5%A4%B1%E6%95%97%E3%81%8B%E3%82%89%E5%AD%A6%E3%81%BC%E3%81%86">過去の失敗から学ぼう</a></h3>
<p>料金体系が複雑でクラウド破産しそうなサービスを使う場合は、過去に失敗した人のブログや記事などを調べておくことによって、注意する点などがまとめられています。そういうったブログやQiitaの記事をまとめて読み、つまずきやすいポイントを事前に学んでおくのは有効かと思います。</p>
<p><a target="_blank" rel="nofollow noopener" href="http://natsutan.hatenablog.com/entry/2019/06/02/151747">AutoMLで破産しないように気をつけたいポイント</a></p>
<p>※ この方と同じ失敗をしてしまいました...😭</p>
<h3 id="GCPの「予算とアラート」を使おう"><a href="#GCP%E3%81%AE%E3%80%8C%E4%BA%88%E7%AE%97%E3%81%A8%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%E3%80%8D%E3%82%92%E4%BD%BF%E3%81%8A%E3%81%86">GCPの「予算とアラート」を使おう</a></h3>
<p>GCPには「予算とアラート」という機能があります。アッパーの金額を決めて、指定した金額の割合に達したときのメールで通知をしてくれる機能があります。この機能を活用して、沢山メールが送るように設定しましょう。(金額に達したらサービスをストップする機能欲しいですね🙏もしくはさくらクラウドのような定額のサービスも切望🙏)</p>
<p><img width="864" alt="スクリーンショット 2019-12-05 17.55.10.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/cf453986-f2c4-4128-0216-9e5a8a597d71.png"><br />
↑予算の設定</p>
<p><img width="945" alt="スクリーンショット 2019-12-05 18.19.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147291/40cce2b3-32bf-d87f-9e3e-1163e8b52b7b.png"><br />
↑予算割合の設定</p>
<h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2>
<p>AutoMLはGoogleCloudPlatformの中でも特に料金が高く設定されているサービスです。そのため、使用する際は事前にしっかいと調べた上で使いましょう!</p>
<h2 id="参考🙇♂️"><a href="#%E5%8F%82%E8%80%83%F0%9F%99%87%E2%80%8D%E2%99%82%EF%B8%8F">参考🙇♂️</a></h2>
<p><a target="_blank" rel="nofollow noopener" href="http://natsutan.hatenablog.com/entry/2019/06/02/151747">AutoMLで破産しないように気をつけたいポイント</a></p>
<p><a target="_blank" rel="nofollow noopener" href="https://www.apps-gcp.com/cloud-automl-vision/">Cloud AutoML Vision が本当にノンプログラミングで使えるのか試してみた</a></p>
<p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/iss-f/items/c93bd07b2413cb7f3507">AutoML Visionをためしてみた</a></p>
<p><a target="_blank" rel="nofollow noopener" href="https://gigazine.net/news/20180809-wheres-waldo-finding-robot/">「ウォーリーを探せ!」のウォーリーを最短4.45秒で見つけて指し示すロボットが開発される</a></p>
フジワラ@CLOCK
tag:crieit.net,2005:PublicArticle/14618
2018-12-02T02:06:43+09:00
2018-12-05T21:28:34+09:00
https://crieit.net/posts/2d24b908e2bb42e9000ebb9c3e1fd05f
今年個人で作ったサービスについて
<p>2018年はわりと真面目に個人開発に取り組んだ1年でした。個人開発のスタートを踏み出すことができた年という意味でも『個人開発元年』と呼ぶことに決めました(勝手に)。</p>
<p>このアドベントカレンダーでは、2018年に作ったサービスや、個人開発を通じて感じたことなどを振り返ってみたいと思います。</p>
<h2 id="1. 今年作ったサービスについて"><a href="#1%26%2346%3B+%E4%BB%8A%E5%B9%B4%E4%BD%9C%E3%81%A3%E3%81%9F%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">1. 今年作ったサービスについて</a></h2>
<h3 id="1. OFFICE CLOCK"><a href="#1%26%2346%3B+OFFICE+CLOCK">1. OFFICE CLOCK</a></h3>
<ul>
<li>概要:LINEとWebで勤怠管理ができるサービス</li>
<li>開発期間:4ヶ月と少し</li>
<li>リンク:<a target="_blank" rel="nofollow noopener" href="https://officeclock.work">https://offieclock.work</a></li>
</ul>
<p><a href="https://crieit.now.sh/upload_images/33744d3413b98e9c7eaaf45ab87fe4065c02bb4145d93.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/33744d3413b98e9c7eaaf45ab87fe4065c02bb4145d93.jpg?mw=700" alt="img.jpg" /></a></p>
<p>このサービスは僕が作ったWebサービスの処女作です。かなり初々しさの残るプロダクトでツッコミどころは沢山ありましたが、そんなところもいとおしく感じていました。完全に親バカ的思考です...。</p>
<p>このサービスを作ろうと思ったきっかけは、2017年に『HATARA CLOCK』というLINEで勤怠管理ができるLINEbotをリリースしました。ユーザーが徐々に増えていき、要望も多くなりLINEのタイムライン上だけでは完結できなくなってきたのがきっかけで、ブラウザで編集したり、ファイル出力ができる『OFFICE CLOCK』を開発する流れになりました。</p>
<p>-- ✂︎ --</p>
<p>このサービスを開発する時に感じていたことや、実践したことなどのTipsをQiitaに投稿したところ、多くの反響があり、ありがたいことにQiitaやTwitterのフォロワーが少しだけ増えました。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/Yuta_Fujiwara/items/a195adbd70f0d08cc3d4">独りでWebサービスを開発・リリースするまでのTips</a></p>
<p>このサービスをきっかけに、色々な人に出会うことができた一年でした。自分の運用しているサービスの中では一番思い入れのあるサービスです。</p>
<h3 id="2. BLOCK CLOCK"><a href="#2%26%2346%3B+BLOCK+CLOCK">2. BLOCK CLOCK</a></h3>
<ul>
<li>概要:25分間の集中タイムにSNSをブロックするクローム拡張</li>
<li>開発期間:2週間</li>
<li>リンク:<a target="_blank" rel="nofollow noopener" href="https://tech-portfolio.org/block_clock/">https://tech-portfolio.org/block_clock/</a></li>
</ul>
<p><a href="https://crieit.now.sh/upload_images/22b4715ff21645b31c5621a8cd1c8d6e5c02bc7ed6489.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/22b4715ff21645b31c5621a8cd1c8d6e5c02bc7ed6489.jpg?mw=700" alt="topImage.jpg" /></a></p>
<p>2018年の4月はフリーランスでの仕事が全て無くなってしまい1ヶ月お休みだったので、その1ヶ月を使って開発したサービスです。<br />
1ヶ月あったので、沢山インプットする予定だったのですが、Twitterのタイムラインと共に、貴重な1日の時間も流れていることに気がつきました。</p>
<p>TwitterとかFacebookのSNSってWeb系エンジニアの宿敵だと思うんです。SNSやっている時間があったら、もっと進捗上がったはずだ...。と反省することが多々ありました。これが仕事だったら本当にマズいと思うんですよね...。</p>
<p>このSNS問題を本気で解決するために、色々とサービスを探したんですが『SNSブロック』と『タイマー(ポモドーロ)』のサービスがなかなか見つからなかったので、クローム拡張のAPIを使い自作したのが経緯になります。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/Yuta_Fujiwara/items/ce4de683255aeffffb5d">開発に集中するためのChrome拡張を作りました!</a></p>
<p>リリースした後にQiitaやはてぶやTwitterで沢山のフィードバックをいただいたのですが、SNS問題については共感の声が多く自分だけではなく、多くの人が悩んでいた課題だったのが印象的でした。</p>
<p>-- ✂︎ --</p>
<p>このクローム拡張は海外向けにリリースをしてみようと思い、英語作ってプロダクトハントなどにも投稿してみました。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://www.producthunt.com/posts/block-clock">https://www.producthunt.com/posts/block-clock</a></p>
<p>プロダクトハントに登録して、日本から海外向けにリリースしたらどうなるのか試してみたのですが、プロダクトハントでは投稿する時間や、投稿する前の準備が色々と必要で、それを怠るとVoteされず、上位に食い込めない仕組みになっているそうで、それを理解できておらず、あまり伸びることもなく終わってしまいました(そもそもクローム拡張のサービスなので、ニッチというのもありますが...)。</p>
<h3 id="3. THE BINGO"><a href="#3%26%2346%3B+THE+BINGO">3. THE BINGO</a></h3>
<ul>
<li>概要:超簡単にビンゴ大会が開催できるWebサービス</li>
<li>開発期間:2週間</li>
<li>リンク:<a target="_blank" rel="nofollow noopener" href="https://the-bingo.jp">https://the-bingo.jp</a></li>
</ul>
<p><a href="https://crieit.now.sh/upload_images/b7bd4c6e932e9776d84e6c8718bf18775c02bd171ed63.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b7bd4c6e932e9776d84e6c8718bf18775c02bd171ed63.png?mw=700" alt="img.png" /></a></p>
<p>結婚式の二次会とか、忘年会とかで開催するビンゴ大会って未だにアナログですよね。しかも皆んなお酒飲んでるし、出た目がわからなくて、どうでもよくなって、景品のダイソンを逃している...。みたいなことって、結構あったりすると思うんですよね。僕は過去に何度もあったんです。</p>
<p>そしてビンゴ大会を開催する幹事の労力が半端ないんですよね。カードを配ったり、ビンゴマシーンを回しながら、司会と進行をしてビンゴ大会を進める、ビンゴが出たら景品も配らないといけないし...。やることが多すぎて当日は全然楽しめない。僕は過去に何度もあったんです。</p>
<p>その課題をなんとかしたいなーという思いから、THE BINGOを開発しました。結婚式の二次会のビンゴがもっと簡単にできるようになればいいなと。準備は面倒ですが、実際やったら面白いですし!</p>
<p>THE BINGOは全然流行っていないのですが、最近は月に2回ほど20〜50人の団体がどこかでビンゴ大会をしています(今日も30名の団体がTHE BINGOを使ってくれていました...🙏)。このサービスについては忘年会や結婚式の二次会とかに需要はあるはずなので、ゆっくりと育てていきたいと思っています。</p>
<p>どういう風にマネタイズするかは考え中です...。<br />
いいアイデアがあればアドバイスください...🙏<br />
<a href="https://crieit.now.sh/upload_images/9c83f693b1134b98ff7de433f0f2e04d5c02bda751356.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9c83f693b1134b98ff7de433f0f2e04d5c02bda751356.png?mw=700" alt="img_4.png" /></a></p>
<p>-- ✂︎ --</p>
<p>『THE BINGO』は全てSemanticUIのCSSフレームワークに乗っかって作られています。Googleで『SemanticUI』を調べると、Qiitaに書いた記事が本家のページの次に出てくるようになりました。QiitaのSEO対策は本当にすごい...。</p>
<p><a href="https://crieit.now.sh/upload_images/df56a856a90997776fae381b4f13a8625c02be8707e7e.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/df56a856a90997776fae381b4f13a8625c02be8707e7e.jpg?mw=700" alt="DovPQYtUUAASr_7.jpg" /></a></p>
<p>また、Googleで『THE BINGO』を検索すると、Crieitで書いた記事が最上位にヒットします。QiitaもCrieitもしっかりとSEO対策もされているので、サービスのリリースが後は、両サービスに開発手法や、技術等のTipsなどを残しておくというのはとても有効だと思います。</p>
<p><a href="https://crieit.now.sh/upload_images/4100878c37a91ac3c2fb300fe2af6a415c031eaa90ef6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4100878c37a91ac3c2fb300fe2af6a415c031eaa90ef6.png?mw=700" alt="スクリーンショット 2018-12-02 8.49.30.png" /></a></p>
<p><a href="https://crieit.net/posts/THE-BINGO-Tips">https://crieit.net/posts/THE-BINGO-Tips</a></p>
<h3 id="4. OFFICE CLOCK - リニューアル"><a href="#4%26%2346%3B+OFFICE+CLOCK+%26%2345%3B+%E3%83%AA%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%A2%E3%83%AB">4. OFFICE CLOCK - リニューアル</a></h3>
<ul>
<li>概要:リニューアル</li>
<li>開発期間:1ヶ月と少し</li>
<li>リンク:<a target="_blank" rel="nofollow noopener" href="https://officeclock.work">https://offieclock.work</a></li>
</ul>
<p>『OFFICE CLOCK』『BLOCK CLOCK』『THE BINGO』の3つのサービスをリリースしてみて、流行ったサービスは一つもありませんでしたが、『OFFICE CLOCK』だけは徐々にユーザーも増え、法人からのお問い合わせも来るようになってきました。</p>
<p>『新しいサービスを作る』ということは今年チャレンジできたので、『既存のサービスをスケールさせる』ことを来年はやってみようと思い『OFFICE CLOCK』をリニューアルする流れになりました。前のバージョンがスマホに対応していなかったので、デザイン周りをリプレイスして、要望が多かった機能を追加しました。</p>
<p>リプレイス後にユーザーインタビューをすると『改悪だ』『前回のほうが見やすかった』『あの機能を残して欲しかった』等の意見があり、リニューアルが成功したとは言い難い結果となってしまいました...。でもあれですね、この酷評は伸びしろですね。粛々と育てていこうと思っています。</p>
<p>意見をいただけるのはとてもうれしいことなので、どんどん使って頂いて、フィードバックいただければうれしいと思っております!要望や改善はロードマップで確認することもできます。</p>
<p>[アンケート]<br />
<a target="_blank" rel="nofollow noopener" href="https://goo.gl/forms/0CSVb2GLb96HAjWA2">https://goo.gl/forms/0CSVb2GLb96HAjWA2</a></p>
<p>[ロードマップ]<br />
<a target="_blank" rel="nofollow noopener" href="https://trello.com/b/4ch8BRyP/officeclock">https://trello.com/b/4ch8BRyP/officeclock</a></p>
<p>そして管理機能を追加して、今年中のリリースを目指して絶賛開発中です。</p>
<h2 id="2. 技術的要素について"><a href="#2%26%2346%3B+%E6%8A%80%E8%A1%93%E7%9A%84%E8%A6%81%E7%B4%A0%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">2. 技術的要素について</a></h2>
<p>個人開発で用いた技術については、下のアドベントカレンダーに2018/12/20日の枠で書きます!<br />
<a href="https://crieit.net/advent-calendars/2018/technology">https://crieit.net/advent-calendars/2018/technology</a></p>
<h2 id="3. サービスを作るときに大切だと思うこと"><a href="#3%26%2346%3B+%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%A8%E3%81%8D%E3%81%AB%E5%A4%A7%E5%88%87%E3%81%A0%E3%81%A8%E6%80%9D%E3%81%86%E3%81%93%E3%81%A8">3. サービスを作るときに大切だと思うこと</a></h2>
<h3 id="自分のサービスに共通していること"><a href="#%E8%87%AA%E5%88%86%E3%81%AE%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AB%E5%85%B1%E9%80%9A%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8">自分のサービスに共通していること</a></h3>
<p>個人でユニークなサービスを開発・運営して収益を上げている、オランダ出身のPieter Levels氏(連続していろんなプロダクトを作る人)が以下のような話をしています。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://blog.notsobad.jp/entry/2018/02/17/092358">https://blog.notsobad.jp/entry/2018/02/17/092358</a></p>
<blockquote>
<p>本当にひどいアイデアもよくありますが、そうなっている理由は、問題に集中していないからです。 新しいフードデリバリーアプリや、新しいファッションデリバリーアプリを作ろうという話を、よく聞きます。 けれど、それはあなたが本当に解決したいと思う問題ではありません。</p>
<p>私のやり方は、自分の生活をよく見ること、そして自分が本当に困っていることが何かを考えることです。 日常生活の中で、自分が何かできることや、あるいは欠けている情報など、何でもいいのです。</p>
</blockquote>
<p>Pieter Levels氏のこの言葉にとても共感しました。</p>
<p>今年作った3つのサービス『OFFICE CLOCK』『BLOCK CLOCK』『THE BINGO』に共通していることは、『自分が本当に困っていること』を解決するためのサービスを作っています。というか、結果的にそういう風な作り方をしていました。自分が困っていることは、他の人も困っている確率が高いと思うので、そういった人たちに刺さるんじゃないかと...。刺さらなくても自分の困っていることは解決できているはずなので、自分だけは使うサービスになるんしゃないかと思うんですよね。</p>
<p>実際に僕は毎月の勤務表は『OFFICE CLOCK』で作成して提出していますし、開発に集中したいときは『BLOCK CLOCK』をONにしてSNSをシャットダウンして集中力を高めていますし、11月にあった結婚式の二次会では『THE BINGO』を使ってビンゴ大会を開催して、一番最初にビンゴになってしまい電動歯ブラシをゲットしてとても気まずい感じになりました...。</p>
<p>これは完全に自給自足個人開発者です。自分が欲しいものは自分で作る、そして使う...。2019年は脱・自給自足個人開発者です。せっかく作ったサービスなので、もっといろんな人に知ってもらって使ってもらいたいですね。</p>
<h3 id="モチベーションの維持について"><a href="#%E3%83%A2%E3%83%81%E3%83%99%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E7%B6%AD%E6%8C%81%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">モチベーションの維持について</a></h3>
<p>モチベーションって中々湧いてこないですよね。湧いてきても維持するのが難しい...。僕はモチベーションに頼らずに、朝の2時間は個人の作業時間を設けるということを習慣化しています。モチベーションが低い日も、天候が悪い日も、飲みすぎた次の日も6時に起きて、7時30分にはパソコンを開いている状態を作る、ということを心がけていました。もちろん実践できない日もありますが、習慣化すればモチベーションに頼らずに自然と作業することができるます。</p>
<p>2018年はモチベーションに頼らずに、朝早く起きて作業する習慣が作れたのはとても良かったと思っています。</p>
<h3 id="健康の維持について"><a href="#%E5%81%A5%E5%BA%B7%E3%81%AE%E7%B6%AD%E6%8C%81%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">健康の維持について</a></h3>
<p>どうしてもモチベーションが上がらないときってありますよね。どうも調子良くない...モヤモヤする...。っていうとき。そういうとき僕はランニングをします🏃💨 運動した後にはドーパミンがでるので集中力が高くなり作業の効率が格段に上がります。少し詰まったなーと感じるときや、集中力が切れてしまったときは汗をかいて運動することにしています。最近は筋肉エンジニアの方も増えてきていますが、エンジニアの人が体を動かすことはとても良いことだと思うので、健康の維持のためにも、運動はオススメです!</p>
<p>僕は25歳からランニングを始めて、月に100.0km走る生活を3年ほど続けていました🏃💨 ここ最近は仕事が忙しくなってしまったのと、他のことに時間をつかってしまっているため月に50.0km程度しか走れていませんが、走ることで作業中の集中力が高くなるので欠かせなくなっています。</p>
<h2 id="4. 運営者ギルドについて"><a href="#4%26%2346%3B+%E9%81%8B%E5%96%B6%E8%80%85%E3%82%AE%E3%83%AB%E3%83%89%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">4. 運営者ギルドについて</a></h2>
<p>個人開発をスタートしてから、個人開発者のSlackコミュニティ『運営者ギルド(ギルド)』に参加するようになりました。ギルドでは100人以上がそれぞれ自分のプロダクトを開発・運用しており、様々な技術や知見を共有できるSlackのコミュニティです。</p>
<p>これまでの『個人開発』は独りでの開発でしたが、このコミュニティができたことにより、『個人開発』は独りの開発では無くなったと思います。色んなメンバーが集まって、フィードバックをくれたり、詰まったところを丁寧にアドバイスをくれたりしています。これまで独りで悩んでいた部分を、メンバーから意見をもらい開発ができる場ができました。</p>
<p>僕もこのコミュニティの人たちから恩恵をもらいながら、この一年開発することができました。メンバーの皆さんには本当に感謝しています🙇 本当にありがとうございます!</p>
<p>そしてこのCrieitを運営しているdalaさんにもアドバイスをいただいたり、僕のサービスをシェアしもらったり色々とお世話になりました。dalaさんも素晴らしいエンジニアの一人で大変尊敬していますので、今後ともよろしくお願い致します。まだお会いしたことはありませんが、機会があれば飲みに行きましょう🍻🍻</p>
<h2 id="5 . 2019年の豊富"><a href="#5+.+2019%E5%B9%B4%E3%81%AE%E8%B1%8A%E5%AF%8C">5 . 2019年の豊富</a></h2>
<p>来年は以下のことを取り組みたいと思っています。</p>
<ul>
<li>個人サービスを収益化する
<ul>
<li>法人化</li>
<li>サブスクリプションの仕組みを構築</li>
</ul></li>
<li>バズ系のサービスを作る</li>
<li>健康な身体を維持する</li>
</ul>
<p>2019年も頑張ります!</p>
フジワラ@CLOCK
tag:crieit.net,2005:PublicArticle/14485
2018-07-19T10:38:24+09:00
2018-12-21T14:22:30+09:00
https://crieit.net/posts/THE-BINGO-Tips
『THE BINGO』を開発・リリースするまでのTips
<p>『THE BINGO』というサービスをリリースしました。<br />
ビンゴ大会が超簡単に開催できる無料のサービスです。</p>
<p><a href="https://crieit.now.sh/upload_images/b7bd4c6e932e9776d84e6c8718bf18775b4f57b891274.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b7bd4c6e932e9776d84e6c8718bf18775b4f57b891274.png?mw=700" alt="img.png" /></a></p>
<p>サービスを作るとき、アイデア・設計、デザイン、実装、テスト、リリースと多くの工程があり、どの工程もとても重要且つ、とても大変です。また個人で開発する場合は、全てを一人で担当しなければなりません。</p>
<p>僕自身、THE BINGOは4つ目のサービスで、開発〜リリースまでの型みたいなものが出来てきました(お金になっているサービスはありますが、ヒットしたサービスはひとつもありません...悲)。この記事はTHE BINGOを作るまでの流れをまとめました。サービスを作りたいと思っている人、今まさにサービスを作っている人、そんな方々に少しでも役に立つようなTipsになればと思います。</p>
<h1 id="アイデア・設計"><a href="#%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2%E3%83%BB%E8%A8%AD%E8%A8%88">アイデア・設計</a></h1>
<h3 id="なぜ『THE BINGO』を作ろうと思ったのか?"><a href="#%E3%81%AA%E3%81%9C%E3%80%8ETHE+BINGO%E3%80%8F%E3%82%92%E4%BD%9C%E3%82%8D%E3%81%86%E3%81%A8%E6%80%9D%E3%81%A3%E3%81%9F%E3%81%AE%E3%81%8B%EF%BC%9F">なぜ『THE BINGO』を作ろうと思ったのか?</a></h3>
<p>作った経緯などは、以下の個人のブログにまとめています↓↓</p>
<p><a target="_blank" rel="nofollow noopener" href="http://yutafujiwara.hatenablog.com/entry/2018/07/15/075103">『楽しい』と思うから作る</a></p>
<p>概要だけ話すと、『ビンゴ大会って何でこんなにレガシーなんだ。自動化してくれ』と、強く思っていました。</p>
<p>おそらく、これを思っているのは自分だけではなく、ビンゴを準備している全ての人が感じていることで、その人たちが当日一般の人たちと同様に楽しめたら、もっとお酒いっぱい飲めるだろうなー。と思ったことが発端です。</p>
<h3 id="どういうサービスか?"><a href="#%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%8B%EF%BC%9F">どういうサービスか?</a></h3>
<p>THE BINGOは、会員登録とかアプリのダウンロードなどをせずに、本当に簡単にビンゴ大会が開催できるWebサービスです。</p>
<p>ビンゴマシン(親)がビンゴカード(子)のURLをLINEやFacebookやTwitterなどで共有して、ユーザーはそのURLをクリックするだけでビンゴカードを作成することができます。</p>
<ul>
<li>親:ビンゴマシンにアクセスする</li>
<li>親:ビンゴカードのURLをシェアする</li>
<li>子:ビンゴカードのURLに各々アクセスする</li>
<li>親:ビンゴを回す</li>
<li>子:ビンゴを待つ → 自動で更新される</li>
</ul>
<h3 id="どういう技術を採用しているか?"><a href="#%E3%81%A9%E3%81%86%E3%81%84%E3%81%86%E6%8A%80%E8%A1%93%E3%82%92%E6%8E%A1%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%EF%BC%9F">どういう技術を採用しているか?</a></h3>
<p>THE BINGOには『ビンゴマシン』と『ビンゴカード』があります。<br />
『ビンゴマシン』の方はVue.jsで既に作っていました。</p>
<p>【ビンゴマシン】<br />
<a href="https://crieit.now.sh/upload_images/0e928c8cc877cb4786c638fd9ecf4dbf5b4f5b4b61e20.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0e928c8cc877cb4786c638fd9ecf4dbf5b4f5b4b61e20.png?mw=700" alt="microsoft-surfacebook-front.png" /></a></p>
<p>『ビンゴカード』の方の実装をどうしようかと悩んでいました...。<br />
『ビンゴマシン』で『STOP』したイベントがトリガーになり『ビンゴカード』に出た目を通知する実装が必要でした。色々と調べた結果以下の方法だと、実装できそうだということがわかりました。</p>
<ul>
<li><strong>① WebSocket</strong></li>
<li><strong>② ポーリング</strong></li>
</ul>
<p>実装は可能ですが僕が使っているサーバーが弱小なこともあり、どちらもサーバーのリソースを浪費してしまう可能性がありました。そのためなるべくサーバーには負荷をかけずに実装したいという思いがありました。</p>
<p>その問題を解決する術が<strong>Firebase</strong>です。</p>
<p><a href="https://crieit.now.sh/upload_images/b95575415cc641a365eb8ad46e91c8855c1b9dc7bbc2a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b95575415cc641a365eb8ad46e91c8855c1b9dc7bbc2a.png?mw=700" alt="設計.png" /></a></p>
<p>FirebaseのRealtime Databaseを使うと、データが更新されたとき(ビンゴマシンの『STOP』が押され、目が出た時)に同じデータベースを参照している端末に対して、イベントを起こすことができます(弱小サーバーに負荷がかからない🙌)。</p>
<pre><code> // ** Initialize Firebase **
var config = {
apiKey: "hoge-piyo",
authDomain: "hoge-piyo.firebaseapp.com",
databaseURL: "https://hoge-piyo.firebaseio.com",
projectId: "hoge-piyo",
storageBucket: "",
messagingSenderId: "1234567890"
};
firebase.initializeApp(config);
var db = firebase.database();
var bingoConn = db.ref("/bingo");
// ** データベースが変更された時の処理 **
bingoConn.on("value", function (data) {
console.log(data.val()); // → array[ "1" ]
});
array = [];
array.push("1");
// ** arrayをFirebaseのデータベースに登録 **
bingoConn.set({ array });
</code></pre>
<p>Firebase側で事前に設定しておく項目もありますが、フロント側の実装はとてもシンプルで簡単です。</p>
<h1 id="デザイン"><a href="#%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3">デザイン</a></h1>
<p>『THE BINGO』のデザイン・UI(HTML・CSS)は全て<a target="_blank" rel="nofollow noopener" href="https://semantic-ui.com/kitchen-sink.html">SemanticUI</a>というCSSフレームワークを使って作られています。</p>
<p>【SemanticUI Button Sample】<br />
<a href="https://crieit.now.sh/upload_images/77932e6ccce9ccc68bb84b17439dba285b4fc4a3256ad.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/77932e6ccce9ccc68bb84b17439dba285b4fc4a3256ad.png?mw=700" alt="スクリーンショット 2018-07-19 7.51.56.png" /></a></p>
<p>SemanticUI超良いです◎ ボタン、ラベル、アイコン、イメージカード、ナビゲーター...etc 豊富な種類からサイズや幅、色などを簡単に自由にカスタマイズすることができます。グリット機能もかなり優秀で、画面幅に合わせてフレームワーク側でレイアウトをタイムリーに調整してくれます。</p>
<p>エンジニアが個人でサービスを作るときデザインやUIって後回しになりがちですが、僕はかなり重要だと思っています。僕自身エンジニアなのでデザインの領域は得意ではありませんが、CSSフレームワークに完全に乗っかることで、<strong>エンジニアがそれなりのもの</strong>を工数をかけずに作り上げることができます。</p>
<p>以前はBootStrapを使ってデザインをしていたのですが、BootStrapぽっくなってしまうのが嫌で、今はSemanticUIを使っています。</p>
<p>デメリットが一つあるとすればIE9より前のバージョンは使えません(HTML5、CSS3を使用しているため)。個人的意見を言うとIE9はマイクロソフトのサポートも終了しているため、無視していいと思っています。試していませんが<a target="_blank" rel="nofollow noopener" href="https://github.com/Semantic-Org/Semantic-UI">SemanticUIの公式ドキュメントでは</a>IE10まではサポートしていると書いています。(IE11は使えました◎)</p>
<h1 id="実装・テスト"><a href="#%E5%AE%9F%E8%A3%85%E3%83%BB%E3%83%86%E3%82%B9%E3%83%88">実装・テスト</a></h1>
<p>フロントエンドはVue.jsで開発をしています。<br />
特に難しいことはしていません...。こだわりとしては『ビンゴカードは一人一枚』という、本来の仕様をなるべく再現しています。(1ブラウザで1枚のビンゴカードが生成されます)</p>
<p>【ビンゴカード】<br />
<a href="https://crieit.now.sh/upload_images/5d45e9066e8fac95ee8291f0ba9eb8e85b4fca319e85a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5d45e9066e8fac95ee8291f0ba9eb8e85b4fca319e85a.png?mw=700" alt="iphoneserosegold_portrait.png" /></a></p>
<p>一応ローカルで動くビンゴマシンのソースは公開しています。<br />
※Firebaseとの通信はしていません<br />
<a target="_blank" rel="nofollow noopener" href="https://github.com/FujiyamaYuta/vue-bingo_machine">Github - vue-bingo_machine</a></p>
<h1 id="リリース"><a href="#%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9">リリース</a></h1>
<p>実装とテストが終わったら、リリース作業です。<br />
この作業が一番手間で時間がかかります。以下の手順で作業を進めます。</p>
<ol>
<li>ドメイン取得</li>
<li>SSL証明書取得</li>
<li>Apacheの設定</li>
<li>利用規約・プライバシーポリシーの作成</li>
<li>TOPページ・ランディングページの作成</li>
<li>リリース</li>
</ol>
<h3 id="1.ドメイン取得"><a href="#1.%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E5%8F%96%E5%BE%97">1.ドメイン取得</a></h3>
<p>僕はさくらサーバーのVPSを使っているので、ドメインもさくらのサービスを利用しました。お名前.comなど類似のサービスはありますが、好きなところでドメインを取得します(お金かかります)</p>
<p><a target="_blank" rel="nofollow noopener" href="https://www.sakura.ne.jp/domain/">さくらインターネット - ドメイン取得</a></p>
<p>『the-bingo.jp』というドメインを取得しました。</p>
<h3 id="2.SSL証明書 取得"><a href="#2.SSL%E8%A8%BC%E6%98%8E%E6%9B%B8+%E5%8F%96%E5%BE%97">2.SSL証明書 取得</a></h3>
<p>PCとサーバ間の通信を暗号化するために必要な技術です(HTTPS)。これをしていないとブラウザで『保護されていない通信』的なことが表示されるので、マストだと思います(お金かかります)。</p>
<p>初めてやるとかなり面倒くさい作業です...。僕はいつも以下の記事を参考にさせてもらっています🙇</p>
<p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/yoshizaki_kkgk/items/e6f39a5bfb99900b44b2">さくらVPSにSSL証明書を導入しHTTPS通信の構築</a></p>
<p>これを設定すると → <a target="_blank" rel="nofollow noopener" href="https://the-bingo.jp">https://the-bingo.jp</a>で暗号化した通信ができるようになります。</p>
<h3 id="3.Apacheの設定"><a href="#3.Apache%E3%81%AE%E8%A8%AD%E5%AE%9A">3.Apacheの設定</a></h3>
<p>具体的には以下の設定をしています。<br />
・ファイルorディレクトリが存在しない(404)ときホームにリダイレクト<br />
・<code>.html</code>の拡張子がなくてもページが表示される<br />
・<code>http</code>でリクエストが来たとき<code>https</code>にリダイレクトする</p>
<p>上記の設定をするためにルートに.htaccessファイルを作成し、以下を記述します。</p>
<pre><code># .htaccess
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
#↑最終行は必ず改行(らしい)
</code></pre>
<h3 id="4.利用規約・プライバシーポリシーの作成"><a href="#4.%E5%88%A9%E7%94%A8%E8%A6%8F%E7%B4%84%E3%83%BB%E3%83%97%E3%83%A9%E3%82%A4%E3%83%90%E3%82%B7%E3%83%BC%E3%83%9D%E3%83%AA%E3%82%B7%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90">4.利用規約・プライバシーポリシーの作成</a></h3>
<p>色んなサービスの利用規約などを見て、参考にします。</p>
<h3 id="5.TOPページ・ランディングページの作成"><a href="#5.TOP%E3%83%9A%E3%83%BC%E3%82%B8%E3%83%BB%E3%83%A9%E3%83%B3%E3%83%87%E3%82%A3%E3%83%B3%E3%82%B0%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AE%E4%BD%9C%E6%88%90">5.TOPページ・ランディングページの作成</a></h3>
<p>色んなサービスのWebサイトを見て、参考にします。</p>
<h3 id="6.リリース"><a href="#6.%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%B9">6.リリース</a></h3>
<p>Twitter、ブログなどを使って告知します!</p>
<p><a href="https://crieit.now.sh/upload_images/bd966e40ee1a4fe92790c30144a84aac5b4fd7d3a13ac.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bd966e40ee1a4fe92790c30144a84aac5b4fd7d3a13ac.png?mw=700" alt="スクリーンショット 2018-07-19 9.13.46.png" /></a></p>
<h3 id="7.打ち上げ"><a href="#7.%E6%89%93%E3%81%A1%E4%B8%8A%E3%81%92">7.打ち上げ</a></h3>
<p>リリースと打ち上げはセットなので、これはだけは絶対に外せません。<br />
30歳前の独身男性が、金曜日の仕事終わりに吉野家で瓶ビールと牛丼を注文して一人で打ち上げをしました。<br />
(文章を読むだけで切ない...。)</p>
<h1 id="サービスのあれこれ"><a href="#%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%81%82%E3%82%8C%E3%81%93%E3%82%8C">サービスのあれこれ</a></h1>
<h3 id="開発期間"><a href="#%E9%96%8B%E7%99%BA%E6%9C%9F%E9%96%93">開発期間</a></h3>
<ul>
<li><strong>2週間</strong><br />
※アイデアからリリースまで</li>
</ul>
<h3 id="かかっている金額"><a href="#%E3%81%8B%E3%81%8B%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E9%87%91%E9%A1%8D">かかっている金額</a></h3>
<div class="table-responsive"><table>
<thead>
<tr>
<th>項目</th>
<th>金額</th>
<th>備考</th>
</tr>
</thead>
<tbody>
<tr>
<td>ドメイン</td>
<td>3,909円/年</td>
<td></td>
</tr>
<tr>
<td>SSL</td>
<td>972円/年</td>
<td></td>
</tr>
<tr>
<td>さくらVPS</td>
<td>1,706円/月</td>
<td>他のサービスも乗っている</td>
</tr>
<tr>
<td>Firebase</td>
<td>2,800 円/月</td>
<td>Flameプラン:来月は無料プランに切り替える</td>
</tr>
</tbody>
</table></div>
<p>お金については結構かかってますね...。<br />
この金額くらいは回収できるようなサービスにしたい(広告入れずに)...。</p>
<h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1>
<p>個人でユニークなサービスを開発・運営して収益を上げている、オランダ出身のPieter Levels氏(連続していろんなプロダクトを作る人)が以下のような話をしています。</p>
<blockquote>
<p>本当にひどいアイデアもよくありますが、そうなっている理由は、問題に集中していないからです。 新しいフードデリバリーアプリや、新しいファッションデリバリーアプリを作ろうという話を、よく聞きます。 けれど、それはあなたが本当に解決したいと思う問題ではありません。</p>
<p>私のやり方は、自分の生活をよく見ること、そして自分が本当に困っていることが何かを考えることです。 日常生活の中で、自分が何かできることや、あるいは欠けている情報など、何でもいいのです。</p>
</blockquote>
<p>リリースしてから1週間が経ちました。バズったときのことを考えてFirebaseのFlameプラン(月額25ドル)にしたのですが、全くバズっていませんし、全く流行っておりません...悲。</p>
<p>利用者はまだ多くありませんが、少なくとも僕自身が抱いていた課題は解決できるようにTHE BINGOは開発しました。これは仮説ですが『<strong>自分が本当に困っていること</strong>』というのは、同じように困っている人がいると思うんです。そういう人たちに刺さるようなサービスを、これからも作っていきたいと思っています。</p>
<p>そして、できれば保守運用していくために、お金をいただけるような仕組みを構築したいと思っています。<br />
これは僕だけではなく、多くの個人開発者の課題ですね。</p>
<p>とか、真面目な話をしてみたんですが、THE BINGOを使って超簡単にその場でビンゴ大会が開催され、会場が盛り上がっているのを想像すると、やっぱり嬉しいですよね。開発者としての一番のモチベーションはユーザーの反応だと僕は思います。</p>
<p>とても小さいサービスですが、ビンゴ大会を主催する機会があるときはぜひ使ってみてください。</p>
フジワラ@CLOCK
tag:crieit.net,2005:PublicArticle/14481
2018-07-16T07:53:17+09:00
2018-10-29T13:18:13+09:00
https://crieit.net/posts/90d2d9333da1e59c8ba89783b91fe3f7
もう絶対にやめられない。ホットリロード開発環境を手に入れる。
<h2 id="ホットリロードとは?"><a href="#%E3%83%9B%E3%83%83%E3%83%88%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A8%E3%81%AF%EF%BC%9F">ホットリロードとは?</a></h2>
<p>ローカル開発環境(<code>http://localost:8080/</code>)でフロント側の開発しているとき、僕は今まで<br />
①ファイル編集 → ②保存 → ③ブラウザでcommand + R...を繰り返し確認していました。</p>
<p>が、ホットリロードを取り入れると、①ファイル編集 → ②保存した瞬間に、編集したファイルを読み直してストレスなく開発を進めることができます(最近知りました...orz)。これは知っているのと、知っていないのでは開発のスピードが全然違ってくるので、一度試してみる価値はあるかもしれません...。</p>
<p>とても簡単に構築することができるのでぜひ試してみて下さい。</p>
<h2 id="ホットリロードの環境構築"><a href="#%E3%83%9B%E3%83%83%E3%83%88%E3%83%AA%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AE%E7%92%B0%E5%A2%83%E6%A7%8B%E7%AF%89">ホットリロードの環境構築</a></h2>
<p>ホットリロードにはvueのcliでもなく、React Hot Loaderでもなく、npmの『live-server』というプラグインを使います(おそらくこれが一番簡単)</p>
<p>※npmコマンドは事実行できる環境にしておいてください</p>
<p>以下のコマンドをターミナルで実行します。</p>
<pre><code>$ npm install -g live-server
$ cd <開発のディレクトリ>
$ live-server .
</code></pre>
<h2 id="確認"><a href="#%E7%A2%BA%E8%AA%8D">確認</a></h2>
<pre><code>[http://127.0.0.1:8080/](http://127.0.0.1:8080/)
or
[http://localost:8080/](http://localost:8080/)
</code></pre>
<p>このコマンドででホットリロードで開発できるローカル開発環境が手に入るので、ぜひ試してみてください!</p>
フジワラ@CLOCK
tag:crieit.net,2005:PublicArticle/14464
2018-06-04T15:12:19+09:00
2018-09-27T03:32:45+09:00
https://crieit.net/posts/Mac-WindowsOS
MacにWindowsOSを入れて動かしてみる
<p>タイトルを見て『WindowsPC使えばいいじゃん』と思った方...。<br />
その通りなんです。</p>
<p>WindowsPCを使えばいいんです...!</p>
<p>しかし、それだと、この記事が終了してしまうので、せっかくなのでやってみましょう!<br />
MacOSにWindowsOSを入れて動かしてみます。<br />
正確にはMacにあるVirtualBoxにWindowsOSを入れて動かしてみます。</p>
<h1 id="なぜMacにWindowsOSを入れたいのか?"><a href="#%E3%81%AA%E3%81%9CMac%E3%81%ABWindowsOS%E3%82%92%E5%85%A5%E3%82%8C%E3%81%9F%E3%81%84%E3%81%AE%E3%81%8B%EF%BC%9F">なぜMacにWindowsOSを入れたいのか?</a></h1>
<p>MacでWebアプリケーションを開発しているときに、IEやedgeといったマイクロソフトが提供している<br />
ブラウザでテストをしなければならない場面がありました。</p>
<p>シミュレーターで表示した場合と、WindowsのPCで表示した場合で異なる結果になることが多々ありました。<br />
結局『WindowsOSでIEを開かないと意味がない』という結論になりました。</p>
<p>WindowsPCも渡されていますが、テストのためだけに電源を入れるのって億劫ですよね...。<br />
なのでVirtualBoxにWindowsOSを入れて、テストの時だけ立ち上げてIEとedgeで確認をしたいというのが、発端になります。</p>
<h1 id="1.VirtualBoxをインストール"><a href="#1.VirtualBox%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">1.VirtualBoxをインストール</a></h1>
<p>まずはVirtualBoxをインストールします。(VirtualBoxはLinuxを利用したOSの一つであり無償で利用できます)</p>
<p><a target="_blank" rel="nofollow noopener" href="https://www.virtualbox.org/wiki/Downloads">https://www.virtualbox.org/wiki/Downloads</a></p>
<h1 id="2.WindowsOSのvirtual machinesをインストール"><a href="#2.WindowsOS%E3%81%AEvirtual+machines%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB">2.WindowsOSのvirtual machinesをインストール</a></h1>
<p>実はテスト用のバーチャルマシンをマイクロソフトが提供しています。<br />
※かなり重厚なため覚悟したほうがいいです...。<br />
<a target="_blank" rel="nofollow noopener" href="https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/#downloads">https://developer.microsoft.com/en-us/microsoft-edge/tools/vms/#downloads</a></p>
<p><a href="https://crieit.now.sh/upload_images/9e991b5301f2abffe31d7201ed6520695b14cffdc7fd0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9e991b5301f2abffe31d7201ed6520695b14cffdc7fd0.png?mw=700" alt="スクリーンショット 2018-06-04 14.36.25.png" /></a></p>
<h1 id="3.VirtualBoxを立ち上げてOSファイルをインポートする"><a href="#3.VirtualBox%E3%82%92%E7%AB%8B%E3%81%A1%E4%B8%8A%E3%81%92%E3%81%A6OS%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B">3.VirtualBoxを立ち上げてOSファイルをインポートする</a></h1>
<p>『ファイル』 → 『インポート』から先ほどインストールしたファイルをインポートします。</p>
<p><a href="https://crieit.now.sh/upload_images/2987a85143f937dc52645014c09341b45b14d43c41cf3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2987a85143f937dc52645014c09341b45b14d43c41cf3.png?mw=700" alt="スクリーンショット 2018-06-04 14.54.52.png" /></a></p>
<h1 id="4.インポートしたOSを起動する"><a href="#4.%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%97%E3%81%9FOS%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%99%E3%82%8B">4.インポートしたOSを起動する</a></h1>
<p>インポートしたバージョンのOSが左に出てくるので起動します。</p>
<p><a href="https://crieit.now.sh/upload_images/da3115714e08eb13fa13dfa02668d6745b14d4a705e2f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/da3115714e08eb13fa13dfa02668d6745b14d4a705e2f.png?mw=700" alt="スクリーンショット 2018-06-04 14.56.28.png" /></a></p>
<h1 id="4.IE、edge起動!"><a href="#4.IE%E3%80%81edge%E8%B5%B7%E5%8B%95%EF%BC%81">4.IE、edge起動!</a></h1>
<p>MacでWindowsOSが立ち上がりました!<br />
edgeとIEを確認してみます。</p>
<h3 id="edge確認"><a href="#edge%E7%A2%BA%E8%AA%8D">edge確認</a></h3>
<p><a href="https://crieit.now.sh/upload_images/41795a780e976156296be8c50e5a79ec5b14d6462c8e9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/41795a780e976156296be8c50e5a79ec5b14d6462c8e9.png?mw=700" alt="スクリーンショット 2018-06-04 15.02.30.png" /></a></p>
<h3 id="IE確認"><a href="#IE%E7%A2%BA%E8%AA%8D">IE確認</a></h3>
<p><a href="https://crieit.now.sh/upload_images/452b4cb98ebfa46b81480dd4d4e409de5b14d639ac64f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/452b4cb98ebfa46b81480dd4d4e409de5b14d639ac64f.png?mw=700" alt="スクリーンショット 2018-06-04 15.03.09.png" /></a></p>
<h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1>
<p>かなり面倒くさいし、PCにも負荷をかけるのでWindowsPCを確保して確認するのが一番いいと思います。</p>
<p>参考↓↓<br />
<a target="_blank" rel="nofollow noopener" href="http://www.wegirls.tech/entry/2017/03/07/195733">http://www.wegirls.tech/entry/2017/03/07/195733</a></p>
フジワラ@CLOCK