tag:crieit.net,2005:https://crieit.net/users/nabettu/feed nabettuの投稿 - Crieit Crieitでユーザーnabettuによる最近の投稿 2020-12-24T12:50:47+09:00 https://crieit.net/users/nabettu/feed tag:crieit.net,2005:PublicArticle/16420 2020-12-24T12:34:15+09:00 2020-12-24T12:50:47+09:00 https://crieit.net/posts/3a5d8d52c3b1a23c50f1350f5de37d14 これであなたもエタらない!失敗しない個人開発5か条 <p><a href="https://crieit.now.sh/upload_images/ec6bd27685d0af1acfa39cf95cfca0ae5fe40c2e162db.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ec6bd27685d0af1acfa39cf95cfca0ae5fe40c2e162db.png?mw=700" alt="image" /></a></p> <p>こんにちは!ちょっと遅れましたがアドベントカレンダー23日担当します @nabettu です!よろしくお願いします。</p> <p>この記事はこないだのツイートの反響があったので、こちらについて深堀りする記事としたいと思います!</p> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">躓かない個人開発5か条- 作らずに済むものをできるだけ作らない- 小さく産んで大きく育てる- 技術習得を目的にせず作れる範囲のものを作る- 最低限自分、もしくは知人が絶対に使うモノを作る- プラットフォームでなく一人でも使えるツールを目指すこれを守ればエタらない!始めよう個人開発!</p>— nabettu🍲Notionでサイト制作できるNoCodeサービス開発中 (@nabettu) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/nabettu/status/1338677078477008897?ref_src=twsrc%5Etfw">December 15, 2020</a></blockquote> <h2 id="ターゲット"><a href="#%E3%82%BF%E3%83%BC%E3%82%B2%E3%83%83%E3%83%88">ターゲット</a></h2> <p>作りたい気持ちはあるし、プログラミングなどは勉強している&仕事にしているけど、これといったプロダクトを作りきったことが無い方向けです!</p> <h2 id="作らずに済むものをできるだけ作らない"><a href="#%E4%BD%9C%E3%82%89%E3%81%9A%E3%81%AB%E6%B8%88%E3%82%80%E3%82%82%E3%81%AE%E3%82%92%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A0%E3%81%91%E4%BD%9C%E3%82%89%E3%81%AA%E3%81%84">作らずに済むものをできるだけ作らない</a></h2> <p>まずこれ、「完璧を目指すよりまず終わらせろ」って言葉もありますが、それ以前に作らなくて済むものはつくらないのが大切です。</p> <p>NoCodeで対応出来る範囲も年々増えてきており、IFTTTやZapierでサービス間連携も可能です。</p> <p>例えば 「東京固いプリンカフェマップ」 というサービスを作りたいなってなった場合には、Google Splead Sheetでデータを集めてGlideで表示するというものでも、最低限のサービスにはなります。</p> <p><a href="https://crieit.net/boards/web1week-202009/Google-Map-Glide">Google Mapでまとめられていたデータを使って「東京固めプリンマップ」のサイトをGlideで作ったよ</a></p> <p>ここから、自分のコードで作りたいなという部分を徐々に作っていくのも手です。</p> <h2 id="小さく産んで大きく育てる"><a href="#%E5%B0%8F%E3%81%95%E3%81%8F%E7%94%A3%E3%82%93%E3%81%A7%E5%A4%A7%E3%81%8D%E3%81%8F%E8%82%B2%E3%81%A6%E3%82%8B">小さく産んで大きく育てる</a></h2> <p>上記のプリンマップですが、最低限のものをまず作ってしまって、それから欲しい機能を付け足して行きましょう。</p> <ul> <li>Google Formを作ってシートにデータを入れられるように</li> <li>そのformをサイトに埋め込んだ形にして、静的サイトを自作したり</li> <li>それからやっとマップを見れるだけのサイトの側を自作して</li> <li>会員登録機能を作って、お気に入りできるように</li> <li>現在地からプリンのお店を探したり</li> <li>プリンに関するレビューを書けるようにしたり</li> </ul> <p>などなど、一気に作ると何ヶ月もかかってしまって挫折しがちですが、1ヶ月1機能を目標!などにしていけば、いつの間にか大きなサービスになっていくのではないでしょうか。</p> <h2 id="技術習得を目的にせず作れる範囲のものを作る"><a href="#%E6%8A%80%E8%A1%93%E7%BF%92%E5%BE%97%E3%82%92%E7%9B%AE%E7%9A%84%E3%81%AB%E3%81%9B%E3%81%9A%E4%BD%9C%E3%82%8C%E3%82%8B%E7%AF%84%E5%9B%B2%E3%81%AE%E3%82%82%E3%81%AE%E3%82%92%E4%BD%9C%E3%82%8B">技術習得を目的にせず作れる範囲のものを作る</a></h2> <p>新しい技術の素振りとしてサービスを作りたいという気持ちもわかりますが、なんだかんだサービスとして出す頃には、新しいことをやらなきゃならない場面が出てくるので、まずは自分が作れる範囲のものを作っていきましょう。</p> <p>もちろん技術習得をしたい!という方はそっちが目標なので、手段と目的が入れ替わって「出来なかった」と落ち込むことの無いようにしましょう。</p> <h2 id="最低限自分、もしくは知人が絶対に使うモノを作る"><a href="#%E6%9C%80%E4%BD%8E%E9%99%90%E8%87%AA%E5%88%86%E3%80%81%E3%82%82%E3%81%97%E3%81%8F%E3%81%AF%E7%9F%A5%E4%BA%BA%E3%81%8C%E7%B5%B6%E5%AF%BE%E3%81%AB%E4%BD%BF%E3%81%86%E3%83%A2%E3%83%8E%E3%82%92%E4%BD%9C%E3%82%8B">最低限自分、もしくは知人が絶対に使うモノを作る</a></h2> <p>作ったけど誰も使わないサービスというのは作っていて辛いですね。</p> <p>最低限自分が絶対に欲しいと思っているものを作るようにしましょう。「これ作っても誰が使うんだろう」というモチベーションで続けても辛いだけです。</p> <p>知人がほしいと言っているものであれば、プロトタイプなどからしっかりヒヤリングして「目的をブラさずに」作っていきましょう。</p> <h2 id="プラットフォームでなく一人でも使えるツールを目指す"><a href="#%E3%83%97%E3%83%A9%E3%83%83%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%A7%E3%81%AA%E3%81%8F%E4%B8%80%E4%BA%BA%E3%81%A7%E3%82%82%E4%BD%BF%E3%81%88%E3%82%8B%E3%83%84%E3%83%BC%E3%83%AB%E3%82%92%E7%9B%AE%E6%8C%87%E3%81%99">プラットフォームでなく一人でも使えるツールを目指す</a></h2> <p>「Twitterのようなサービスを目指すぞ」ってのが結構陥りがちな罠で、ユーザー投稿型のプラットフォームは投稿がなければコンテンツが無いので、ユーザーが集まりません。</p> <p>ニワトリタマゴですが、そういったサービスは集客が最低限確保出来なければサービスが成り立たないので、まずは「ツール」として成り立つサービスを作るとよいでしょう。</p> <p>例えば <a target="_blank" rel="nofollow noopener" href="https://unityroom.com/">unityroom</a> というプラットフォームがあります。これはUnityで作ったゲームを投稿するサービスなのですが、Unityでゲームを作ってもアプリにしてGoogle PlayやApp Storeに登録しなければ人に遊んでもらえません。</p> <p>そこを「人にURLを送るだけでWebで遊べる形にできる」ツールとして成り立つサービスとなっています。そこから投稿が増え「いろんなゲームがWebで遊べるサービス」としてプラットフォームが成り立っています。</p> <p>いきなり投稿を増やすのはなかなか大変なので、その投稿それだけで成り立つツールを作ってみると「閑古鳥がないている悲しいサービス」が生まれにくいのではないでしょうか。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>この5か条を守ればあなたも小さくとも使われるプロダクトを作れるはずです!</p> <p>ぜひ楽しい楽しい個人開発の沼へあなたも入ってみませんか。</p> nabettu tag:crieit.net,2005:PublicArticle/15614 2019-12-16T12:34:22+09:00 2019-12-16T12:34:22+09:00 https://crieit.net/posts/2a0b8ecf1528c8b3537cfc26f57e35de あなたの個人開発の目標はどこですか? <p>Crieit のなんでも Advent Calendar 2019 12/9を担当するnabettuです。すっかり投稿するのを忘れていまして、今日書きました笑</p> <p>この記事は個人開発をやっている駆け出しIndie Hackerのための記事です。</p> <p>個人開発でモチベーションが保てないとか、集客が上手く行かないとか、色々悩みがあると思います。</p> <p>そもそもあなたはなぜ個人開発をするのでしょうか。</p> <p>一口に個人開発を行うとしても、その目標が明確になってないので漠然と「5000兆円ゲットしてないから失敗した」という気持ちになってしまうのでしょうか。</p> <p>ということで今回はざっくり以下の5つのタイプに分けて、<strong>目標と達成条件</strong>を書いていきます。</p> <ul> <li>技術習得をする・サンドボックスにする</li> <li>ポートフォリオになるものをつくる</li> <li>作りたいものをつくる・ライフワーク</li> <li>自分や知り合いが欲しがっているサービスをつくる</li> <li>サービス・アプリで生計を立てる</li> </ul> <p>もちろん重複する場合もあるとは思いますが、自分の個人開発が上記のうちのどれなのか考えていただいてから読み進めてください。</p> <h1 id="技術習得をする・サンドボックスにする"><a href="#%E6%8A%80%E8%A1%93%E7%BF%92%E5%BE%97%E3%82%92%E3%81%99%E3%82%8B%E3%83%BB%E3%82%B5%E3%83%B3%E3%83%89%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%AB%E3%81%99%E3%82%8B">技術習得をする・サンドボックスにする</a></h1> <p>エンジニアの個人開発っぽい目標ですね。OSSやツールを作る人も多いと思います。</p> <p>仕事は仕事で開発をする前提で、自身のスキル向上のために色々触ってみて、それを何かしらでアウトプットしている形。</p> <p>このタイプの方は <strong>「使いたかった技術が十分に使えること」</strong> が目標ですね。</p> <p>「React.jsとFirebaseで認証付きWebサービスを作りたい」となったら、その2つの技術について十分に触ることが出来たら一旦目標達成でいいのではないでしょうか。なのでユーザーが集まらなくても、なんなら <strong>公開できるレベルに達していなかったとしても技術は向上しているから大丈夫!</strong> 仕事に活かしましょう!</p> <p>次のステップとしては、ポートフォリオになるものに出来たらもっと仕事にも活かしやすくなるかもしれません。</p> <h1 id="ポートフォリオになるものをつくる"><a href="#%E3%83%9D%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AA%E3%82%AA%E3%81%AB%E3%81%AA%E3%82%8B%E3%82%82%E3%81%AE%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8B">ポートフォリオになるものをつくる</a></h1> <p>これは前述の技術習得を対外的に見せたいタイプですね。</p> <p>今後就職・転職活動が控えている人、フリーで仕事を受けることがある人などが、そこで上手く活用できるように、 <strong>わかりやすく作ったものを見せられることが大切</strong> です。もちろん社内で「新しいことに挑戦させてもらうための説得材料とする」場合等にも有効ですね。</p> <p>このタイプの方は <strong>「使った技術がしっかりアピールできること」</strong> が目標ですね。</p> <p>そのためにはまず</p> <ul> <li>サービス・アプリを公開して誰でも触れる状態にしておくこと</li> <li>使った技術などをしっかりブログなど解説・まとめておく</li> </ul> <p>といいでしょう。</p> <p>最近のQiitaではWebサービスを作ったら、使った技術についてまとめつつ集客するという記事が多いのでその波に乗ってもいいかもしれません。十分にユーザーが集まったらさらなるアピールにも繋がりますし。</p> <p>サービス・アプリ開発を起点に就職・転職が決まったら目標達成ですね。</p> <h1 id="作りたいものをつくる・ライフワーク"><a href="#%E4%BD%9C%E3%82%8A%E3%81%9F%E3%81%84%E3%82%82%E3%81%AE%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8B%E3%83%BB%E3%83%A9%E3%82%A4%E3%83%95%E3%83%AF%E3%83%BC%E3%82%AF">作りたいものをつくる・ライフワーク</a></h1> <p>とにかく<strong>作りたいものをとにかく作る</strong> 。趣味であり、それで収入が得られれば最高のライフワークになるというタイプ。</p> <p>思いついたらプライベートの時間を削ってでもどんどん作ってしまうあなたは個人開発の申し子です。</p> <p>このタイプはもう作れたら幸せなので、 <strong>作る時間を確保できればOK</strong> 、目標とかそういうの自体は必要ありませんね。</p> <p>しいて言えばそれによってお金が得られてもっともっと開発を行う時間が取れたら言うこと無いですね。なので集客やマネタイズについてもっと力を入れていってもいいのかもしれません。次のステップは開発時間の最大化です。</p> <h1 id="自分・知り合いが欲しがっているサービスをつくる"><a href="#%E8%87%AA%E5%88%86%E3%83%BB%E7%9F%A5%E3%82%8A%E5%90%88%E3%81%84%E3%81%8C%E6%AC%B2%E3%81%97%E3%81%8C%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E3%81%A4%E3%81%8F%E3%82%8B">自分・知り合いが欲しがっているサービスをつくる</a></h1> <p>「こういうのあったらいいな〜」という声を耳にしたあなたはシャシャっとプロダクト開発に着手します。その人にヒヤリングしながら欲しがっていたものを作ってみましょう。</p> <p>それが動くようになって <strong>「欲しがっていた要望が満たされた」ら目標達成</strong> です。パチパチパチパチ</p> <p>とはいえ一人が欲しいと言ってたら、同じような要望を持った方は実は他にももっとたくさんいるはずです。</p> <p>なので自分・知り合いのために作ったものですが、 <strong>どうせならたくさんの人が使っても問題ない形にして公開できると、もっといろんな人を幸せにできるかも</strong> しれません。</p> <h1 id="サービス・アプリで生計を立てる"><a href="#%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%83%BB%E3%82%A2%E3%83%97%E3%83%AA%E3%81%A7%E7%94%9F%E8%A8%88%E3%82%92%E7%AB%8B%E3%81%A6%E3%82%8B">サービス・アプリで生計を立てる</a></h1> <p>これを目標にしている人は少なくないと思います。3の「作りたいものをつくる・ライフワーク」の人も、開発時間の最大化を求めたらここに行き着くのではないでしょうか。</p> <p>目標は <strong>「マネタイズをしっかりやって、生活できるレベルの収入になる」こと</strong> でしょうか。それによって好きなことに時間を使えるようになるといいですね。</p> <p>もしかしたらそこからスケールして起業とかも選択肢になるのかな?個人開発とはまた話が変わってしまいますが。</p> <p>個人開発はとにかく</p> <ul> <li>小回りが効くこと</li> <li>自分の人件費を無視するとほぼ出金ゼロでできること</li> <li>ニッチな市場でも個人の収入には十分なポイントがある</li> </ul> <p>などが企業と比べて有利な点なので、それを活かして進めていければと思います。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>以上個人開発の目標と達成に関する記事でした。</p> <p>みんながみんな「個人サービスで生計をたてる」を目指しているわけではないため、その目標を明確にすることで、各々がやることを決めていければと、と思いこの記事を書きました。</p> <p>この記事によってあなたの個人開発が捗ると嬉しいです。</p> <p>おわり</p> nabettu tag:crieit.net,2005:PublicArticle/14652 2018-12-13T09:27:14+09:00 2018-12-22T01:57:35+09:00 https://crieit.net/posts/comets-Crieit cometsを支える技術 ~ Crieit 個人開発サービスに用いられている技術アドベントカレンダー ~ <p>こんにちは!渡邊です!</p> <p>この記事はCrieitでの <a href="https://crieit.net/advent-calendars/2018/technology">個人開発サービスに用いられている技術 Advent Calendar 2018</a> の13日目の記事です。</p> <p>今回はcometsというWebサービスについて書きます。</p> <h1 id="cometsとは"><a href="#comets%E3%81%A8%E3%81%AF">cometsとは</a></h1> <p><a href="https://crieit.now.sh/upload_images/fdf96fa641766d9c51a42d3b2fd861075c11a70d5819c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fdf96fa641766d9c51a42d3b2fd861075c11a70d5819c.png?mw=700" alt="6A87C1DD-D636-4262-A1D3-4AC7A54331E3.png" /></a></p> <p><a target="_blank" rel="nofollow noopener" href="https://comets.nabettu.com">https://comets.nabettu.com</a></p> <p><strong>発表スライド上にコメントが流せるWebサービス</strong>です。</p> <p>Google Slideなどでブラウザを利用して発表しているスライドの上に、視聴者からのコメントをリアルタイムに流せるサービスとなっております。</p> <p>こないだのjs祭りで使われた様子はこちら↓</p> <p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/kokushing/status/1063688045327601664">https://twitter.com/kokushing/status/1063688045327601664</a></p> <p>(こくしんよく撮れてる動画ありがとう!)</p> <h1 id="これを使うとどうなる"><a href="#%E3%81%93%E3%82%8C%E3%82%92%E4%BD%BF%E3%81%86%E3%81%A8%E3%81%A9%E3%81%86%E3%81%AA%E3%82%8B">これを使うとどうなる</a></h1> <p>普通のスライド発表って発表者の言いたいことを言って終わりになりがちですが、これを使うと<strong>一方通行にならずにインタラクティブな発表が出来ます</strong>。「リアクション」だったり「質問」などをそのタイミングで見ている人が投げる事ができるのです。</p> <p>終わった後に「質問ある人〜?」などで聞いてもシャイな人はなかなか手を挙げられないと思います。そこで、cometsがあれば匿名で意見を送る事ができます。</p> <p>また、QRコード生成機能があるので、cometsの画面で作ったQRコードをスライドに貼っておくとスムーズに共有出来ます。</p> <h2 id="アンケートを集計するのにも使えます"><a href="#%E3%82%A2%E3%83%B3%E3%82%B1%E3%83%BC%E3%83%88%E3%82%92%E9%9B%86%E8%A8%88%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AB%E3%82%82%E4%BD%BF%E3%81%88%E3%81%BE%E3%81%99">アンケートを集計するのにも使えます</a></h2> <p>cometsにはボタンを押すだけで簡単に定形のコメントを送れます。そのボタンの中に🍎や🍌などの果物ボタンが5つあります。</p> <p>これを使うと、スライドに質問を書いておいて会場の視聴者にそのままアンケートをとれます。</p> <p>例)発表スライドは何でつくってる?</p> <ul> <li>🍎Keynote</li> <li>🍊PowerPoint</li> <li>🍌Google Slide</li> <li>🍇Slides</li> <li>🍈Prezi</li> <li>その他(コメントで)</li> </ul> <p>のようなスライドを作っておいて当日にアンケートを取れます。</p> <p>アンケートによって話す内容を変えると非常にいい発表が出来ると思います。(「Netlifyについて知らない人が多いみたいだから詳しく話そう」とかとか)</p> <p>ぜひ取り入れてみてください!</p> <h1 id="どうやって作ってるの? 発表者編"><a href="#%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E4%BD%9C%E3%81%A3%E3%81%A6%E3%82%8B%E3%81%AE%EF%BC%9F+%E7%99%BA%E8%A1%A8%E8%80%85%E7%B7%A8">どうやって作ってるの? 発表者編</a></h1> <p>発表者がGoogle Slideを起動している画面で、指定のブックマークレットを実行します。Chromeエクステンションではないので、どんなブラウザでも基本的に機能します。</p> <p>実行すると視聴者と共有する合言葉を入れる欄が出てくるので、合言葉を入力してコメントを受け取ります。</p> <p>裏側ではFirebaseのRealtime Databeseを利用して、視聴者がDBに追加したデータを検知して、同じ合言葉のテキストを画面に追加します。</p> <p>画面に追加されたテキストはCSSアニメーションで右から左に流れていきます。</p> <h1 id="どうやって作ってるの? 視聴者編"><a href="#%E3%81%A9%E3%81%86%E3%82%84%E3%81%A3%E3%81%A6%E4%BD%9C%E3%81%A3%E3%81%A6%E3%82%8B%E3%81%AE%EF%BC%9F+%E8%A6%96%E8%81%B4%E8%80%85%E7%B7%A8">どうやって作ってるの? 視聴者編</a></h1> <p>コメント画面はNetlifyでホスティングされた静的Webサイトで、画面を開くとFirebaseに匿名ログインして、コメント書いて送信ボタンを押すとFirebaseのRealtime DBに書き込みます。</p> <p>開くURLには合言葉をパラメータでセットできるので、そのままURLをシェアも出来ます。</p> <p>Twitterにそのままつぶやくチェックをオンにしておくと、コメントを送ってそのままTwitterの投稿画面に遷移出来るようになっています。その際<strong>合言葉はハッシュタグになる</strong>ので、イベント指定のハッシュタグがある場合にはそれを合言葉としておくといいでしょう。</p> <p>FirebaseのDBにはFirestoreという上位互換的なものもあるんですが、リアルタイムなデータのやり取りに関してはRealtime DBをFunctionsなどを挟まずに利用するのが早いです。</p> <h1 id="今後の展望"><a href="#%E4%BB%8A%E5%BE%8C%E3%81%AE%E5%B1%95%E6%9C%9B">今後の展望</a></h1> <ul> <li>合言葉が日本語のときにQRコードがバグる</li> <li>Twitterでハッシュタグのツイートがあったらそのままcometsと同じように流す機能</li> <li>electronでローカルのスライドツールでもコメントを流せるようにする機能</li> <li>サイトがBootstrapバリバリなのでモダンなデザインにする</li> </ul> <p>などを、時間あるときにやろうと思っています。</p> <p>ぜひ皆さんcometsを使って、インタラクティブな発表をやってみてください!</p> <p>明日はあの<a target="_blank" rel="nofollow noopener" href="https://twitter.com/naichilab">naichi</a>さんが unityroomを支える技術について話してくれます!明日もまた見てくれよな!</p> nabettu tag:crieit.net,2005:PublicArticle/14620 2018-12-03T01:50:10+09:00 2018-12-07T05:35:02+09:00 https://crieit.net/posts/433f31068cf07436430468ddf9b650be 読まれる技術記事を書くには?技術記事を書く時のポイントまとめてみた <p><a href="https://crieit.net/advent-calendars/2018/crieit">Crieitのアドベントカレンダー</a>3日目です。担当の渡邊がお送りいたします。</p> <p>みなさん、qiitaや自分のブログ、はたまたCrieitなどに技術記事書いていますか?</p> <p>せっかく技術記事投稿サイトのアドベントカレンダーなので、<strong>技術記事自体を書くこと</strong>について書きます。</p> <p>ノウハウと見せかけて当たり前の事を書こうと思います。</p> <h1 id="そもそも技術記事って書くべきなのか"><a href="#%E3%81%9D%E3%82%82%E3%81%9D%E3%82%82%E6%8A%80%E8%A1%93%E8%A8%98%E4%BA%8B%E3%81%A3%E3%81%A6%E6%9B%B8%E3%81%8F%E3%81%B9%E3%81%8D%E3%81%AA%E3%81%AE%E3%81%8B">そもそも技術記事って書くべきなのか</a></h1> <p>エンジニアじゃなくても<strong>「情報発信」は大事</strong>です。フリーランスじゃなくともそこから仕事につながることもあるでしょう。100%<strong>書かないよりは書いたほうがいい</strong>。</p> <p>もちろん仕事をとってくる目的で書いてるなら立派な営業活動なので書くべき。最新情報とかの発信はブランディングになるんですよね〜mizchiさんとかすごい。</p> <p>そうでない方も、エラーで困った内容とかはできるだけログとして残しておくといいでしょう。どうせ3ヶ月後に同じでエラーが出て自分が読むことになります。笑</p> <p>とはいえ無理してまで書くのは微妙ではある。コードを書く時間を減らさないように、息抜きレベルにしよう。</p> <h1 id="せっかくなら読まれたいよね"><a href="#%E3%81%9B%E3%81%A3%E3%81%8B%E3%81%8F%E3%81%AA%E3%82%89%E8%AA%AD%E3%81%BE%E3%82%8C%E3%81%9F%E3%81%84%E3%82%88%E3%81%AD">せっかくなら読まれたいよね</a></h1> <p>そしてせっかく書いた技術記事、どうせならたくさんの人に読まれたいですよね。</p> <p>まず技術記事ってどんな種類のがあるか、分類しました</p> <ul> <li>トレンド発信</li> <li>困った事をまとめた記事</li> <li>自分で調べる必要があってついでにまとめた記事</li> <li>作っていたものを事例として紹介した記事</li> <li>人に聞かれた事を書く記事</li> <li>ポエム</li> </ul> <p>それぞれについて、読まれるための大事なポイントを書いていきます。</p> <h2 id="読まれるトレンド記事"><a href="#%E8%AA%AD%E3%81%BE%E3%82%8C%E3%82%8B%E3%83%88%E3%83%AC%E3%83%B3%E3%83%89%E8%A8%98%E4%BA%8B">読まれるトレンド記事</a></h2> <p>トレンド記事はとにかく<strong>スピードが大事</strong>!</p> <p>界隈の人が「お、新しいライブラリが出てるな〜」とか、なんだなんだと言っている3日以内にさっと記事を出しましょう。</p> <p>そしてトレンド記事は簡潔であることが結構大事。あくまで概要を知りたいって人が中心なので。</p> <p>そのため「わかった気にさせる」ような内容を書けると「あ〜React hooksね。完全に理解した」って言ってシェアできる。</p> <p>あとはブログじゃなくてもいいかも。TwitterとかYoutubeでいい場合もある。</p> <h2 id="困った事をまとめる"><a href="#%E5%9B%B0%E3%81%A3%E3%81%9F%E4%BA%8B%E3%82%92%E3%81%BE%E3%81%A8%E3%82%81%E3%82%8B">困った事をまとめる</a></h2> <p>これはとにかくエラーログが大事!</p> <p>できればタイトルに<strong>エラーで出る一番重要な文言を入れましょう</strong>。</p> <p>これはそのエラーでググった人がたどり着けるようにです。つまり、書いてすぐ読まれることは期待してはいけません。</p> <p>あとはそうすると、ググってヒットする必要があるので最低限のSEOが大事!teratailで回答ゼロの質問に負けたりしたら目も当てられません笑</p> <p>エラーじゃないとしても「〇〇が効かない」とか、ググられそうな形のタイトルにしましょう。</p> <p>とはいえニッチなエラー文言で記事書いてたら大丈夫な気もします。</p> <p>自分が忘れたころに過去の自分に感謝することになったりもします。</p> <h2 id="自分で何かを調べる必要があってまとめた記事"><a href="#%E8%87%AA%E5%88%86%E3%81%A7%E4%BD%95%E3%81%8B%E3%82%92%E8%AA%BF%E3%81%B9%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%81%A3%E3%81%A6%E3%81%BE%E3%81%A8%E3%82%81%E3%81%9F%E8%A8%98%E4%BA%8B">自分で何かを調べる必要があってまとめた記事</a></h2> <p>これは<strong>網羅性が大事</strong>!</p> <p>比較記事を書くとしてもリファレンス的記事を書くとして、長くなってもしっかり網羅的に書かれていることが大切です。</p> <p>「これとこれで、結局速度はどっちのが早いんだ・・・???」ってなって離脱されるようなことは避けたい</p> <p>あとこれもSEO大事かな〜そのワードで上位表示してないと読まれないので。</p> <h2 id="自分で作っていたものについて事例として紹介して書く"><a href="#%E8%87%AA%E5%88%86%E3%81%A7%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%84%E3%81%9F%E3%82%82%E3%81%AE%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E4%BA%8B%E4%BE%8B%E3%81%A8%E3%81%97%E3%81%A6%E7%B4%B9%E4%BB%8B%E3%81%97%E3%81%A6%E6%9B%B8%E3%81%8F">自分で作っていたものについて事例として紹介して書く</a></h2> <p>しっかり<strong>宣伝になるように書く</strong>のが大事!</p> <p>結局その作ったものに人が来てくれないのなら、それ載せる意味ないやん。</p> <p>理想は「プロダクトローンチ」→「このサービスのここどうやって作ってるんだ!?」→「うわ〜解説記事あるやんなるほどなシェアシェア」ってなること。</p> <p><strong>ただただ宣伝したいだけの記事はノイズ</strong>だ〜qiitaじゃないとこに書いてくれ〜</p> <p>とかこういうの気にしなきゃならないような内容がある記事は自分のブログに書いたほうがいいよ。文句いわれないでしょう。</p> <p>あくまでqiitaに書きたい時にはちゃんと技術的な内容を中心に書くのよ〜(あたりまえ)</p> <h2 id="人に聞かれた事を書く"><a href="#%E4%BA%BA%E3%81%AB%E8%81%9E%E3%81%8B%E3%82%8C%E3%81%9F%E4%BA%8B%E3%82%92%E6%9B%B8%E3%81%8F">人に聞かれた事を書く</a></h2> <p>誰かに質問された内容を記事に落とし込む場合。2回も同じ事違う人に聞かれても記事のURLをシュッと出すことでありがたがられる。</p> <p>これは<strong>聞かれた人が満足する内容だったのかどうか</strong>が大事。内容について聞いてきた人にチェックしてもらうとより良いかな〜</p> <p>あとは、<strong>聞かれるってことは確実に需要がある</strong>記事なので、そういう機会があったらしっかり記事に書いたほうがいいよ。</p> <h2 id="ポエム"><a href="#%E3%83%9D%E3%82%A8%E3%83%A0">ポエム</a></h2> <p><strong>エモさが大事</strong>。なにはなくともエモ散らかしましょう。エモさがあれば、あとは何もいらない。裸になるほど読まれますよ。ザッツインターネット。</p> <h1 id="どこで書くか問題"><a href="#%E3%81%A9%E3%81%93%E3%81%A7%E6%9B%B8%E3%81%8F%E3%81%8B%E5%95%8F%E9%A1%8C">どこで書くか問題</a></h1> <p>次にどこで発信したらいいんだ〜っての結構悩みどころですね。</p> <h2 id="qiita"><a href="#qiita">qiita</a></h2> <p>先程も触れましたが、qiitaはコミュニティなので、公式のコミュニティガイドラインがあります。それにそった記事を書いていれば、ランキング機能だったりSEOもよかったりして結構読まれるようになりますね。困ったらqiitaでいいかも。</p> <h2 id="自分のブログ"><a href="#%E8%87%AA%E5%88%86%E3%81%AE%E3%83%96%E3%83%AD%E3%82%B0">自分のブログ</a></h2> <p>自分で立ち上げたブログなら何を書いても文句は言われません。「技術記事なのかどうか怪しいから」とか迷う必要もない。</p> <p>ただ、ホスティングを自分でやる必要があるのは正直めんどくさい。笑</p> <p>しかしそれ自体が技術アピールになったりしますので、ポートフォリオ代わりに作ってしまうのもあり。</p> <p>「俺様のサイトはGatsby.jsだ。お前のサイトより早い」(これGatsbyの謳い文句ね)</p> <p>そして細かいところが気になって、肝心の記事が書けないという負のスパイラルに陥らないように笑</p> <h2 id="QrunchやCrieit"><a href="#Qrunch%E3%82%84Crieit">QrunchやCrieit</a></h2> <p>そこでポエムだろうがなんだろうが書き散らかしてもいい上に無料の記事投稿サービスがありますから、この辺を使うのもいいですね。</p> <h2 id="note"><a href="#note">note</a></h2> <p>SEOは強そうですね。ただ、エディタの書き心地が地獄なので私はマークダウンエディタが出たらなにかしら書こうと思います。有料にもできるし。</p> <h1 id="全体的に書くときに重要なポイント"><a href="#%E5%85%A8%E4%BD%93%E7%9A%84%E3%81%AB%E6%9B%B8%E3%81%8F%E3%81%A8%E3%81%8D%E3%81%AB%E9%87%8D%E8%A6%81%E3%81%AA%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88">全体的に書くときに重要なポイント</a></h1> <h2 id="タイトルが大事"><a href="#%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%81%8C%E5%A4%A7%E4%BA%8B">タイトルが大事</a></h2> <p><strong>使った技術内容とか引きになるようなものを織り込む</strong>のが大事。30字とかよりは長くならないようにしたい(google検索で文字が切れる限界そんなもんじゃなかったっけ)</p> <h2 id="記事を書いた日付がわかるようにしておく"><a href="#%E8%A8%98%E4%BA%8B%E3%82%92%E6%9B%B8%E3%81%84%E3%81%9F%E6%97%A5%E4%BB%98%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8B%E3%82%88%E3%81%86%E3%81%AB%E3%81%97%E3%81%A6%E3%81%8A%E3%81%8F">記事を書いた日付がわかるようにしておく</a></h2> <p>qiitaなんかは「この記事は古いぜ〜」って勝手に出してくれるからありがたい。個人ブログはそもそも日付の表示忘れてたりするよね。古い記事は古いとちゃんと書いておかないと自分も後で困る。</p> <h2 id="動作環境などもできるだけ書いておく"><a href="#%E5%8B%95%E4%BD%9C%E7%92%B0%E5%A2%83%E3%81%AA%E3%81%A9%E3%82%82%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%A0%E3%81%91%E6%9B%B8%E3%81%84%E3%81%A6%E3%81%8A%E3%81%8F">動作環境などもできるだけ書いておく</a></h2> <p>そしてバージョン情報とかはできるだけ載せておこう。再現環境がcodepenとかであると最高。</p> <h1 id="短くても書いたほうがいいの?"><a href="#%E7%9F%AD%E3%81%8F%E3%81%A6%E3%82%82%E6%9B%B8%E3%81%84%E3%81%9F%E3%81%BB%E3%81%86%E3%81%8C%E3%81%84%E3%81%84%E3%81%AE%EF%BC%9F">短くても書いたほうがいいの?</a></h1> <p>以前はてな匿名ブログで「ゴミ記事を書くな」みたいなエントリーがありました。</p> <p><span style="font-size: 200%">るせぇぇぇぇーーーー!!!!!</span></p> <p>どんなに短くても書かないよりも書いたほうがいいです。</p> <pre><code>エラー文言 hoge.js の3行目に fuga この1行書いたら直った </code></pre> <p>たった3行でも、価値があります!</p> <p><strong>同じエラーで困っている誰かの助けになるかも</strong>しれません。</p> <p>たとえ間違っていても、間違っている記事をググって出ないようにするのはgoogleの仕事なので、<strong>あなたは気にせずアウトプットしていい</strong>のです。</p> <p>また、Qiitaには「編集リクエスト」って素敵な機能がありますよ!ミスってるのに気づいたらリクエスト送ってあげて。</p> <p>あとQrunchは「ログ」って機能があって、ユーザーが執筆時にググっても出てこないようにするように設定する機能もあるので、気になったらログに設定とかもアリ。</p> <p>なにはなくとも、書く余裕があるなら、書きましょう。マイナスになることはないです。</p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <ul> <li>書く記事によって読まれるポイントがあるので意識しよう</li> <li>まぁそもそもほとんどの記事は読まれませんので、読まれなくても気にすんな</li> <li>できるだけ親切丁寧に書いたほうがいいけど、しんどかったらさっと出してしまおう</li> <li>場所はどういうアウトプットをしていきたいかによって変えてもいいかも</li> <li>あとはとにかく書いて徳を積みましょう</li> </ul> <p>以上です。</p> <p>明日はクソアプリ友達の<a target="_blank" rel="nofollow noopener" href="https://twitter.com/ampersand_xyz">あんどさん</a>がいい感じの記事を書いてくれます!</p> nabettu tag:crieit.net,2005:PublicArticle/14615 2018-12-01T10:08:55+09:00 2018-12-18T14:35:56+09:00 https://crieit.net/posts/9a531cc77a86bfec6a0ad932dac69b56 日本語のフリーフォントを一度に試せる「ためしがき」に用いられている技術について <p>この記事はcrieitでの <a href="https://crieit.net/advent-calendars/2018/technology">個人開発サービスに用いられている技術 Advent Calendar 2018</a> における記念すべき1日目の記事です。</p> <h1 id="このアドベントカレンダーの趣旨"><a href="#%E3%81%93%E3%81%AE%E3%82%A2%E3%83%89%E3%83%99%E3%83%B3%E3%83%88%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%81%AE%E8%B6%A3%E6%97%A8">このアドベントカレンダーの趣旨</a></h1> <p>「アドベントカレンダー」という文化については触れませんのであしからず。</p> <p>この「個人開発サービスに用いられている技術」というカレンダーの言い出しっぺなので、軽く趣旨を説明したいと思います。</p> <p>このカレンダーで皆さんに書いてもらいたいのは、個人でwebサービスやアプリを開発している方が自分のサービスをどのように作ったかというのを熱く語っていただきたいと思ったからです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/Neko_Inu_/status/1063308508718755840">運営者ギルド</a>というslackコミュニティで個人開発者が集まってワイワイやってるんですが、そこのメンバーを中心にして</p> <ul> <li>日頃作ってるサービスの技術面がどうなっているかをこの機会に共有しあって、今後お互いに困った時にスムーズに聞けるようになるといいな〜</li> </ul> <p>というのと</p> <p>私自身webサービスが作るのも使うのも好きで、特に技術的に何を使って実現しているのかを考えるのも趣味だったりします。<br /> それで過去にこのような「Webサービス分解」というテーマで記事を書いたりもしました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://blog.nabettu.com/entry/disassembly-peing">「#Webサービス分解 「Peing-質問箱-」の分解」</a></p> <p>それで、それぞれみんなが自分で解説してくれると非常に面白い記事が出来上がるのではないかと考えたからです。</p> <p>ということで、まずは私から個人で運営している「ためしがき」というサービスについて解説していきます。</p> <h1 id="ためしがきとは"><a href="#%E3%81%9F%E3%82%81%E3%81%97%E3%81%8C%E3%81%8D%E3%81%A8%E3%81%AF">ためしがきとは</a></h1> <p><a target="_blank" rel="nofollow noopener" href="https://tameshigaki.jp/"><a href="https://crieit.now.sh/upload_images/c181415c1e544827d52f4376408b9da55c01de7b53db5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c181415c1e544827d52f4376408b9da55c01de7b53db5.png?mw=700" alt="ためしがき" /></a></a></p> <p>日本語の商用利用可能なフリーフォントをまとめて試せて、そのままシェアしたり配布先にリンクしたりできるサイトです。今回はこのサービスの技術面について書いていきます。</p> <h1 id="ためしがきに用いられている技術"><a href="#%E3%81%9F%E3%82%81%E3%81%97%E3%81%8C%E3%81%8D%E3%81%AB%E7%94%A8%E3%81%84%E3%82%89%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E6%8A%80%E8%A1%93">ためしがきに用いられている技術</a></h1> <h2 id="フロントエンド編"><a href="#%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%E7%B7%A8">フロントエンド編</a></h2> <p>このサイトはサーバーレスSPAとなっており、Vue.jsのフレームワークであるNuxt.jsを利用して開発しております。</p> <p>デザインは特にCSSフレームワークなど使わずにすべて自前でCSSを書いています。</p> <p><a href="https://crieit.now.sh/upload_images/d38e4f82abbc9b8a285b5eae0e55337c5c01ded0ac060.gif" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d38e4f82abbc9b8a285b5eae0e55337c5c01ded0ac060.gif?mw=700" alt="20181127143603.gif" /></a></p> <p>このモーダルが開くときのアニメーションや、ボタン色が反転したりというアニメーションも基本的には自前のCSSアニメーションで実現しています。消しゴムも。</p> <p>PCで見た際に文字数に応じてプレビューのコンポーネントのサイズが動的に変わっていく部分は、頑張って計算して数を決めているんですが、Gridとかにしたらもっと楽だったかも。追々直していきたいですね。</p> <p>フォントの読み込みはのりぴー先輩のこの本を参考にして、ページ読み込みの際に一気にpreloadさせています。20MBくらいあります😥</p> <p><a target="_blank" rel="nofollow noopener" href="https://amzn.to/2Q7fZPy">誰でもつかえる!ウェブフォント実践マニュアル</a></p> <p>あとは計量化のためにフォントファイルはすべてWoff2形式で配信しています。</p> <h3 id="縦書き機能"><a href="#%E7%B8%A6%E6%9B%B8%E3%81%8D%E6%A9%9F%E8%83%BD">縦書き機能</a></h3> <p>これこないだ追加した新機能なんですが、せっかく法人なのでPR TIMESさんにプレス売ったりしてみました。</p> <p><a target="_blank" rel="nofollow noopener" href="]https://prtimes.jp/main/html/rd/p/000000001.000034255.html">日本語のフリーフォントが一度に試せる「ためしがき」が縦書き対応しました!</a></p> <p>これもCSSで縦書きできないか〜って色々実験していたんですが、結果Safariとかで崩れたり、縦書き対応のフォントとそうでないフォントがあって切り分けが難しいことなど色々ありまして、結局縦書きCSSはやめました。</p> <p>じゃあどうやって縦書きしているかというと、デベロッパーツールを見てもらうとわかるんですが1文字づつDomを分けて、かっこや点などの役物は回転や移動をして調整という形になりました。これだとフォントが縦書き対応しているかどうかは関係なくなります。</p> <p>こちらの実装は前職のスーパーエンジニアの中山さんの作った西尾維新の公式サイトの方式等を参考にしています。</p> <p><a target="_blank" rel="nofollow noopener" href="http://ni.siois.in/">西尾維新公式サイト</a></p> <p>(このサイト作られたの結構前なんですが、今見てもヤバさがヤバい)</p> <p>結構CSS以外でもCanvasを使ってjavascriptで縦書きを実現する際にもこの手法をとられている場合が多いですね。<strong>フォントに依存しない</strong>というのが今回大量のフォントを利用するためしがきでは重要でした。</p> <h2 id="バックエンド編"><a href="#%E3%83%90%E3%83%83%E3%82%AF%E3%82%A8%E3%83%B3%E3%83%89%E7%B7%A8">バックエンド編</a></h2> <h3 id="ホスティング"><a href="#%E3%83%9B%E3%82%B9%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0">ホスティング</a></h3> <p>ブランチ毎の確認やフォントを本番化前の確認ページにはNetlifyを利用しています。</p> <p>本番環境のみFirebaseというサービスのHostingを利用しています。(CDNの速さがNetlifyはまだ少し遅いため)</p> <h3 id="フォントのシェア機能"><a href="#%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88%E3%81%AE%E3%82%B7%E3%82%A7%E3%82%A2%E6%A9%9F%E8%83%BD">フォントのシェア機能</a></h3> <p>ユーザーが指定のフォントで任意の文言でシェアを行う機能は基本的にfirebaseを利用していて、</p> <ol> <li>html2canvasでクライアントサイドで画像化</li> <li>firebase Storageにアップロード</li> <li>strageのURLや文言をfirestoreに保存</li> <li>firestoreで発行されたIDをもとにシェア用URL発行</li> <li>シェア先のURLをgetするとOPimageに「storageに保存された画像が設定されたhtml」を返却するfirebase functionsが起動</li> <li>5.にアクセスするとtameshigakiのtopへリダイレクト</li> </ol> <p>という流れになっております。</p> <p>1の画像化については、ユーザーの環境によっては不安定なためpuppeteerでの画像発行を試みようとしましたが、functionsでpuppeteer起動して画像発行・・・とすると待ち時間が多いため一旦クライアントサイドでの発行としています。これもチューニングして再挑戦したいですね。</p> <h2 id="CI環境など"><a href="#CI%E7%92%B0%E5%A2%83%E3%81%AA%E3%81%A9">CI環境など</a></h2> <p>Firebase Hostingはビルド環境などがないため、githubにpushしたのを検知してCircle CIでbuildしてfirebase hostingへdeployしてもらっています。</p> <h2 id="運用"><a href="#%E9%81%8B%E7%94%A8">運用</a></h2> <p>フォントファイルの管理はヘッドレスCMSのcontentfulで行っています。</p> <p>ただ、フォントファイルが重たい&フォント情報の更新はあまり頻度が高くないためビルド時にcontetntfulからダウンロードしてきてbuildファイルに混ぜてdeployしております。</p> <h1 id="今後の展望"><a href="#%E4%BB%8A%E5%BE%8C%E3%81%AE%E5%B1%95%E6%9C%9B">今後の展望</a></h1> <ul> <li>フォントの追加作業が大変で全然出来ていないので、ぼちぼち進めていこうと思っています。</li> <li>フリーフォントを使ってブログ用OGP画像を作る機能とかもあったらいいかな〜と考えています。</li> <li>どこかデザイン系でシナジーがある会社さん、有料フォントのサブスクリプションを行っているサービスさん、なにかしら協業したりできればと思っていますので心当たりある方はご連絡いただけると幸いです。</li> </ul> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>こんな感じで個人で作ったサービスをどのように作っているかというのを、カレンダーに登録したメンバーも書いていってくれます!明日は「Nyaaanを支える技術」で<a target="_blank" rel="nofollow noopener" href="https://twitter.com/morix1500">morixさん</a>!頼んだ!</p> <p>また、カレンダーにはまだ空きがありますので、参加したいからは遠慮なくどうぞ!!!</p> <p><a href="https://crieit.net/advent-calendars/2018/technology">個人開発サービスに用いられている技術 Advent Calendar 2018</a></p> nabettu tag:crieit.net,2005:PublicArticle/14547 2018-09-20T10:05:48+09:00 2018-10-31T10:29:50+09:00 https://crieit.net/posts/037ff25795b66d00a85cfce714cfce99 静的サイトを公開するならどこがいいの? #技術書典 <p><a href="https://crieit.now.sh/upload_images/4cf58d0cd308adaf31acb59bed16c2955ba31ad0984c9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4cf58d0cd308adaf31acb59bed16c2955ba31ad0984c9.png?mw=700" alt="staticsite.png" /></a></p> <p>SPAなどの静的サイト(PHPやRubyなどのサーバープログラムを走らせない環境でのWebサイト)のを公開するにあたって、運用・配信(ホスティング)するならどこがいいかと聞かれたのですが、そのときの回答を技術書典の宣伝も兼ねてブログにしたためます。</p> <p>今回は次の4つで比較しています。</p> <ul> <li>GitHub Pages</li> <li>Firebase Hosting</li> <li>GitLab Pages</li> <li>Netlify</li> </ul> <p>上記4つはどれも<strong>独自ドメインの設定は無料</strong>で行うことが出来ます。</p> <p>※比較的初心者に向けて書いている前提です。そのためAWS S3やレンタルサーバーはアカウントがなければ設定も面倒ですし今回は除外しています。</p> <p>少し機能について説明が必要な部分があるので、先に説明を書きます。</p> <h2 id="Rewrite設定について"><a href="#Rewrite%E8%A8%AD%E5%AE%9A%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">Rewrite設定について</a></h2> <p>SPAで静的サイトを公開する際にありがちなミスなのですが、URLを変更してサブディレクトに進んでからリロードすると404ページになってしまうというものです。</p> <p>これは公開サイトでページの404のRewrite設定が出来ていない場合に起こってしまう事象です。</p> <p>「ファイルの読み込み時に404だったら index.html を返す設定」をすることで、リロードしても継続してサイト閲覧することが可能になります。(その場合はJavaScriptで404ページかどうかを判定します。)</p> <p>設定が出来ない環境でSPAのルーティングを利用する場合はハッシュルーターにする必要があります。</p> <h2 id="ビルド機能について"><a href="#%E3%83%93%E3%83%AB%E3%83%89%E6%A9%9F%E8%83%BD%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">ビルド機能について</a></h2> <p>プロジェクトによってはWebpackなどを利用して、html,css,jsファイルをコンパイル(トランスパイル)してから公開すると思います。</p> <p>そのときにビルド機能がついている環境の場合は、「手元でビルドしたものをgitで管理したり、ビルドしてからdeployする」等の手間が省けます。</p> <p>テストを書いていたらテストが通るかどうかなどもそこでチェックして、デプロイするかどうかを選択できたりもします。</p> <h1 id="各サービスの機能を紹介"><a href="#%E5%90%84%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E6%A9%9F%E8%83%BD%E3%82%92%E7%B4%B9%E4%BB%8B">各サービスの機能を紹介</a></h1> <h2 id="GitHub Pages"><a href="#GitHub+Pages">GitHub Pages</a></h2> <ul> <li>とにかくタダで使えます!</li> <li>使えますが、下記の記事のような制限があります</li> </ul> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/tonishi/items/e5696b477278f3c49b77">https://qiita.com/tonishi/items/e5696b477278f3c49b77</a></p> <ul> <li>設定した特定のブランチが自動で公開されるので管理が楽。</li> <li>×: SPA用のRewrite設定不可</li> <li>×: ビルド機能無し</li> </ul> <h2 id="Firebase Hosting"><a href="#Firebase+Hosting">Firebase Hosting</a></h2> <ul> <li>△: たくさんアクセスがあるとデータ容量に応じて課金が必要になります</li> </ul> <p>(無料枠で利用していて制限まで行ったら、通知が来るのみで勝手に課金されるようなことはありません。)</p> <ul> <li>SPA用のRewrite設定可能</li> <li>特定のパスをFirebase Functionsに繋ぐことができる</li> <li>×: ビルド機能無し</li> </ul> <h2 id="GitLab Pages"><a href="#GitLab+Pages">GitLab Pages</a></h2> <ul> <li>とにかくタダで使える</li> <li>SPA用のRewrite設定可能</li> <li>特定のブランチが自動公開できて管理が楽</li> <li>ビルド機能アリ</li> </ul> <h2 id="Netlify"><a href="#Netlify">Netlify</a></h2> <ul> <li>とにかくタダで使える</li> <li>SPA用のRewrite設定可能</li> <li>GitHubやGitLabと連携して、静的サイトを自動で公開可能</li> <li>ビルド機能アリ</li> <li>特定のパスにAWS lambda(Netlify Functions)接続可能</li> </ul> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>すでにGitHub、GitLabでソースを管理しているとして、ライブラリのリファレンスなどのちょっとしたサイトならそれぞれのPages機能を使うと手軽です。</p> <p>Firebaseを利用していて、FunctionsとパスをつなぎたいならFirebase Hostingを利用しましょう。しかしビルド機能がないので必要な場合はCircle CIなどと併用が必要です。</p> <p>他、Firebase Functionsとつなぎたい場合を除いて<strong>便利な機能が揃っているNetlifyをおすすめ</strong>しています。Netlifyには他にもたくさんの便利な機能が備わっています。</p> <h2 id="Netlifyの上記以外便利機能紹介"><a href="#Netlify%E3%81%AE%E4%B8%8A%E8%A8%98%E4%BB%A5%E5%A4%96%E4%BE%BF%E5%88%A9%E6%A9%9F%E8%83%BD%E7%B4%B9%E4%BB%8B">Netlifyの上記以外便利機能紹介</a></h2> <ul> <li>ブランチ毎に自動でサイトを公開できる(プルリクを確認するときなど便利)</li> <li>Webhookでビルドしたり、ビルドしてデプロイしたらSlackに通知する(GitLabも可能)</li> <li>ブランチごとのA/Bテスト用に出し分けができる</li> <li>サーバーサイドレンダリングしないSPAだけど、コンテンツに応じてOGP画像などのmeta情報を出し分けられる(Prerendering機能)</li> <li>静的サイトであるあるな「フォームだけ設置したい」場合もNetlify Formが利用できる</li> <li>ブログなどを作りたい場合にコンテンツを管理できるNetlify CMSもあります</li> </ul> <p>他にもチーム開発で必要な機能や、BASIC認証の設定(有料)など様々な<strong>静的サイト公開に便利な機能が備わっています!</strong></p> <h2 id="ということで宣伝"><a href="#%E3%81%A8%E3%81%84%E3%81%86%E3%81%93%E3%81%A8%E3%81%A7%E5%AE%A3%E4%BC%9D">ということで宣伝</a></h2> <p>そんなNetlifyの様々な機能を1から10までほぼ全て実例を使って解説する本を今度の10月8日に開催される技術書典で販売しますので、いらっしゃる方はログインして下記のページをチェックしてぜひぜひ買いに来てください!!!</p> <p><a target="_blank" rel="nofollow noopener" href="https://techbookfest.org/event/tbf05/circle/24720002">https://techbookfest.org/event/tbf05/circle/24720002</a></p> <p>以上ですが、本買わなくともNetlifyはめっちゃ便利なので一度使ってみて下さい!</p> nabettu