tag:crieit.net,2005:https://crieit.net/tags/Crieit/feed 「Crieit」の記事 - Crieit Crieitでタグ「Crieit」に投稿された最近の記事 2024-05-01T18:35:39+09:00 https://crieit.net/tags/Crieit/feed tag:crieit.net,2005:PublicArticle/18825 2024-05-01T18:35:39+09:00 2024-05-01T18:35:39+09:00 https://crieit.net/posts/Crieit-66320ceb68f04 Crieitを閉鎖します <p>Crieitは閉鎖します。</p> <p>最近はほとんどがよくわからない宣伝記事みたいなものばかりになり有害性ばかりが増えていくだけになっているため、Crieitを閉鎖することとしました。</p> <p>エクスポート機能を作成だけしようとも思いましたが、恐らくほとんどのユーザー様がエクスポート機能が無くてもコピペで済む数の記事の投稿になると思いますので、開発している時間が取れないこともありエクスポート機能の提供は行わないこととしました。</p> <p>必要な方は手動でエクスポートしますので直接お申し付けください。</p> <p>閉鎖時期は未定ですが数ヶ月したら特に予告なく閉鎖させていただきます。</p> <p>ご利用していただいた方々とはとても楽しい時間を過ごせたことを思い出しました。まことにありがとうございました。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/16571 2021-01-09T12:23:32+09:00 2021-05-10T04:20:58+09:00 https://crieit.net/posts/Crieit-5ff921b4cf458 Crieit用ユーザスタイルシート <p><a target="_blank" rel="nofollow noopener" href="https://addons.mozilla.org/ja/firefox/addon/styl-us/">Stylus</a> でスタイル当ててみました。コード部分は等幅になっているのが好きなので……。</p> <pre><code class="css">pre, code { font-family: monospace !important; } p > code, li > code { color: #824 !important; } /* プレビューで hr が見えるように色を調整 */ .tui-editor-contents hr { border-top: 1px solid #ddd; } .hljs-comment { color: #99a; font-style: normal; } </code></pre> <hr /> <p>以下は見栄え確認用のサンプル。</p> <ul> <li>fdsa <code>fdsa</code> fdsa</li> </ul> <hr /> <p>fdsa <code>fdsa</code> fdsa</p> <p><a href="https://crieit.net/posts/Crieit-5ff921b4cf458">https://crieit.net/posts/Crieit-5ff921b4cf458</a></p> <pre><code class="ruby"># コメント </code></pre> sonota486 tag:crieit.net,2005:PublicArticle/16110 2020-10-05T00:21:23+09:00 2020-10-05T00:23:06+09:00 https://crieit.net/posts/Qrunch-5f79e8736ed60 Qrunch から Crieit に引越しする <h1 id="TL; DR"><a href="#TL%3B+DR">TL; DR</a></h1> <p>Qrunch から引越しました。</p> <h1 id="はじめに"><a href="#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB">はじめに</a></h1> <p>Qrunch がサービス終了することになり、引越し先を決めなければならなくなりました。</p> <p>一旦、 Crieit に移行することにし、 Qrunch との違いなどを記載しようと思います。</p> <h1 id="引越し手順"><a href="#%E5%BC%95%E8%B6%8A%E3%81%97%E6%89%8B%E9%A0%86">引越し手順</a></h1> <p>以下の手順で、手動で引越しします。</p> <ol> <li>Qrunch 記事のエクスポート</li> <li>Crieit への記事追加(下書き)</li> <li>下書き記事の公開</li> <li>Qrunch 記事のカノニカル設定付与</li> </ol> <h2 id="Qrunch 記事のエクスポート"><a href="#Qrunch+%E8%A8%98%E4%BA%8B%E3%81%AE%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88">Qrunch 記事のエクスポート</a></h2> <p>Qrunch の記事をエクスポートし、Markdown 形式のテキストファイルをダウンロードします。</p> <h2 id="Crieit への記事追加(下書き)"><a href="#Crieit+%E3%81%B8%E3%81%AE%E8%A8%98%E4%BA%8B%E8%BF%BD%E5%8A%A0%EF%BC%88%E4%B8%8B%E6%9B%B8%E3%81%8D%EF%BC%89">Crieit への記事追加(下書き)</a></h2> <p>エクスポートした記事ファイルから、次の3つを移行します。</p> <ul> <li>記事本文</li> <li>記事タイトル</li> <li>タグ/カテゴリ</li> </ul> <p>下書きとして全17記事を保存します。</p> <h2 id="下書き記事の公開"><a href="#%E4%B8%8B%E6%9B%B8%E3%81%8D%E8%A8%98%E4%BA%8B%E3%81%AE%E5%85%AC%E9%96%8B">下書き記事の公開</a></h2> <p>下書き記事を、順次公開します。<br /> 公開するごとに URL を記録しておきます。</p> <h2 id="Qrunch 記事のカノニカル設定付与"><a href="#Qrunch+%E8%A8%98%E4%BA%8B%E3%81%AE%E3%82%AB%E3%83%8E%E3%83%8B%E3%82%AB%E3%83%AB%E8%A8%AD%E5%AE%9A%E4%BB%98%E4%B8%8E">Qrunch 記事のカノニカル設定付与</a></h2> <p>Crieit に公開した記事の URL を、 Qrunch 記事のカノニカル設定 URL に付与します。<br /> カノニカル設定をすることで、 Qrunch の記事購読者の流出防止を期待してます(正しい使い方なのかは分かりませんが......)。</p> <p>Qrunch の記事は 2020/10/4 まで編集可能であったため、それまでに何としてでもこれを設定したかったです。</p> <h1 id="Tips"><a href="#Tips">Tips</a></h1> <p>単純に移行は、やはりできませんでした。<br /> そのため、いくつか移行時にコツがあるため、それについて記載します。</p> <h2 id="Qrunch 記事の絵文字が一部正常にエクスポートできない"><a href="#Qrunch+%E8%A8%98%E4%BA%8B%E3%81%AE%E7%B5%B5%E6%96%87%E5%AD%97%E3%81%8C%E4%B8%80%E9%83%A8%E6%AD%A3%E5%B8%B8%E3%81%AB%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%88%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84">Qrunch 記事の絵文字が一部正常にエクスポートできない</a></h2> <p>Qrunch の記事として記載していた絵文字が、一部正常にエクスポートできませんでした。<br /> こちらは、単純に記述すれば問題ありません。</p> <h2 id="Crieit のコード記述 Markdown でコードタイトルが記述できない"><a href="#Crieit+%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%89%E8%A8%98%E8%BF%B0+Markdown+%E3%81%A7%E3%82%B3%E3%83%BC%E3%83%89%E3%82%BF%E3%82%A4%E3%83%88%E3%83%AB%E3%81%8C%E8%A8%98%E8%BF%B0%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84">Crieit のコード記述 Markdown でコードタイトルが記述できない</a></h2> <p>Crieit のコード記述 Markdown は、コードタイトルが記述できません。</p> <p>この問題に気づいたのは、記事を公開してからです。<br /> 記事記述中のプレビューと、記事公開時の画面では、表示が異なっていました。<br /> コードタイトルを記述している場合、正常にコード表示できません。</p> <p>しかも、 Markdown の構文解析を常時実施しているわけではなさそうで、一部だけコードのように記述される場合があるなど、表示させるためには多少のコツが必要っぽいです。</p> <h2 id="Qrunch のタグとカテゴリを合わせる必要がある"><a href="#Qrunch+%E3%81%AE%E3%82%BF%E3%82%B0%E3%81%A8%E3%82%AB%E3%83%86%E3%82%B4%E3%83%AA%E3%82%92%E5%90%88%E3%82%8F%E3%81%9B%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8B">Qrunch のタグとカテゴリを合わせる必要がある</a></h2> <p>Qrunch には、タグとカテゴリの2種類が存在しました。<br /> 当然、 Crieit にはタグの1種類しか存在しないため、合わせる必要があります。</p> <h2 id="Crieit のタグはコピペで設定できない"><a href="#Crieit+%E3%81%AE%E3%82%BF%E3%82%B0%E3%81%AF%E3%82%B3%E3%83%94%E3%83%9A%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%A7%E3%81%8D%E3%81%AA%E3%81%84">Crieit のタグはコピペで設定できない</a></h2> <p>Crieit のタグは空白文字区切りでないため、エクスポートファイルのタグ表示欄を単純にコピペはできません。<br /> コピペする場合、1タグごとにコピペする必要があります。</p> <h1 id="おわりに"><a href="#%E3%81%8A%E3%82%8F%E3%82%8A%E3%81%AB">おわりに</a></h1> <p>永住の地が無いことは承知の上ですが、一旦はこれで腰を落ち着かせようと思います。<br /> 使い勝手が違うため、いろいろ間違っているかもしれませんが、ご了承ください。</p> Morichan tag:crieit.net,2005:PublicArticle/15881 2020-04-30T08:59:39+09:00 2021-12-05T17:47:32+09:00 https://crieit.net/posts/dbaf3ad259cbec4bc20c2c9f2538e4ba 有料記事を販売できるようになりました <p>Crieitで有料記事を販売できるようになりました。記事の前半を無料、後半を有料という形で販売することが可能です。下記は実際の有料記事のサンプルです。</p> <p><a href="https://crieit.net/posts/GCE-Cloud-Run">https://crieit.net/posts/GCE-Cloud-Run</a></p> <p>利用方法の解説を行います。</p> <h2 id="仕様"><a href="#%E4%BB%95%E6%A7%98">仕様</a></h2> <p>Stripeという決済サービスの、Stripe Connectという機能を利用しています。販売者はStripeに登録して独自にコンテンツを販売する形となります。CrieitはConnectを利用することで場の提供のみを行います。手数料は <del>10%</del> 現在0%(Crieit分)+3.6%(Stripe分)です(Stripe側に変更がある場合はそちらに準じます)。</p> <h2 id="販売者設定"><a href="#%E8%B2%A9%E5%A3%B2%E8%80%85%E8%A8%AD%E5%AE%9A">販売者設定</a></h2> <p>有料記事を作成するためにはまず事前に販売者設定を行う必要があります。ユーザー設定の「記事販売者設定」にて設定します。</p> <p><a href="https://crieit.net/sales-profiles/create">https://crieit.net/sales-profiles/create</a></p> <h3 id="連絡先の登録"><a href="#%E9%80%A3%E7%B5%A1%E5%85%88%E3%81%AE%E7%99%BB%E9%8C%B2">連絡先の登録</a></h3> <p>まずはここで連絡先の登録を行います(原則非公開です)。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6cfdfc68c3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6cfdfc68c3.png?mw=700" alt="" /></a></p> <h3 id="Stripeへの登録"><a href="#Stripe%E3%81%B8%E3%81%AE%E7%99%BB%E9%8C%B2">Stripeへの登録</a></h3> <p>次にStripeへの登録を行います。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d067c2fd7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d067c2fd7.png?mw=700" alt="" /></a></p> <p>一部難しい部分がありますので、下記の記事を参考に入力を行います。</p> <p><a href="https://crieit.net/posts/stripe-connect-registration">https://crieit.net/posts/stripe-connect-registration</a></p> <p>一通り入力し、登録ができれば準備は完了です。</p> <h3 id="Stripeについて"><a href="#Stripe%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">Stripeについて</a></h3> <p>あくまでもユーザー自身が販売事業者となります。StripeアカウントもCrieitとはConnect以外では何の関係もなく、自由にユーザーが利用するものとなります。</p> <h2 id="有料記事の作成"><a href="#%E6%9C%89%E6%96%99%E8%A8%98%E4%BA%8B%E3%81%AE%E4%BD%9C%E6%88%90">有料記事の作成</a></h2> <p>次に有料記事の作成方法について説明します。まずは記事編集画面にて「オプション」を開きます。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d2074cee3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d2074cee3.png?mw=700" alt="" /></a></p> <p>販売設定が完了していると下記のような有料記事のメニューが追加されています。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d2488563f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d2488563f.png?mw=700" alt="" /></a></p> <p>こちらにチェックを行い、価格を設定してください。販売時にはこの価格から手数料が引かれます。</p> <p>チェックを入れたあとは、下記のように無料部分、有料部分の編集を切り替えるボタンが現れますのでそちらで切り替えつつ編集を行います。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d2cebe24e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea6d2cebe24e.png?mw=700" alt="" /></a></p> <p>あとは通常通り記事を登録すれば有料販売が可能です。売上の確認はStripeにログインして行ってください。</p> <h2 id="その他"><a href="#%E3%81%9D%E3%81%AE%E4%BB%96">その他</a></h2> <p>当サービスは広告を表示していますが、有料記事の場合は読者がコンテンツに集中しやすいよう、ページ上の広告は非表示としています。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>有料記事の販売方法を解説しました。まだリリースしたばかりのため、問題や不明点があれば一緒に改善していきたいと思いますので、ぜひフィードバックをお願いします。</p> <p>記事は無料部分も有益にし、そこだけでも読めて満足だった、と思ってもらえるようにしておくと、有料部分も購入してもらいやすくなるのではないかと思います。</p> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/15874 2020-04-27T20:36:57+09:00 2020-04-27T20:36:57+09:00 https://crieit.net/posts/stripe-connect-registration Stripeアカウントの連結手順 <p>Stripeと連携する処理を進めると下記の画面に遷移します。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea62a5643a69.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea62a5643a69.png?mw=700" alt="" /></a></p> <p>ここでStripeアカウントを作成しますが、画像の右上にあるリンクから既にお持ちのStripeアカウントを利用することも出来ます。</p> <p>基本的に全ての入力内容は、<strong>あなたご自身が事業を行う</strong>前提での質問となります。「お客様の事業」はあなたが記事を販売する事業、「顧客」はあなたの記事を購入したユーザーのこととなります。あくまでもCrieitとあなたの事業の手数料連携のみという扱いになり、Crieitがあなたの事業の管理及び保護を行うものではありませんので、その前提で入力を進めてください。</p> <h2 id="コンプライアンス関連の質問"><a href="#%E3%82%B3%E3%83%B3%E3%83%97%E3%83%A9%E3%82%A4%E3%82%A2%E3%83%B3%E3%82%B9%E9%96%A2%E9%80%A3%E3%81%AE%E8%B3%AA%E5%95%8F">コンプライアンス関連の質問</a></h2> <p>まず最初にコンプライアンス関連の質問に回答します。こちらは自動的に下書きされますのでゆっくり入力して途中であとから続きを進めることも可能です。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea62b2b0e3d8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565ea62b2b0e3d8.png?mw=700" alt="" /></a></p> <p>基本的には下記のように回答すれば問題ありません。その他は適宜確認のうえ適切なものを選択してください。</p> <blockquote> <p>今後、顧客のカード番号を取り扱う予定はありますか?</p> </blockquote> <p>→いいえ</p> <blockquote> <p>今後、お客様の事業で、または他事業の代理として決済を生成する接続アプリケーション (Connect Standard) で、顧客の身元を特定することを目的として、何らかの種類の付加的な検証手段を利用する予定はありますか?</p> </blockquote> <p>→いいえ</p> <blockquote> <p>今後、お客様の事業で、または他事業の代理として決済を生成する接続アプリケーション (Connect Standard) で、決済ごとにカードのセキュリティコードを要求する予定はありますか?</p> </blockquote> <p>→はい</p> <blockquote> <p>今後、お客様の事業で、または他事業の代理として決済を生成する接続アプリケーション (Connect Standard) で、疑わしい配送先住所を検出するための対策を講じる予定はありますか?</p> </blockquote> <p>→いいえ</p> <h2 id="本番環境利用の申請"><a href="#%E6%9C%AC%E7%95%AA%E7%92%B0%E5%A2%83%E5%88%A9%E7%94%A8%E3%81%AE%E7%94%B3%E8%AB%8B">本番環境利用の申請</a></h2> <p>ご自身が事業者としての入力を行ってください。Crieitの情報を書く部分はありません。「ビジネスの Web サイト」はCrieitのご自身のプロフィールページURLを使って頂いて大丈夫です。</p> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/15824 2020-04-13T08:27:03+09:00 2020-04-13T08:27:03+09:00 https://crieit.net/posts/Now Nowで運用している画像配信サーバーにリサイズ機能を追加した <p>Cloud Runに引っ越したことで重いページとそうでないページがはっきりしてきた(以前は全てのページが重くて逆に気にならなかった)のだが、その際にLighthouseで調べているとPerformanceのスコアが非常に悪く、画像の読み込みにめちゃくちゃ時間がかかっていることに気づいた。</p> <p><a href="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e93131e63cf8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e93131e63cf8.png?mw=700" alt="" /></a></p> <p>トップページの記事ランキングなどにはサムネイルを表示していたりするのだが、アップロードされた画像をそのまま表示していた。中には横幅2000とか3000以上の画像もあったりする。そのためそういう画像がいくつも同じページ内にあると当然読み込みに時間がかかるし、Wifiじゃない状況でスマホで見たりすると通信容量の消費も激しくなるだろうし全然ユーザーフレンドリーじゃない。</p> <p>ということで丁度モチベーション切れだったこともあり、せっかく気になってきたので対応してみることにした。</p> <h2 id="画像配信サーバーの改造"><a href="#%E7%94%BB%E5%83%8F%E9%85%8D%E4%BF%A1%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AE%E6%94%B9%E9%80%A0">画像配信サーバーの改造</a></h2> <p>アップロードされた画像は全てZeitのNowで運用している画像配信サーバーで配信している。</p> <p><a href="https://crieit.net/posts/Now-Cloud-Storage">NowのエッジキャッシュでCloud Storage節約サーバー作成</a></p> <p>ということで、これを改造してリサイズに対応できればよいのではないかと思った。具体的には通常の画像のURLの後ろに <code>?mw=700&mh=300</code> のように、パラメータを指定した場合だけリサイズするようにする形。</p> <h3 id="リサイズに使用したパッケージ"><a href="#%E3%83%AA%E3%82%B5%E3%82%A4%E3%82%BA%E3%81%AB%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%9F%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8">リサイズに使用したパッケージ</a></h3> <p>リサイズと言えばImageMagick(現在はgm?)かなと思ったが、一応調べてみたところsharpというパッケージも非常に人気があるらしかったのでそちらを使ってみることにした。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/lovell/sharp">lovell/sharp: High performance Node.js image processing, the fastest module to resize JPEG, PNG, WebP and TIFF images. Uses the libvips library.</a></p> <p>一番シンプルな形だとこんな感じでいける。BufferをリサイズしてBufferにするパターン。</p> <pre><code class="javascript">const resized = await sharp(image).resize(width).toBuffer() </code></pre> <p>めちゃくちゃ簡単。ImageMagickだとサーバーに何かインストールしておかなきゃいけないんじゃないかとか色々気になったりするが、特にそういう必要もない。</p> <h3 id="実際の実装方法"><a href="#%E5%AE%9F%E9%9A%9B%E3%81%AE%E5%AE%9F%E8%A3%85%E6%96%B9%E6%B3%95">実際の実装方法</a></h3> <h4 id="縦横を指定する場合"><a href="#%E7%B8%A6%E6%A8%AA%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88">縦横を指定する場合</a></h4> <p>CSSの <code>object-fit: cover</code> を使っているところが結構あったので、その部分の表示を変えることなくリサイズする仕組みを作った。具体的には <code>?mw=700&mh=300</code> のパラメータを付けると、どちらかがはみ出してもいいのでその範囲でなるべく大きな画像にする方法(余白ができないようにする)</p> <p>色々処理を作っていたが、これはパラメータを指定するだけでできた。</p> <pre><code class="javascript"> if (query.mw && query.mh) { image = await sharp(image) .resize(Number(query.mw), Number(query.mh), { fit: 'outside' }) .toBuffer() } </code></pre> <p>こんな感じでfitを指定すると色々な形でのリサイズ方法があるため便利。</p> <h4 id="横幅だけを指定する場合"><a href="#%E6%A8%AA%E5%B9%85%E3%81%A0%E3%81%91%E3%82%92%E6%8C%87%E5%AE%9A%E3%81%99%E3%82%8B%E5%A0%B4%E5%90%88">横幅だけを指定する場合</a></h4> <p>記事ページなどは許可する最大の横幅を指定し、それ以上だったらリサイズする形にした。</p> <p>さすがにfitでこの条件指定までは出来なかったため、チェックは自分で行った。さすがに画像を変換する時にサイズの取得は必要になるため、多分サイズを取得する機能があるだろうと思ったがやはりあった。ということで下記のような処理を作った。metadataというメソッドでサイズや画像の形式など、色々な情報が取れる。</p> <pre><code class="javascript">async function resizeByMaxWidth(image, maxWidth) { const sharpImage = sharp(image) const metadata = await sharpImage.metadata() if (metadata.width < maxWidth) { return image } return await sharpImage.resize(maxWidth).toBuffer() } </code></pre> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>ということで色々対応したが、スコアは全然改善しなかった。他にもAPIで取ってきたデータのユーザー画像のサイズが大きかったりして、対応しきれていない部分がある。</p> <p>とはいえ、やろうと思えばあらゆるURLの画像を同様の配信サーバーを作ってプロキシすることで縮小できるため、他にも色々使い所はありそう(今回は自分用のリポジトリに実装しているので前述URL内で公開しているリポジトリには反映していない。機能的にもブレるため)。Nowなのでサーバーの管理も不要だしCDNキャッシュしてくれて高速だし本当に楽。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15813 2020-04-06T07:53:02+09:00 2020-06-01T16:18:36+09:00 https://crieit.net/posts/GCE-Cloud-Run GCEからCloud Runに引っ越してみた <p>当サービスCrieitをGoogle Compute EngineからCloud Runに引っ越ししてみました(2020/4)。選定理由、実際にやったこと、懸念点などを色々書いてみます。</p> <p>費用についても書きたいのですが、まだ引っ越ししたばかりのためわかりません。1,2ヶ月ほど経ったら追記しますので気になる方はフォローやブックマークなどしておいてください。</p> <p>※当記事は一部有料です。後半の実際にRunを使う方しか興味がなさそうな内容あたりは有料となっています。使ってみた感じやRunに関係ない引っ越しメモ等は無料です。費用については無料部分に書きます。</p> <h2 id="元々の構成"><a href="#%E5%85%83%E3%80%85%E3%81%AE%E6%A7%8B%E6%88%90">元々の構成</a></h2> <p>Compute Engineの1台構成です。f1-microインスタンスを利用しておりMySQLもこの中にインストールしているのでAlways FreeのおかげでWebサーバー、DBサーバー自体は無料運用です。ファイルなどはStorageです。</p> <p>ちなみにLaravelで作られており、詳しい構成は下記に書かれています。<br /> <a href="https://crieit.net/posts/Crieit-5b8e526e13820">Crieitの構成</a></p> <h2 id="新しい構成"><a href="#%E6%96%B0%E3%81%97%E3%81%84%E6%A7%8B%E6%88%90">新しい構成</a></h2> <p>WebサーバーにCloud Run、DBサーバーはCloud SQL(db-f1-micro)にしました。Cloud SQLは無料枠がないため費用がかかりますが、とりあえず広告費用内でまかなえるので以前からそのうち使おうと思っていました。全部1台のサーバーに入れているのはやはりなんとなく怖かったため。</p> <h2 id="なぜ引っ越したのか"><a href="#%E3%81%AA%E3%81%9C%E5%BC%95%E3%81%A3%E8%B6%8A%E3%81%97%E3%81%9F%E3%81%AE%E3%81%8B">なぜ引っ越したのか</a></h2> <h3 id="たまに落ちる"><a href="#%E3%81%9F%E3%81%BE%E3%81%AB%E8%90%BD%E3%81%A1%E3%82%8B">たまに落ちる</a></h3> <p>Compute Engineは普通のサーバーですので、やはり何らかの状況によって時々落ちるというかフリーズします。多分なにかボットのアクセスが激しい時にスワップしてしまってそのままになってしまうのだと思いますが。</p> <p>とは言っても約2年くらい運営してきてそんな感じで止まることはめったにありませんでした。たまに数分だけ重いとMackerelから通知が来たりはしていましたが。ただ、最近1日に2回も大きなフリーズがあったので、さすがに怖くなったのが引っ越すことになった一番のきっかけかもしれません。</p> <h3 id="むちゃくちゃ遅い"><a href="#%E3%82%80%E3%81%A1%E3%82%83%E3%81%8F%E3%81%A1%E3%82%83%E9%81%85%E3%81%84">むちゃくちゃ遅い</a></h3> <p>リリースする時に深く考えず、us-eastに構築してしまいました。これのせいでもうとにかくすごく遅い。あらゆるページで表示されるまでに1秒位かかっていました。こちらも元々そのうちwestに引っ越したいなと思っていました。</p> <h2 id="なぜCloud Runを選択したのか"><a href="#%E3%81%AA%E3%81%9CCloud+Run%E3%82%92%E9%81%B8%E6%8A%9E%E3%81%97%E3%81%9F%E3%81%AE%E3%81%8B">なぜCloud Runを選択したのか</a></h2> <h3 id="サーバーを管理したくなかった"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%82%92%E7%AE%A1%E7%90%86%E3%81%97%E3%81%9F%E3%81%8F%E3%81%AA%E3%81%8B%E3%81%A3%E3%81%9F">サーバーを管理したくなかった</a></h3> <p>最初から決めていたわけではなく、App EngineとCloud Runを試して決めよう、という感じでやっていました。どちらもマネージドで、自分でサーバーを管理する必要がありません。とにかくCloud SQLに費用を払うことになってでもサーバーを管理したくなくなったというのが一番の理由です。</p> <p>結局Runの方を選んだのですが、理由としてはApp Engineはデプロイするために、結構ローカル開発環境を本番向けに変えたりスイッチしたりする必要があります。もちろんデプロイを自動化すればいい話ですが、そもそもその前に一旦試してみるのが面倒になってやめました。最初にCloud Runの実験をしていたのですが、そちらはDockerイメージ内で適当にファイルを調整すればいいのでローカル環境を汚さず簡単に試せて非常に良いと感じました。</p> <h3 id="デプロイが簡単"><a href="#%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E3%81%8C%E7%B0%A1%E5%8D%98">デプロイが簡単</a></h3> <p>ローカルでコマンドをいくつか実行するだけでデプロイできます。バッチとしてまとめているので1コマンドで行けるようになりました。</p> <pre><code class="bat">@echo off FOR /F %%i in ('git rev-parse HEAD') do set HASH=%%i set IMAGE=gcr.io/プロジェクトID/イメージ名:%HASH% @echo on call gcloud builds submit --tag %IMAGE% --project プロジェクトID call gcloud run deploy Runのサービス名 --image %IMAGE% --project プロジェクトID --region asia-northeast1 --platform managed --quiet </code></pre> <p>今回はやっていませんがCIによる自動化もコマンドベースなので簡単そうです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/szk3/items/38a3dba7fdfed189f4c9">GitHub Actionsを使うとCloud Runへのデリバリが最高に捗るぞ🚀 - Qiita</a></p> <h3 id="東京リージョンが使える"><a href="#%E6%9D%B1%E4%BA%AC%E3%83%AA%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%81%8C%E4%BD%BF%E3%81%88%E3%82%8B">東京リージョンが使える</a></h3> <p>App EngineもCloud Runも東京リージョンが使えます。GCEのようにアメリカだけ無料、とかではないので安心です。ただまあネットワーク料がかかってくると思いますのでそちらは気になりますが。</p> <p>実験したところ元々1秒くらいかかっていたページの表示が300~500ミリ秒くらいになっていました。すごく速いというわけではなさそうですが、とりあえず元々遅すぎたのでだいぶいい感じにはなりました。</p> <h3 id="安い?"><a href="#%E5%AE%89%E3%81%84%EF%BC%9F">安い?</a></h3> <p>Cloud Run自体はこんな感じで実際に使ったリソースの分しか消費されないので無料枠内で結構いけてしまうのかな…? と感じました。これはでも実際どうかわからないため、1、2ヶ月ほどしたら追記します。</p> <p><a href="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e8a66b399cb9.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e8a66b399cb9.png?mw=700" alt="" /></a></p> <p>追記)ネットワーク料金が14円で、CPU、メモリは費用内で無料でした。やはりデプロイ時に設定するメモリ料での計算でなく、実際に使った量だけみたいです。</p> <h3 id="ロールバックも簡単"><a href="#%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%82%82%E7%B0%A1%E5%8D%98">ロールバックも簡単</a></h3> <p>これは実際に使ってみて気づきましたが、デプロイのリビジョンが残っているため何か不具合などがあってロールバックしたくなったときも簡単に戻すことができます。このあたりはGAE等ほかの簡単デプロイ系サービスでも同じかもしれませんが。</p> <p><a href="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e8b1d1ce2b55.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e8b1d1ce2b55.png?mw=700" alt="" /></a></p> <h2 id="実際にやったこと"><a href="#%E5%AE%9F%E9%9A%9B%E3%81%AB%E3%82%84%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8">実際にやったこと</a></h2> <h3 id="ストレージの引っ越し"><a href="#%E3%82%B9%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B8%E3%81%AE%E5%BC%95%E3%81%A3%E8%B6%8A%E3%81%97">ストレージの引っ越し</a></h3> <p>まずはアップロードされた画像が入っているストレージだけ先に引っ越しました。というのも、Crieitの場合アップロード画像は直接ストレージのURLを使うわけではなく、Now経由でCDNキャッシュさせて費用を節約させています(<a href="https://crieit.net/posts/Now-Cloud-Storage">NowのエッジキャッシュでCloud Storage節約サーバー作成</a>)。ということで、引っ越しても画像のURLが変わるわけではありませんし、独立して先に引っ越しできるため先に移動しました。</p> <p>具体的には下記の方法です。転送機能が用意されています。S3やAzureからも可能のようです。Cloud Storage間であればコマンドでも可能です。僕の場合は1GBもなかったので一瞬で終わりました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/storage/docs/moving-buckets?hl=ja">バケットの移動と名前変更</a></p> <p>通信料金も変わると思いますが、引っ越すまでの期間であればたいして影響も無いでしょう。とりあえずこれで一つやることが完全に減らせました。</p> <h3 id="ファイル保存している部分の調整"><a href="#%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E4%BF%9D%E5%AD%98%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E9%83%A8%E5%88%86%E3%81%AE%E8%AA%BF%E6%95%B4">ファイル保存している部分の調整</a></h3> <p>セッションやキャッシュはデフォルトでファイル保存になっています。しかしCloud Runは必要に応じてインスタンスが立ち上がったりするためファイルだと正常にセッションの維持などができません。そのためデータベース保存に変更しました。具体的にはまず下記でマイグレーションファイルを生成して実行します。</p> <pre><code>php artisan session:table php artisan cache:table </code></pre> <p>そしてあとは環境変数をdatabaseに変えます。</p> <pre><code class="ini">CACHE_DRIVER=database SESSION_DRIVER=database </code></pre> <p>まあここは他にもRedisを使ったり自由で良いと思います。</p> <p>あとはログの出力も変更しておきます。これもファイルだとログを見ることもできないため、stderrにしておきます。こうすると自動的にCloud Runのコンソール上でログを見ることができます(その他にもいくつか方法はあります)。</p> <pre><code class="ini">LOG_CHANNEL=stderr </code></pre> <h3 id="DBの設定"><a href="#DB%E3%81%AE%E8%A8%AD%E5%AE%9A">DBの設定</a></h3> <p>今回はCloud SQLを使っています。接続にはCloud SQL Proxyを使っています。例えばLaravelの場合、下記のようにソケットを指定します。</p> <pre><code class="ini">DB_SOCKET=/cloudsql/インスタンス接続名 </code></pre> <p>インスタンス名はCloud SQLの詳細画面で確認できます。</p> <h3 id="DBの移行"><a href="#DB%E3%81%AE%E7%A7%BB%E8%A1%8C">DBの移行</a></h3> <p>DBの移行は、元々使っているGoole Compute EngineにMySQLをインストールしていたので、mysqldumpを利用しました。サーバー上のデータをmysqldumpでダンプし、そしてcloud_sql_proxyを実行するとCloud SQLにソケットでアクセスできるようになりますので、それでインポートしました。具体的なインポート方法は下記のようになります。</p> <pre><code>mysql -u ユーザー名 -p -S /cloudsql/インスタンス接続名 < dump.sql </code></pre> <p>参考)<br /> <a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/sql/docs/mysql/connect-compute-engine?hl=ja#gce-connect-proxy">Cloud SQL Proxy を使用した接続</a><br /> <a href="https://crieit.net/posts/GCE-cloud-sql-proxy">GCEでcloud_sql_proxyが実行できない時</a></p> <h3 id="メンテナンスモード"><a href="#%E3%83%A1%E3%83%B3%E3%83%86%E3%83%8A%E3%83%B3%E3%82%B9%E3%83%A2%E3%83%BC%E3%83%89">メンテナンスモード</a></h3> <p>ストレージもDBも、ユーザー操作中に移行を行うと一部データが失われてしまう可能性があります。そのためメンテナンスモードにしておく必要があります。</p> <p>Laravelの場合、メンテナンスモードのコマンドが元々あるようなのでそちらを利用しました。メンテナンスモードに入るときは <code>php artisan down</code> 復帰するときは <code>php artisan up</code> です。</p> <p>downの場合はメッセージや許可IPなども指定できます。</p> <p><a target="_blank" rel="nofollow noopener" href="https://laravel.com/docs/7.x/configuration#maintenance-mode">Maintenance Mode - Configuration - Laravel - The PHP Framework For Web Artisans</a></p> <p>引っ越しの場合は新しいサーバーにアクセスが行くようになったらもう古いサーバーは使われませんので、upする必要もないかもしれません。</p> <p>結局ネックとなるのはDBの同期です。Cloud Runの設定も含め、これ以外で事前にできることはなるべく済ましておきました。</p> <h3 id="プロキシ用の設定"><a href="#%E3%83%97%E3%83%AD%E3%82%AD%E3%82%B7%E7%94%A8%E3%81%AE%E8%A8%AD%E5%AE%9A">プロキシ用の設定</a></h3> <p>元々Nginxを使っていた場合などは関係ない場合もありますが、プロキシ経由でなく直接アプリケーションにアクセスさせていた場合、このあたりの設定をする必要があります。例えばLaravelではTrustProxiesというミドルウェアのproxiesを許可するように設定しておく必要があります。</p> <pre><code> protected $proxies = '*'; </code></pre> <p>その他うまく動かない場合はSSLやホスト名の設定も問題ないか見てみる必要があります。Nginxのパターンとはちょっと違う可能性もありそうです。</p> <h3 id="バッチ等はどうしたか"><a href="#%E3%83%90%E3%83%83%E3%83%81%E7%AD%89%E3%81%AF%E3%81%A9%E3%81%86%E3%81%97%E3%81%9F%E3%81%8B">バッチ等はどうしたか</a></h3> <p>Cloud RunはSSHアクセスできませんので、コマンドの実行や定期処理などは考える必要があります。一応公式としてはCloud Schedulerを使うということになっています。</p> <p><a target="_blank" rel="nofollow noopener" href="https://cloud.google.com/run/docs/triggering/using-scheduler?hl=ja">Running services on a schedule</a></p> <p>ただし、httpアクセスになるためちょっとコードを調整したりする必要もあり面倒です。そのため、今回はGCEからの移転ということもあり、定期処理や時々コマンドを実行したいときはもうそのGCE上で行うようにすることにしました。アプリケーションのDB接続もCloud SQLに行うようにしてあります。リージョンも違うので遅いとは思いますがどれも一瞬実行するだけなので問題は恐らく無いでしょう。Cloud SQLへの接続はcloud_sql_proxyをSystemdでサービス化して行っています(参考 <a target="_blank" rel="nofollow noopener" href="https://sys-guard.com/post-15640/">GCP Cloud SQLにCloud SQL Proxyで接続しよう。Systemd化してデーモン化! | システムガーディアン株式会社</a>)。</p> <p>以下は有料です。下記のような内容を書いています。</p> <ul> <li>実際に作ったDockerfileの例(Laravel & Apache)</li> <li>vendorフォルダが無視されることへの対処</li> <li>.envファイルが無視されることへの対処</li> <li>ポートの指定について</li> <li>Dockerイメージのビルド方法(Cloud Buildの利用)</li> <li>Cloud Runのサービスを作成する具体的な手順とエラーにならないようにするための注意点</li> <li>独自ドメインの利用方法</li> <li>ステージング環境の作成例</li> <li>Cloudflareで525 SSL handshake failedエラーが出た場合</li> </ul> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15729 2020-02-21T08:38:19+09:00 2021-07-18T23:58:38+09:00 https://crieit.net/posts/Web-1 Webサービスを1週間で作るイベント開催の概要 <p>参加者それぞれがちょっとしたWebアプリを1週間で作って見せ合うイベント(オンライン)を開催します。</p> <p><a target="_blank" rel="nofollow noopener" href="https://unityroom.com/unity1weeks">Unity 1週間ゲームジャム</a> を参考にさせていただきました。それのWebサービス開発版みたいなものです。</p> <p><a href="https://crieit.now.sh/upload_images/d592373e21cc9af47d33a60ad769b24760ec3114c668a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d592373e21cc9af47d33a60ad769b24760ec3114c668a.png?mw=700" alt="web1week.png" /></a></p> <h2 id="開催概要"><a href="#%E9%96%8B%E5%82%AC%E6%A6%82%E8%A6%81">開催概要</a></h2> <p>開催初日にお題を発表します。そのお題に沿って何かしらのWebアプリを作成していただきます。</p> <p>1週間しかありませんので、練習程度に作ったちょっとした1機能のものでも、不具合だらけでほとんど動かないようなものでも大丈夫です。逆に余裕があれば大作を作っていただいても大丈夫です。他の人とネタがかぶっちゃっても全然だいじょうぶです。また、1週間かける必要があるわけではないので1日だけ作ってみる感じでもOKです。</p> <p>とにかくお気軽に参加していただき、たくさんの作品が集まれば良いなと思っています。今まで何も作ったこともないしプログラミングも勉強し始めたばかりだよ、という方にもどんどん参加していただきたいです。</p> <h2 id="開催スケジュール"><a href="#%E9%96%8B%E5%82%AC%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB">開催スケジュール</a></h2> <ul> <li>7/19(月)0:00~7/25(日)23:59の1週間</li> <li>7/19の0時にお題を発表</li> </ul> <h2 id="参加方法"><a href="#%E5%8F%82%E5%8A%A0%E6%96%B9%E6%B3%95">参加方法</a></h2> <p>特に参加申請はありません。Webサービスが公開できたらイベント用ボードに投稿して発表してください(締め切りを過ぎてしまっても投稿していただいて大丈夫です)。</p> <p>(今回)<br /> (7/19~7/25)1週間でWebサービスを作るイベント - お題「バケーション」<br /> 投稿ページは <a href="https://crieit.net/boards/web1week-202107">こちら</a></p> <p>(過去の例)<br /> <a href="https://crieit.net/boards/web1week-202102">(2/22~2/28)1週間でWebサービスを作るイベント - お題「増やす」</a><br /> <a href="https://crieit.net/boards/web1week-202009">(9/7~9/13)1週間でWebサービスを作るイベント - お題「2」</a><br /> <a href="https://crieit.net/boards/web1week-202005">(5/18~5/24)1週間でWebサービスを作るイベント - お題「Like」</a><br /> <a href="https://crieit.net/boards/web1week-202003">(3/9~3/15)1週間でWebサービスを作るイベント - お題「Home」</a></p> <p>自分の作品の投稿が終わったり、ちょっと休憩したい時にでも他の方の投稿を見てみると面白いと思います。</p> <p>また、開発中はTwitterなどで <code>#web1week</code> というハッシュタグで開発時のつぶやきをしていただくとみんなで楽しめると思います。画像や動画を一緒につぶやくと面白いかもしれませんし、やったことがない方は練習がてらやってみるとよいでしょう。</p> <p>1週間は想像以上に時間が少ないので、早めに終わらせて、早めに一旦公開テストまでしておく、というぐらいにしておいて、余裕があったら拡張していくような進め方が安心です。</p> <h3 id="投稿について"><a href="#%E6%8A%95%E7%A8%BF%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6">投稿について</a></h3> <p>投稿した内容にアップロードされた画像が含まれている場合、その最初の画像を一覧ページや、Twitterにシェアした際に表示される画像として利用します。</p> <p>単にタイトルとリンクを貼るだけでなく、スクリーンショットを貼ったり、サービスの説明や、どういった技術を使って作ったかを書いたりするともっと楽しく見えると思います。</p> <h3 id="フィードバック"><a href="#%E3%83%95%E3%82%A3%E3%83%BC%E3%83%89%E3%83%90%E3%83%83%E3%82%AF">フィードバック</a></h3> <p>見た際に、いいなと思ったら下記のようないいねボタンがありますので、是非ボタンを押してフィードバックしてあげてください。フィードバックがあると作った人の励みになります。</p> <p><a href="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e61955f00852.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5e61955f00852.png?mw=700" alt="" /></a></p> <p>また、コメント機能もありますのでそちらで直接言葉で伝えるのも良いと思います。</p> <p>その他、Twitterボタンもありますので気になったものがあったら是非Twitterでシェアしてください。</p> <h2 id="事前の準備"><a href="#%E4%BA%8B%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99">事前の準備</a></h2> <p>とくにはありませんが、未経験の方はなにか適当に作ったものを公開するところまで試しておいたほうが良さそうです。</p> <p>あとは当サービスへの登録も事前にお願いします。 <a href="https://crieit.net/boards/fortest">テストボード</a> で書き込みのテストもしていただくことも出来ます。</p> <h2 id="何も作ったことがない方"><a href="#%E4%BD%95%E3%82%82%E4%BD%9C%E3%81%A3%E3%81%9F%E3%81%93%E3%81%A8%E3%81%8C%E3%81%AA%E3%81%84%E6%96%B9">何も作ったことがない方</a></h2> <p>簡単にサービスを公開できるサンプルの記事を書いておきました。参考になる部分があれば試してみてください。(公開方法は自由ですのでこの方法である必要はありません)</p> <ul> <li><a href="https://crieit.net/posts/React-Netlify">React+Netlifyで最小のアプリを作る</a></li> <li><a href="https://crieit.net/posts/Vue-js-Netlify">Vue.js+Netlifyで最小のアプリを作る</a></li> <li><a href="https://crieit.net/posts/PHP-5e4ff7575fc18">素のPHPでシンプルで小さなアプリを作る</a></li> <li><a href="https://crieit.net/posts/Vercel-Zeit-Now-Nuxt-js-2020">Vercel(元ZeitのNow)でNuxt.jsアプリをデプロイ 2020年最新版</a></li> <li><a href="https://crieit.net/posts/Vercel-Zeit-Now-Next-js-2020">Vercel(元ZeitのNow)でNext.jsアプリをデプロイ 2020年最新版</a></li> </ul> <p>あとはCodePen等でも簡単に作ったものを公開できます。</p> <p><a target="_blank" rel="nofollow noopener" href="https://codepen.io/">https://codepen.io/</a></p> <p>サンプルも解説してみました。</p> <ul> <li><a href="https://crieit.net/posts/CodePen-Vue-js">CodePenでVue.jsの最小アプリケーションを作成する</a></li> <li><a href="https://crieit.net/posts/CodePen-React">CodePenでReactを使った最小のアプリケーションを作る</a></li> <li><a href="https://crieit.net/posts/CodePen-JavaScript">CodePenで素のJavaScriptで最小のアプリケーションを作る</a></li> </ul> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>以上になりますが、不明点などあればお気軽にコメントでもTwitterでのリプライなど送ってください。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15502 2019-10-24T22:18:21+09:00 2019-11-03T08:43:57+09:00 https://crieit.net/posts/12-Advent-Calendar-5db1a49d3f09d 12月にAdvent Calendarを開催します <p>もうすぐ年末ですね。去年CrieitでAdvent Calendarを開催しましたが、今年も開催を予定しています。</p> <h2 id="昨年との違い"><a href="#%E6%98%A8%E5%B9%B4%E3%81%A8%E3%81%AE%E9%81%95%E3%81%84">昨年との違い</a></h2> <h3 id="誰でもカレンダーを作ることができる"><a href="#%E8%AA%B0%E3%81%A7%E3%82%82%E3%82%AB%E3%83%AC%E3%83%B3%E3%83%80%E3%83%BC%E3%82%92%E4%BD%9C%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%82%8B">誰でもカレンダーを作ることができる</a></h3> <p>去年は何でも書いていいCrieit Advent Calendarというカレンダーと、個人開発サービスに用いられている技術 Advent Calendarの2つのカレンダー固定で開催していました。</p> <p>Crieit Advent Calendarは今年も僕が作りますが、あとはQiitaやAdventarと同様に誰でも自由にカレンダーを作れるようにしています。</p> <h3 id="予約投稿可能"><a href="#%E4%BA%88%E7%B4%84%E6%8A%95%E7%A8%BF%E5%8F%AF%E8%83%BD">予約投稿可能</a></h3> <p>去年は当日までに下書きを書いておいて、それを忙しい当日の朝に投稿し、カレンダーに登録、という非常に使い勝手の悪い仕様で利用していただいていました。今回は予約投稿できるようにしているため、カレンダーに登録して下書きを指定して頂ければ当日の7時に自動的に記事が本登録されるようになっています。</p> <h2 id="スケジュール"><a href="#%E3%82%B9%E3%82%B1%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB">スケジュール</a></h2> <p>11/1~ カレンダーに予約開始、及びカレンダーの作成機能公開<br /> 12/1~ カレンダー進行</p> <h2 id="今年のスタンス"><a href="#%E4%BB%8A%E5%B9%B4%E3%81%AE%E3%82%B9%E3%82%BF%E3%83%B3%E3%82%B9">今年のスタンス</a></h2> <p>去年はCrieitがリリースして間もないということもあり、かなり多くの方にご協力いただきました。年末の忙しい時期にバタバタとしながら投稿していただいたことに感謝しています。しかし今年はリリース後1年たち、2度めの年末となりました。あとはもう無理せず、Advent Calendarものんびり運用していければいいかなと考えています。</p> <p>盛り上がり的には絶対的にQiitaやAdventarでAdvent Calendarに参加していただいた方が楽しいと思います。ただ、そちらは敷居が高くて投稿しづらい、という場合があると思います。また、そちらにはなんとなく参加したいものがないし、書きたいものがガチポエムみたいなものだとするとサービスの色にマッチしていないという場合もあると思いますので、その場合は是非CrieitのAdvent Calendarを利用して頂ければ幸いです(なんならAdvent Calendarの機能を無視して非公開ボードで投稿していただいても良いと思います)。</p> <p>僕が立てるCrieit Advent Calendarは前年と同様、どなたでも何でも投稿していただいてOKです(埋まらない場合は僕が瀕死で全部埋めます)。もちろん一人でAdvent Calendarを埋めたい、という場合は自分用のカレンダーを作って挑戦していただいても大丈夫です。また、特定のジャンルの記事があつまるといいなぁ、と思う場合にも是非カレンダーを作ってみてください。僕の知識で分かるものがあれば僕は絶対投稿します。</p> <p>ということで、ゆるい感じでやっていきたいと思いますので、何にも気兼ねなく、各々が思うがままに気軽な感じで適当にシステムを使って頂ければと思います。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15410 2019-09-19T09:35:34+09:00 2019-09-26T22:43:54+09:00 https://crieit.net/posts/7ebde39661ac39a6c1f1020a481c5c83 下書きを公開できるようになりました <p>下書きを公開できるようになりました。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565d82cbf7b5db0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565d82cbf7b5db0.png?mw=700" alt="" /></a></p> <p>記事の登録画面のオプションボタンをクリックすると開く設定画面に「下書きを公開する」チェックボックスが追加されています。そちらをオンにすると下書きが公開されます。</p> <p><a href="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565d82cc323a050.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/40080d606f845eb3c77ef250872620565d82cc323a050.png?mw=700" alt="" /></a></p> <p>とりあえず書きかけのものを見てほしい場合などに利用できます。</p> <p>ユーザーのプロフィールからも一覧できます。</p> <h2 id="続きが読みたいボタン"><a href="#%E7%B6%9A%E3%81%8D%E3%81%8C%E8%AA%AD%E3%81%BF%E3%81%9F%E3%81%84%E3%83%9C%E3%82%BF%E3%83%B3">続きが読みたいボタン</a></h2> <p>続きが読みたいボタンを押せるようになりました。</p> <p><a href="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5d8cbfb875816.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6e2af66c610d88bc766649f72032893a5d8cbfb875816.png?mw=700" alt="" /></a></p> <p>非ログインでもクリックでき、何度でもクリックできます。</p> <h2 id="随時開発中"><a href="#%E9%9A%8F%E6%99%82%E9%96%8B%E7%99%BA%E4%B8%AD">随時開発中</a></h2> <p>下記は実装するかどうか検討中です。</p> <ul> <li>コメントができるようにする</li> <li>いいね</li> </ul> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/15150 2019-06-22T22:50:20+09:00 2019-06-22T22:54:14+09:00 https://crieit.net/posts/7d3a04e921e23954a98892156e14c92d ユーザーをフォローする機能 <p>ユーザーをフォローする機能を作成しました。</p> <h2 id="使い方"><a href="#%E4%BD%BF%E3%81%84%E6%96%B9">使い方</a></h2> <p><a href="https://crieit.now.sh/upload_images/b9dd9f2c3e1be00532db292d04eeb7845d0e3192550de.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b9dd9f2c3e1be00532db292d04eeb7845d0e3192550de.png?mw=700" alt="" /></a></p> <p>ユーザー詳細画面でフォロー及びフォローの解除を行うことが出来ます。また、各ナビのメニューから自分がフォローしているユーザー一覧ページにアクセスできます。</p> <h2 id="機能"><a href="#%E6%A9%9F%E8%83%BD">機能</a></h2> <p>現在は、フォローしているユーザーが記事を投稿した時にメール通知する機能のみとなります。随時便利になるような機能を追加していきたいと思います。追加し次第こちらのページで紹介を追記していきます。</p> <p>通知はユーザーの設定画面で無効にすることも出来ます。</p> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/15129 2019-06-19T22:03:10+09:00 2019-06-19T22:03:10+09:00 https://crieit.net/posts/6f65884efb3ca80c2b1f7f9ac586bb98 経験値とは? <p>Crieit上で何かしらのアクションを行うと経験値がたまっていきます。経験値は現在下記で利用されています。</p> <ul> <li>ユーザー詳細画面に累計経験値を表示</li> <li>トップページに過去30日、365日の経験値ランキングを表示</li> </ul> <h2 id="経験値のため方"><a href="#%E7%B5%8C%E9%A8%93%E5%80%A4%E3%81%AE%E3%81%9F%E3%82%81%E6%96%B9">経験値のため方</a></h2> <p>経験値は下記のアクションを行うことで上がっていきます。基本的な思想として、棚ぼた的に得られるものではなく、あくまでもサービス上でアクションをして頂けたことに対して上がっていくものとなっています。</p> <ul> <li>記事投稿…3</li> <li>ボード作成…2</li> <li>ボード投稿…2</li> <li>コメント…1</li> <li>ボードコメント…1</li> </ul> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>よろしければサービス内で楽しむための指標としてご利用ください。</p> <p>今後も色々となにかに使えないか随意検討を行っていきます。またそのため、アクションによる経験値の重み付けは今後変わる場合や追加される場合があります。</p> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/15058 2019-06-04T21:11:22+09:00 2019-06-06T13:17:52+09:00 https://crieit.net/posts/Qiita-1 Qiitaのようなサービスを1年運営してみたデータや振り返り <p>Qiitaとdev.toの様なサービスということで作ったCrieitをリリースしてから1年が経ちました。せっかくですので色々と振り返ったりデータを公開してみたいと思います。</p> <p>ただし最初にことわっておきますと正直たいしたデータではないため、すごいデータが見たい方や、元々サービス開発や運営が得意な方にとっては全くおもしろくないと思います。「うちのブログの方がすごいんだけど…」という方もたくさんいると思います。</p> <p>僕と同様、今まで色々やってきたんだけど全く何もうまくいかなくて困っている……という方にとって、ちょっとでも何かの参考になればいいかな、と思っています。</p> <h2 id="検索流入"><a href="#%E6%A4%9C%E7%B4%A2%E6%B5%81%E5%85%A5">検索流入</a></h2> <p>下記はSearch Consoleのグラフです。</p> <p><a href="https://crieit.now.sh/upload_images/63a6a22309ec91ab902d2e23d51e623f5cf51dcde89ab.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/63a6a22309ec91ab902d2e23d51e623f5cf51dcde89ab.png?mw=700" alt="" /></a></p> <p>去年の年末にも公開しましたが、それからもなんとか検索流入は伸びてきています。水色でなく青い方がクリック数で、最後の落ちてないところがだいたい800くらいです。</p> <p>ちなみに1週間毎にでこぼこしていますが、へこんでいるところが土日です。また1月と5月に大きな谷がありますが、正月とゴールデンウィークで、ひどい事になっています。</p> <p>GW明けの5月はグラフがぐちゃぐちゃになっていますが、なんと<a target="_blank" rel="nofollow noopener" href="https://twitter.com/mogya">もぎゃ</a>さんが5月中に3度もはてブ1位になるほどバズらせてくれたおかげで検索にも影響が出て何が何だかわからなくなりました。感謝です。今まではバズった記事があっても検索流入に影響はなかったみたいですが、<a href="https://crieit.net/posts/VSCode-Remote-Development">VSCodeのRemote Development</a>の話だったため記事に関係なく関心の多い人が多かったのだと思われます。</p> <p>ちなみに平均CTRが7%で、平均掲載順位が18.9位です。もちろんこの記事はわりと人気あるな、という記事は一応あるのですが、とはいえどれがダントツという感じではなく、全体的にいろいろアクセスがあっての積み重ね、という感じのようです。CakePHP vs Laravelがかなり多く、あとはエンジニアのブログやPCの情報とか、Nuxtの情報あたりのアクセスが割と多いようです。</p> <p>ただ、僕のメインのスキル範囲外の言語やフレームワークの話は全然まだ書かれていなかったりするので、そのあたりの記事は伸びしろがある可能性はあるのかもしれません。</p> <p>とにかくやればやるほど伸びていくので、運営していて一番モチベーションの上がるデータとなっています。</p> <h2 id="Google Analytics"><a href="#Google+Analytics">Google Analytics</a></h2> <p>下記はGoogle Analyticsのグラフです。</p> <p><a href="https://crieit.now.sh/upload_images/2f500f2f7f04a89002554e8d2b6164f65cf53824ba9ac.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2f500f2f7f04a89002554e8d2b6164f65cf53824ba9ac.png?mw=700" alt="" /></a></p> <p>平常時とバズった記事がある時の差があるので正直良くわかりません…。5月のバズはすごかったのですが他は5,000PV程度のため平常時が低すぎてこんな感じになっている気がします。</p> <p>細かいアクセスの推移を見ていきます。</p> <h3 id="最初の月"><a href="#%E6%9C%80%E5%88%9D%E3%81%AE%E6%9C%88">最初の月</a></h3> <p><a href="https://crieit.now.sh/upload_images/1e412544122065c25107eadecd8208c75cf53a7de845f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/1e412544122065c25107eadecd8208c75cf53a7de845f.png?mw=700" alt="" /></a></p> <p>5月末にリリースしたので6月はほぼ最初の1ヶ月内です。正直今までリリースしたサービスは毎日アクセス1ケタとかだったためわりと健闘しています。また、同じ6月でも結構アクセスが増えている日がありました。</p> <p><a href="https://crieit.now.sh/upload_images/18fcf2c029e80308d151df53a81485005cf53bcc468cb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/18fcf2c029e80308d151df53a81485005cf53bcc468cb.png?mw=700" alt="" /></a></p> <p>あまり覚えてないのですが多分下記に多少アクセスがあったのかもしれません。</p> <p><a href="https://crieit.net/posts/PHP-Laravel-FCM-Web">PHP+Laravel+FCMでWebプッシュ通知を送る</a></p> <p>今考えると1ヶ月目でこれは僕の中ではかなり驚異的な数値ですね…! 6月からもう頑張って11記事ほど書いていたようです。</p> <h3 id="最初のバズ"><a href="#%E6%9C%80%E5%88%9D%E3%81%AE%E3%83%90%E3%82%BA">最初のバズ</a></h3> <p><a href="https://crieit.now.sh/upload_images/e841b91e9a9ae7c1369374a3b05652e55cf53cf962225.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/e841b91e9a9ae7c1369374a3b05652e55cf53cf962225.png?mw=700" alt="" /></a></p> <p>グラフの最初の突起はなんとか自分でバズらせることができた最初の記事です。多分下記です。Twitterで許可をもらってなんとか頑張って翻訳しました。サーバーの強さが分からなかったのでまだリアルタイム解析を見ながらドキドキしていました。</p> <p><a href="https://crieit.net/posts/Slack-PHP">SlackはPHPっぽいもので作られているらしい</a></p> <p>あと、同じ月にもう一つバズり、これははてブの1位に一瞬なっていたと思います。</p> <p><a href="https://crieit.net/posts/Vue-js-HTML-CSS-3D">Vue.jsとHTMLとCSSで3Dアクアリウムを作ってみた</a></p> <p><a href="https://crieit.now.sh/upload_images/34b83c64ce93d83760fc5cc174dffc8a5cf53ec047e4a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/34b83c64ce93d83760fc5cc174dffc8a5cf53ec047e4a.png?mw=700" alt="" /></a></p> <p>これ以降もちょくちょくはてブに載る記事はありましたが、僕が自分で書いた記事で大きくバズったものはもうなかったと思います。バズらせるのはむずかしい…。</p> <p>下記はその後の平常時のアクセスです。</p> <p><a href="https://crieit.now.sh/upload_images/b9788929069a04f989223628eaf76e525cf53e8ca151e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b9788929069a04f989223628eaf76e525cf53e8ca151e.png?mw=700" alt="" /></a></p> <p>何回かバズったことで、恐らく色々なところからの流入が徐々に伸びるようになっていったのではないかと思います。また、元々はてなブログで書いていた記事も最初に移行していたので、そのあたりの影響も連動して出てきたのではないかと思います。</p> <h3 id="アドベントカレンダー"><a href="#%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">アドベントカレンダー</a></h3> <p>年末にアドベントカレンダーを開催しました。アクセスはそれまではたまに増えたりはしますが、基本的には平坦な感じでした。よく諦めず頑張りました。ただ、この時の12月は毎日通常の倍くらいのアクセスがありました。毎日記事をいろいろな方に投稿していただけたので、皆さんのツイートと自分の毎日のツイート&RTで頑張っていました。</p> <p><a href="https://crieit.now.sh/upload_images/c255821b69172f09da32d9b90af8d21b5cf596713c5ea.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/c255821b69172f09da32d9b90af8d21b5cf596713c5ea.png?mw=700" alt="" /></a></p> <p>あとは下記の記事がバズっていました。ありがたいです。</p> <ul> <li><a href="https://crieit.net/posts/WordPress-Vue-js">初めてのウェブサービスを WordPress + Vue.js で個人開発した話</a></li> <li><a href="https://crieit.net/posts/UI">個人開発のUI設計術</a></li> </ul> <h3 id="今年"><a href="#%E4%BB%8A%E5%B9%B4">今年</a></h3> <p>今年は3月に久しぶりにバズった記事がありました。</p> <p><a href="https://crieit.net/posts/500-WEB">月500円の不労所得を得るためにWEBサービスを開発した話(1)</a></p> <p>おかげさまで平日のPVがだんだん1,000を超えるようになりました。</p> <p><a href="https://crieit.now.sh/upload_images/7b6fbd4c592d356e087a0f10537510075cf597c8bb35b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/7b6fbd4c592d356e087a0f10537510075cf597c8bb35b.png?mw=700" alt="" /></a></p> <p>5月のバズった記事は下記です。GWはPV数などはもうぐちゃぐちゃで平常時のものではないので省略します。</p> <ul> <li><a href="https://crieit.net/posts/VSCode-Remote-Development">VSCodeのRemote Development機能が革命的な話。</a></li> <li><a href="https://crieit.net/posts/Windows">開発マシンをWindowsに移行した話</a></li> <li><a href="https://crieit.net/posts/0844f0a6d109b77928b379312864b349">コードレビュー ありがちな問題への対処例</a></li> </ul> <h2 id="AdSense"><a href="#AdSense">AdSense</a></h2> <p>収益は現在AdSenseのみです。僕は今までのサービスを含め基本的に毎日クリック数はゼロで、たま~にクリックがある日がある、という感じでした。</p> <p>ただ、今年に入ってから突然クリックが増え始め、あっというまに元々と逆転しゼロの日がほとんどない状態になりました。不思議な感覚です。とはいえ収益は平均で月数千円程度です…。無料枠を駆使して運用しているので黒字ですが、お金をかける人であれば赤字になっていることもあるでしょう。</p> <p>ただ、今のところまだアクセスはアップしているところですので今後が気になるところです。また、これだけすくないのであれば逆にうまい広告の打ち方があれば全部使っていいかな、という気持ちにもなります。</p> <p>ちなみにどの広告がよくクリックされているか、というのが下記の画像です。</p> <p><a href="https://crieit.now.sh/upload_images/a7ae72d4381956b4b644041b7a76d3bb5cf59dcec5d9f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a7ae72d4381956b4b644041b7a76d3bb5cf59dcec5d9f.png?mw=700" alt="adsense.png" /></a></p> <p>右上ディスプレイがダントツですが、これはいろんなページに貼っていた気がするのであくまで参考程度に見たほうが良さそうです。基本的にはやはり特定の記事に来てそのまま直帰するパターンが多いと思いますのでやはり記事の下辺りのクリックが多そうです。</p> <h2 id="独自の集計"><a href="#%E7%8B%AC%E8%87%AA%E3%81%AE%E9%9B%86%E8%A8%88">独自の集計</a></h2> <p>Laravel Admin上に指標として重要そうな独自の集計をいくつか作っています。</p> <h3 id="記事の投稿数"><a href="#%E8%A8%98%E4%BA%8B%E3%81%AE%E6%8A%95%E7%A8%BF%E6%95%B0">記事の投稿数</a></h3> <p><a href="https://crieit.now.sh/upload_images/271ea78b750b6f8de3da8215ea2430415cf5a7d835eaf.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/271ea78b750b6f8de3da8215ea2430415cf5a7d835eaf.png?mw=700" alt="" /></a></p> <p>記事の投稿数も大事ですが、どれだけ多くの方に投稿していただけたかというのも重視しています。今のところ一応増えていってはいるようですが、たまたま一度だけ書いたり、書いていたけどもうやめてしまった、という方もいますし今後もそれの繰り返しだと思いますので、なんとかこの値が増えていくようやっていきたいところです。</p> <p>とはいえ以前は僕が主に月10記事程度書くのが主なコンテンツの増加だったところが、いまや50~70記事ほど他の方に書いていただけるということになりますので本当にもう一つ一つの積み重ねになっている全ての記事が大切で、感謝しています。</p> <h3 id="ユーザー登録数"><a href="#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E7%99%BB%E9%8C%B2%E6%95%B0">ユーザー登録数</a></h3> <p><a href="https://crieit.now.sh/upload_images/25c8b41d998e10f625c3544661688b125cf5a9866cf2f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/25c8b41d998e10f625c3544661688b125cf5a9866cf2f.png?mw=700" alt="" /></a></p> <p>ユーザー登録数も大事ですが、どれだけ増加していけばいい感じの状態なのかがいまいちわからないのと、登録しても何かを投稿していただけたりのアクションに必ずつながるというわけではないため、あまり詳しくは見ていません。</p> <p>このあたりはアクセスが増えればある程度連動していく箇所でもあると思いますし、それよりはアクション率を高める方が重要だと思うのでとりあえず他のところを考えているような感じになります。</p> <p>元々は記事を見るためにアクセスしてきた方が登録されて記事の投稿などまでいけばいいな、と感じていましたが、そもそも記事を書く人、見る人の属性は全く別物で見る人は見だけの役割、というものもサービス上にはあるような気がしていますので、そのあたりも試行錯誤しつつも考えすぎておかしな施策をしすぎたりしないほうがいいのかな、とも考えるようになってきています。</p> <h3 id="Contributionランキング"><a href="#Contribution%E3%83%A9%E3%83%B3%E3%82%AD%E3%83%B3%E3%82%B0">Contributionランキング</a></h3> <p>丁度ちょっと前にContributionランキングを作っていたのでそちらです。</p> <p><a href="https://crieit.now.sh/upload_images/a217c5321557ae8aad29a5f0672d9d8d5cf5bb3f5bff2.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/a217c5321557ae8aad29a5f0672d9d8d5cf5bb3f5bff2.png?mw=700" alt="" /></a></p> <p>1位はコリさんで、いくつも連載を投稿してくださっています。連載機能はコリさんの大量の投稿やアイデアから考えて作ることになったものです。</p> <p>2位はこうしえんさんで、ボードにたくさんの投稿をしていただけています。こちらもこうしえんさんが投稿したものを見てこれはやばいな、と思った箇所を調整することでたくさんの改善ができました。</p> <p>3位はうえださんで、記事もコメントもたくさん書いていただけました。</p> <p>今後色々調整したりすると思いますが、現在はGitHubと同様どのアクションも+1になるしくみですので、これだけのアクションをしていただけたのだなぁ、と感謝の気持ちでいっぱいです。アクションはコンテンツの増量だけでなく、サービス自体の改善すべき箇所の発見にも直結するため本当にクオリティとか量とか一切関係なく、どんなアクションでも全部ありがたいです。</p> <p>ですのでもし何かしらのアクションに対して躊躇されている方などがいれば、是非何も気にせず思いつきのレベルで問題ありませんので是非試してみていただければと思います。</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>ということで初になりますがいろいろとデータを公開してみました。他のすごいサービスに比べたいしたデータを公開できないのが申し訳なく残念です。もっとすごければ定期報告でもしてなにかの役にたてていただければとも思うのですが。</p> <p>ただ、継続は力なりということでサービス運営において何の取り柄のない、何一つうまくやり遂げたことのない開発者でもここくらいまではいける、ということが示せたので、同じように悩んでいる方々の何かの参考になれば幸いです。(ただ、適当なものを作って長期頑張っても意味がないと思いますので、何を解決できるサービスかはしっかり考えていった方が良いと思います)</p> <p>また、各データはまだ伸びている段階ですので、このまま続けていくとどうなるのだろう、という楽しみが自分の作ったサービスの中で一番大きいものになっています。引き続きいろいろと試してみたいと思います。</p> <h2 id="今後の展望"><a href="#%E4%BB%8A%E5%BE%8C%E3%81%AE%E5%B1%95%E6%9C%9B">今後の展望</a></h2> <p>ロードマップに書いてあるものも書き忘れているものもいくつかアイデアがありますが、なかなか全部できる時間もないためまた優先的に色々ためしにやっていきたいと思っています。</p> <p>開発だけでなく、<a href="https://crieit.net/boards/crieit-request/bb71b0f4831a649e846a9f6a8133d086">こちら</a>に投稿していただいたチャレンジ的な企画を年中やって盛り上げる、的なこともずっとやってみたいと思っていたのですが、なかなか心理的な障壁が高くてできていなかったため、せっかくですのでこの機会に試していきたいと思います。</p> <p>あとは有料系の機能も徐々に試していきたいな、と思っています。たとえば有料記事、FANBOXのような有料ボード、有料広告枠等。このあたりは作っても多分使われないと思いますが、ただ人気がなくても使いたい人にとっては特に迷うことなく使えるものだと思いますので機能だけ作りつつデータを集めて様子を見はじめなきゃなと思っています。(とはいえ有料記事は僕自身も何を書けばいいかよくわからないのでなかなかモチベーションが上がりません)</p> <p>あと話はずれますが、Crieitはユーザー属性が偏っており、多分技術系の人以外にこういうサービスをやってる、と言っても「???」となると思いますし、それゆえ単純に人の母数が限られていたり広告収入も渋かったりというところがあると思いますので、Crieitの運用と並行して常時他にも色々とジャンルの違うサービスを作っていきたいと思っています。</p> <p>今年は下記を作ったりしました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://questions.appllis.net">100の質問メーカー</a><br /> <a target="_blank" rel="nofollow noopener" href="https://tlshare.appllis.net">TLシェア</a></p> <p>とはいえバタバタしてるとやっぱり作りっぱなしで運営の方が放置気味になってしまいますが…。</p> <p>こんな感じで何か一つガッツリ運営するサービスを持ちつつ、合間で他にも作って試してみる、というのは色々な意味でおすすめです。ただ、時間がないと全部おざなりになる可能性もあるためそうなる場合は一つのサービスに注力した方が良いかもしれません。もしくは、おざなりでもなんとかなるものをたくさん作って行った方が良いと思います。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15011 2019-05-22T22:09:48+09:00 2019-05-26T00:21:04+09:00 https://crieit.net/posts/note 「noteで書く」ボタンを追加しました。 <p>本日noteにてリリースされた「noteで書く」ボタンに対応しました。記事やボードなどでボタンを押してnoteに関連する記事を書くことができます。</p> <p><a href="https://crieit.now.sh/upload_images/86cc232cae0af722327a2501a9f894535ce51dd89b613.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/86cc232cae0af722327a2501a9f894535ce51dd89b613.png?mw=700" alt="" /></a></p> <p>是非気になる記事や、何か読んだ内容について考察など書いてみたい場合などにご利用ください。</p> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/14954 2019-04-28T23:10:50+09:00 2019-05-23T16:21:25+09:00 https://crieit.net/posts/Twitter-5cc5b46acb66c Twitterアンケートではてブについて聞いた件の考察 <p>Crieitにて次に開発すべき内容について非常に悩んで何も進まない状態だったのでTwitterでアンケートを試してみました。ほとんど回答なんてないだろうと思ってましたが、自分的には思いがけず結構多くの方に回答して頂けたようで本当に感謝&参考になりました。Twitterアンケートって匿名だしワンクリックで手軽だから本当にそのへんの軽さのおかげっぽいのですごい。</p> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">プログラミングをやったことある方に質問です。はてなブックマークって…</p>— だら@技術系投稿サービスや100の質問メーカー運営中 (@dala00) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/dala00/status/1122155470028861440?ref_src=twsrc%5Etfw">April 27, 2019</a></blockquote> <h2 id="背景"><a href="#%E8%83%8C%E6%99%AF">背景</a></h2> <p>Crieitの開発で次は何を進めようかずっと悩むばかりで手が止まっていました。具体的に何を悩んでいたかというと、うちのサービスは検索流入が主なアクセス獲得方法となっているため、下記のような課題があります。</p> <ul> <li>その主となるアクセスユーザーは多分Crieit上で何もアクションせず素通り</li> <li>アクションを行うのはそれ以外のTwitter等からアクセスされた方が主になると思うので、割合的には少ない</li> </ul> <p>そのためその課題を解決するための一つの方法として、主なアクセス獲得方法となっている検索流入ユーザーが気軽に何かしらのアクションができる仕組みを作れないかとずっと考えていました。</p> <h2 id="解決案"><a href="#%E8%A7%A3%E6%B1%BA%E6%A1%88">解決案</a></h2> <p>記事詳細ページの好きなところに付箋を貼ることができると良いんじゃないかなと思いました。これだけで下記のような多くの事が望めるのでは…と。</p> <ul> <li>付箋した箇所をあとで見返すことができるのでリピートしてくれる可能性が出てくる</li> <li>記事を書いた人も「いいね」やはてブとは別のフィードバックになり嬉しい</li> <li>ついでに感想も書けるようにすると上記の効果が増大し、且つそのままTwitterシェアできるようにすれば拡散にも役立ちそう。また、新たなコンテンツにもなる</li> <li>付箋機能を使うためにユーザー登録してくれる</li> </ul> <p>もともと<a target="_blank" rel="nofollow noopener" href="https://trello.com/b/OBvr5yZD/crieitロードマップ">ロードマップ</a>にいくつかアイデアを書いていたのですが、ちょうどそれらのいくつかにマッチするような内容でもありました。</p> <h2 id="問題点"><a href="#%E5%95%8F%E9%A1%8C%E7%82%B9">問題点</a></h2> <p>ただ、この付箋機能には問題点があります。それはレスポンシブなサービス且つ投稿された記事では不可能ということです。</p> <p>レスポンシブであるがゆえに、付箋の位置はアクセスした人それぞれによって変わってしまうため特定ができません。では位置ではなく段落毎に付箋を付けられるようにしようかとも思いましたが、そもそも段落も記事の編集で変わったり消えたりする可能性があるためやはりメリットが薄れてしまいます。</p> <h2 id="延々と悩む"><a href="#%E5%BB%B6%E3%80%85%E3%81%A8%E6%82%A9%E3%82%80">延々と悩む</a></h2> <p>そんなこんなでここで延々と悩み始めました。</p> <ul> <li>とりあえず作ってみればいいんじゃないか</li> <li>でも結構作るの大変そうだし駄目だったときの時間のロスも大きそうだし…。</li> <li>そもそも段落毎にボタンとかあったら邪魔じゃない?(これはまあ自由位置でも同様ではあるけど…)</li> <li>もういっそストック的な機能でいいんじゃない? 前述の機能とテーブル構成殆ど変わらない(位置情報があるかどうかの違い)っぽいし</li> <li>それだったらそもそもはてブでいいんじゃないの? そこに時間かける必要ある?</li> </ul> <h2 id="浮かんだ疑問"><a href="#%E6%B5%AE%E3%81%8B%E3%82%93%E3%81%A0%E7%96%91%E5%95%8F">浮かんだ疑問</a></h2> <p>そこまで考えてふと思いました、そもそも、プログラミングしてる人って全員はてなブックマーク使ってるのか…と。</p> <p>使っているのであれば、もっとはてなブックマークのボタンゴリ押しする形でUIとか変えれば良いんじゃないか、という気がしましたし、もしそれほど使われてないんだったらQiitaみたいに独自にブックマーク機能を作って、検索で来た人が簡単にサービス上にストックしておける機能を作ってあげたほうがいいんじゃないか、と思いました。</p> <p>ただ、こんなのははっきり言って実際どうなのか全く想像できななかったので、Twitterアンケートしてみたらどうだろう…? とふと思いました。回答はあまりされないだろうけど、まあとりあえずいいか、という感じで。</p> <h2 id="結果と考察"><a href="#%E7%B5%90%E6%9E%9C%E3%81%A8%E8%80%83%E5%AF%9F">結果と考察</a></h2> <p>結果、先程のツイートの通り、はてなブックマークを使っている人の割合は想像していたものに比べものすごく低いことが分かりました。4人に1人くらいしか使っていないという結果のようです。もちろんユーザー属性が偏っているので確実に正しい結果とは言えませんが、むしろ偏ってる中でこれくらいということであれば結構本当なのでは…という気がしました。</p> <p>自分的にはやはりみんな使っているものだと思っていたのでかなり意外な結果でした。とはいえ自分もさほどブックマークはしませんし、どちらかというと見る専的な感じですので、実際にはさほど意外な結果では無いのかもしれません。</p> <p>というか「ブクマする」じゃなくて「使う」という曖昧な言葉にしたのは間違ったかな、と思ったのですが、この結果だとあまりどちらの書き方でも問題ない感じになったので幸いでした。</p> <p>ということで、はてブボタンをゴリ押しするUIに変える、というのは完全に間違いで、とりあえずCrieit内に独自のストック機能をつけてあげる、という対応が今一番望ましいのではないかという判断となりました。とりあえずそこだけ作っておけばあとで位置を加えられるようにする拡張はすぐできそうですし。</p> <p>まあこれが本当にいま一番すべきこと&多くのことを解決することなのかは完全に空想上の話のためよくわからないですが、とにかく悩んでいたことがスッキリしたことが一番ありがたいことでした。回答していただいた方全員にとても感謝です。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/14896 2019-04-01T07:14:06+09:00 2019-04-01T11:02:55+09:00 https://crieit.net/posts/c4e13ccbb7ff6ffbec992d58cf06261c エイプリルフールはじめました <p>リリースしてからはじめてのエイプリールフールだったのでちょっと遊んでみました。ふわふわと飛んでいるのはくりえいとくんです。</p> <p><a href="https://crieit.now.sh/upload_images/cf9086966f7925dc9e21645fb9bf8e125ca0d778569a6.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cf9086966f7925dc9e21645fb9bf8e125ca0d778569a6.png?mw=700" alt="" /></a></p> <p>元々</p> <p>Crieit</p> <p>という文字が顔に見えたのでそれをそのまま絵にしてみたらおばけになった、という感じです。クリックすると色々喋ります。</p> <p><img src="/img/aprilfool/crieit.png" alt="" /></p> <p>特筆することも無いので動き回らせているプログラムでも貼っておきます。</p> <h2 id="おばけクラス"><a href="#%E3%81%8A%E3%81%B0%E3%81%91%E3%82%AF%E3%83%A9%E3%82%B9">おばけクラス</a></h2> <p><code>move()</code>で動かし、<code>getX()</code>と<code>getY()</code>で表示するための位置を取得しているだけのよくあるクラスです。</p> <p>Goast.ts</p> <pre><code class="javascript">const ymax = 50 const width = 100 export default class Ghost { id: number private x = 0 private y = 0 private basey = 0 private ax = 0 private angle = 0 constructor() { this.id = Date.now() if (Math.round(Math.random()) === 0) { this.x = -width this.ax = Math.floor(Math.random() * 2 + 2) } else { this.x = window.innerWidth this.ax = -Math.floor(Math.random() * 2 + 2) } this.basey = Math.floor(Math.random() * window.innerHeight) this.calculateY() } calculateY() { this.y = this.basey + Math.sin(this.angle) * ymax } move() { this.x += this.ax this.angle += Math.PI / 50 if (this.angle >= Math.PI * 2) { this.angle -= Math.PI * 2 } this.calculateY() } finished() { if (this.ax < 0 && this.x < -width) { return true } if (this.ax > 0 && this.x > window.innerWidth) { return true } return false } getX() { return this.x } getY() { return Math.floor(this.y) } getAx() { return this.ax } } </code></pre> <h2 id="おばけたちの管理コンポーネント"><a href="#%E3%81%8A%E3%81%B0%E3%81%91%E3%81%9F%E3%81%A1%E3%81%AE%E7%AE%A1%E7%90%86%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88">おばけたちの管理コンポーネント</a></h2> <p>これも特に特筆することのない単なるゲームループ的なコンポーネントです。おばけを管理して画面からはみ出したら削除したりしています。</p> <pre><code class="html"><template> <div> <AprilfoolGhost v-for="ghost in ghosts" :key="ghost.id" :ghost="ghost"></AprilfoolGhost> </div> </template> <script lang="ts"> import { Vue, Component, Prop } from 'vue-property-decorator' import Aprilfool from './Aprilfool.vue' import AprilfoolGhost from './AprilfoolGhost.vue' import Ghost from './Ghost' @Component({ components: { AprilfoolGhost } }) export default class AprilfoolGhosts extends Aprilfool { ghosts: Ghost[] = [] mounted() { if (!this.isAprilfool()) { return } setInterval(() => { if (this.ghosts.length < 10) { this.ghosts.push(new Ghost()) } }, 5000) setInterval(() => { this.moveAll() }, 41) } moveAll() { const ghosts: Ghost[] = [] this.ghosts.forEach((ghost, index) => { ghost.move() if (!ghost.finished()) { ghosts.push(ghost) } }) this.ghosts = ghosts } } </script> </code></pre> <h2 id="おばけコンポーネント"><a href="#%E3%81%8A%E3%81%B0%E3%81%91%E3%82%B3%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%8D%E3%83%B3%E3%83%88">おばけコンポーネント</a></h2> <p>もう動きはおばけクラス、管理は前述のコンポーネントで行われているので、ここでは表示したりクリックイベントを処理したりするだけです。これで一通り完了です。面倒だったので表示はfixedにしてスクロールは考慮しないようにしています。</p> <pre><code class="html"><template> <div> <a @click.prevent="showMessage()" :style="getStyle()"> <img src="/img/aprilfool/crieit.png" :class="getClass()"> </a> <div :style="getFukidashiStyle()" class="fukidashi"> <div class="d-flex justify-content-center align-items-center"> <div v-html="message"></div> </div> </div> </div> </template> <script lang="ts"> import { Vue, Component, Prop } from 'vue-property-decorator' import Ghost from './Ghost' const messages = [ 'Happy Halloween!', 'Trick or Treat??', : : ] @Component export default class AprilfoolGhost extends Vue { @Prop(Object) ghost: Ghost isMessageShown = false message = '' getStyle() { return { left: `${this.ghost.getX()}px`, top: `${this.ghost.getY()}px` } } getClass() { return { reverse: this.ghost.getAx() < 0 } } getFukidashiStyle() { return { left: this.ghost.getX() - 200 + 'px', top: this.ghost.getY() - 200 + 'px', opacity: this.isMessageShown ? 1 : 0 } } showMessage() { if (this.isMessageShown) { return } this.message = messages[Math.floor(Math.random() * messages.length)] this.isMessageShown = true setTimeout(() => { this.isMessageShown = false }, 5000) } } </script> <style scoped> div > * { display: block; position: fixed; opacity: 0.8; } .reverse { transform: scale(-1, 1); } .fukidashi { background: url(/img/aprilfool/fukidashi.png); width: 274px; height: 200px; opacity: 0; transition-duration: 0.2s; } .fukidashi > div { margin-left: 40px; margin-top: 20px; width: 200px; height: 100px; font-size: 1.8rem; } </style> </code></pre> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>さあ、みなさんも新元号のことは忘れてエイプリールフールやりましょう。今からでも間に合います!!!!!(?)</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/14784 2019-02-06T21:59:37+09:00 2019-02-21T13:49:02+09:00 https://crieit.net/posts/7c643c2bc7781905c5e78d21110516b4 作業記録ボードにログを残していこう <p>自分用の作業記録ボードを作って個人で開発しているものの記録を残すのにボード機能はぴったりです。投稿をシェアすれば自分の作っているものを他の人に知ってもらうことができますし、単にツイートするよりは、ボードにまとまっていた方が自他ともにあとで何をやっていたのか見返しやすいです。</p> <p>ボードの作成画面にも作業記録ボードのプリセットがあるため、ボタン一つでだいたいの設定を行うことができます。</p> <p><a href="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c5ad87d54fe8.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c5ad87d54fe8.png?mw=700" alt="" /></a></p> <p>下記のようなオススメ設定にしています。</p> <ul> <li>タイトルを入力可能</li> <li>タグを入力可能</li> <li>自分のみ書き込み可能</li> </ul> <p>何かサービスを作っている場合や運用中のサービスやアプリがある場合はボードの説明にURLやスクリーンショットを貼っておくと良いと思います。</p> <h2 id="日々の投稿"><a href="#%E6%97%A5%E3%80%85%E3%81%AE%E6%8A%95%E7%A8%BF">日々の投稿</a></h2> <p>何か開発を行った日、その日の進捗を書きいてツイッターなどにシェアしましょう。開発中の画面のスクリーンショットを撮って貼っておくと見る人も楽しいと思いますし、画像がなくてもMarkdownでコードを書いておくとツイートにコードのスクリーンショットが表示されます。</p> <p>例として、下記はCrieitの開発ボードです。</p> <p><a href="https://crieit.net/boards/crieit-development">Crieitの開発</a></p> <p>是非お試しください!</p> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/14780 2019-02-04T23:39:39+09:00 2019-02-04T23:39:39+09:00 https://crieit.net/posts/84d4a0b4ef119553e0c412ef1d44fc58 掲示板を作る <p>Crieitのボードは自分専用のものだけではなく、誰でも投稿できるものを作ることができます。みんなで技術的なことやクリエイティブなことについて雑談したりする掲示板を作ったりできます。</p> <p>プリセットもありますので、すぐ作成可能です。</p> <p><a href="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c584d75dccfb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c584d75dccfb.png?mw=700" alt="" /></a></p> <p>基本的にはプライベートと自分専用チェックを外しておけば問題ないと思います。もしもっと誰にでも書き込みやすいボードにしたい場合は匿名にもチェックを入れると良いでしょう。</p> <p>掲示板は例えば下記のようなものを作ってコミュニケーションできると楽しいと思います。</p> <ul> <li>プログラミング言語についての話</li> <li>フレームワークについての話</li> <li>何かのソフトについての話</li> <li>仕事についての話</li> <li>趣味での開発や制作についての話</li> <li>何かのグループ内での話</li> <li>問い合わせのやり取りなど</li> <li>意見や情報募集の掲示板</li> </ul> <p>是非それぞれのアイデアで色々なボードを試してみてください!</p> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/14759 2019-01-29T21:22:22+09:00 2019-01-29T21:22:22+09:00 https://crieit.net/posts/Crieit-5c50457e04405 Crieitボードで非公開のメモやひとりごとを書く <p>Crieitのボードにはプライベート機能があるため、自分用のシークレットボードを作って自由に何かを書くことができます。</p> <p><a href="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c5042d2a93e0.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c5042d2a93e0.png?mw=700" alt="Crieit (2).png" /></a></p> <p>この画像のように、ボード作成時には権限が設定でき、「プライベート」にチェックを入れてボードを作ることで自分だけが閲覧、書き込みができるプライベートなボードを作ることができます。</p> <h2 id="用途"><a href="#%E7%94%A8%E9%80%94">用途</a></h2> <p>例えば下記のような用途があるのではないかと思います。</p> <h3 id="アイデアノート"><a href="#%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2%E3%83%8E%E3%83%BC%E3%83%88">アイデアノート</a></h3> <p>誰にも見られたくないけど、どこかに書き起こしておきたいアイデアをまとめたノート。例えば作りたいWebサービスのネタや、開催したいイベントのアイデアなど。</p> <p>タイトルやタグを付けることもできるので、アイデアをタグでまとめたりすることもできる。また、ある程度きっちりまとめておくと、ボツになったアイデアや、ある時急に公開した方がよくなったタイミングなどで使いまわしやすい。</p> <h3 id="日記"><a href="#%E6%97%A5%E8%A8%98">日記</a></h3> <p>思っていることをひたすら書く日記帳。誰かに見せたいわけじゃないけど、Markdownできっちりまとめて自分の気持をまとめてみたい時など。</p> <h3 id="Markdownの練習"><a href="#Markdown%E3%81%AE%E7%B7%B4%E7%BF%92">Markdownの練習</a></h3> <p>何か公開したい物があるわけではないけど、今後Markdownを何かしらで使っていきたいので練習のため色々書いてみたいときに。</p> <h2 id="参考リンク"><a href="#%E5%8F%82%E8%80%83%E3%83%AA%E3%83%B3%E3%82%AF">参考リンク</a></h2> <ul> <li><a href="https://crieit.net/posts/de9e7589d29c369e5f2e29a6b824ccf4">ボードとは?</a></li> </ul> Crieit=コミュニティlike(Qiita+dev.to)/3公式 tag:crieit.net,2005:PublicArticle/14756 2019-01-28T21:07:45+09:00 2019-01-30T09:58:18+09:00 https://crieit.net/posts/100DaysOfCode-Crieit 100DaysOfCodeをCrieitボードではじめよう <p>Twitterで流行っている100DaysOfCodeを、Crieitボードを使って進めると色々とメリットがあります。</p> <p><a href="https://crieit.now.sh/upload_images/0806a6cf470ac12641e741703216a2375c3c887b909eb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0806a6cf470ac12641e741703216a2375c3c887b909eb.png?mw=700" alt="" /></a></p> <p>そもそも100DaysOfCodeというのは何かというと、Twitter上で<code>#100DaysOfCode</code>というハッシュタグをつけ、毎日プログラミング学習を行ったことをツイートすることです。</p> <h2 id="100DaysOfCodeの詳しいやり方"><a href="#100DaysOfCode%E3%81%AE%E8%A9%B3%E3%81%97%E3%81%84%E3%82%84%E3%82%8A%E6%96%B9">100DaysOfCodeの詳しいやり方</a></h2> <p>基本的にはTwitter上で行います。どの工程もすべて<code>#100DaysOfCode</code>というハッシュタグを付けましょう。</p> <h3 id="開始を宣言する"><a href="#%E9%96%8B%E5%A7%8B%E3%82%92%E5%AE%A3%E8%A8%80%E3%81%99%E3%82%8B">開始を宣言する</a></h3> <p>まずやることに決めたら、これからはじめるよ! ということをツイートで宣言しましょう。ハッシュタグを忘れずに。</p> <h3 id="毎日ツイートする"><a href="#%E6%AF%8E%E6%97%A5%E3%83%84%E3%82%A4%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B">毎日ツイートする</a></h3> <p>毎日、その日やったことをツイートします。<code>Day10</code>や<code>1/10</code>など、わかりやすい形でその日が何日目かということも本文に含めます。例えば下記のような感じです。</p> <pre><code>Day12 ・データの投稿機能を作成した ・ツイッターにシェアできる機能を作った #100DaysOfCode </code></pre> <h2 id="Crieitボードで行う"><a href="#Crieit%E3%83%9C%E3%83%BC%E3%83%89%E3%81%A7%E8%A1%8C%E3%81%86">Crieitボードで行う</a></h2> <p>これをCrieitのボード機能を使って行うと、下記のようなメリットがあります。</p> <h3 id="コードも書ける"><a href="#%E3%82%B3%E3%83%BC%E3%83%89%E3%82%82%E6%9B%B8%E3%81%91%E3%82%8B">コードも書ける</a></h3> <p>ボードの投稿はMarkdownで行うため、実際に書いたコードも一緒に投稿することができます。例えばJavaScriptであれば下記のような書き方です。</p> <pre><code> ```javascript function test(a) { return a } ``` </code></pre> <p>すると下記のような形で表示されます。</p> <pre><code class="javascript">function test(a) { return a } </code></pre> <p>ツイート上では表示できませんが、URLと一緒にシェアすればリンクをクリックされた場合にコードを見ることができるので他の人が参考にすることもできますし、自分の備忘録としても有用です。</p> <h3 id="ちゃんとログとして残せる"><a href="#%E3%81%A1%E3%82%83%E3%82%93%E3%81%A8%E3%83%AD%E3%82%B0%E3%81%A8%E3%81%97%E3%81%A6%E6%AE%8B%E3%81%9B%E3%82%8B">ちゃんとログとして残せる</a></h3> <p>ツイートだと他のツイートに混じってしまいますが、100DaysOfCode専用のボードを作ってそちらに投稿する形であれば、他のものと混じらずそれ専用のログとして残すことができ、あとで見返すことも簡単ですし、これが自分のログだよ、と他の人にシェアすることも容易です。</p> <h2 id="実際の進め方"><a href="#%E5%AE%9F%E9%9A%9B%E3%81%AE%E9%80%B2%E3%82%81%E6%96%B9">実際の進め方</a></h2> <p>実際の進め方は下記になります。</p> <ol> <li>自分の100DaysOfCode専用のボードを作成する</li> <li>そのボードに毎日投稿していく</li> </ol> <h3 id="ボードの作り方"><a href="#%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E4%BD%9C%E3%82%8A%E6%96%B9">ボードの作り方</a></h3> <p>まず、画面上部のボードを作成ボタンから作成ページに行きます。</p> <p><a href="https://crieit.now.sh/upload_images/13360b6f4e6776cac86b7209718f716f5c3c3c50acb32.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/13360b6f4e6776cac86b7209718f716f5c3c3c50acb32.png?mw=700" alt="" /></a></p> <p>ボード作成にはプリセット機能というものがあり、100DaysOfCodeのプリセットもあるため、このボタンを押すとボード作成に必要なほとんどの情報を入力してくれます。</p> <p><a href="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c4dca95901f3.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6dff185c69868592861575e68eb0042a5c4dca95901f3.png?mw=700" alt="" /></a></p> <p>必要に応じて調整しましょう。</p> <ul> <li>ボード名を自分の名前にする</li> <li>ボードIDの<code>yourID</code>を自分のIDにする</li> <li>その他意気込みなどがあれば概要に追記する</li> </ul> <p>等。</p> <h3 id="作ったボードをシェアする"><a href="#%E4%BD%9C%E3%81%A3%E3%81%9F%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E3%82%B7%E3%82%A7%E3%82%A2%E3%81%99%E3%82%8B">作ったボードをシェアする</a></h3> <p>ボードを作成すると、概要の右下にシェアボタンが表示されます。これでツイッターに意気込みをシェアしましょう。</p> <p><a href="https://crieit.now.sh/upload_images/5a840e81e6a60ac913fb559990bf6ff05c4dcb82c3ce4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/5a840e81e6a60ac913fb559990bf6ff05c4dcb82c3ce4.png?mw=700" alt="" /></a></p> <h3 id="毎日書く"><a href="#%E6%AF%8E%E6%97%A5%E6%9B%B8%E3%81%8F">毎日書く</a></h3> <p>あとは投稿ボタンから実際の投稿を毎日行っていきます。</p> <p><a href="https://crieit.now.sh/upload_images/0806a6cf470ac12641e741703216a2375c3c4bdf4498a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/0806a6cf470ac12641e741703216a2375c3c4bdf4498a.png?mw=700" alt="" /></a></p> <p>投稿後、各投稿の右下にもシェアボタンがあるため、そちらからツイートを行うことでその日は完了となります。これを頑張って100日続けていきましょう。</p> <p>コードはツイートしてもあまり意味がないと思いますので、ツイートのシェア文からは削除しても問題ないと思います。コードは投稿しておけばツイートのリンクをクリックして訪れた人は見ることができます。ツイートの本文にはその日やったことのリストを主に書くようにしましょう。シェアする際にシェア文は調整可能です。</p> <p><a href="https://crieit.now.sh/upload_images/caef422b5f945dbe0c3652710a9ce9205c4dcce383899.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/caef422b5f945dbe0c3652710a9ce9205c4dcce383899.png?mw=700" alt="" /></a></p> <p>見やすく調整して投稿しましょう。</p> <p><a href="https://crieit.now.sh/upload_images/caef422b5f945dbe0c3652710a9ce9205c4dcd55d14bc.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/caef422b5f945dbe0c3652710a9ce9205c4dcd55d14bc.png?mw=700" alt="Twitter でリンクを共有する.png" /></a></p> <p>本文の最後を途切れさせておくと、まだ続くのかな? とアクセスしてもらえる可能性があがりそうです。</p> <h2 id="参考リンク"><a href="#%E5%8F%82%E8%80%83%E3%83%AA%E3%83%B3%E3%82%AF">参考リンク</a></h2> <ul> <li>開発者が行った実際の例 <a href="https://crieit.net/boards/dala00-100days-of-code">dala00の100DaysOfCode</a></li> <li><a href="https://crieit.net/posts/de9e7589d29c369e5f2e29a6b824ccf4">ボードとは?</a></li> </ul> Crieit=コミュニティlike(Qiita+dev.to)/3公式