tag:crieit.net,2005:https://crieit.net/users/jyouj__/feed
じぇい👨💻Hundread運営&Punizm開発中の投稿 - Crieit
Crieitでユーザーじぇい👨💻Hundread運営&Punizm開発中による最近の投稿
2019-03-01T17:00:36+09:00
https://crieit.net/users/jyouj__/feed
tag:crieit.net,2005:PublicArticle/14848
2019-03-01T17:00:36+09:00
2019-03-01T17:00:36+09:00
https://crieit.net/posts/Firebase-Nuxt-js-SNS
Firebase+Nuxt.jsでともだちのSNSリンクを一カ所で管理できるサービスを作ってしまった......【個人開発】
<p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/jyouj__">じぇい</a>です!</p>
<p>今回僕は、Firebaseの勉強にサービスを一つリリースしました。</p>
<p>それは!</p>
<p>ともだちのSNSリンクを一カ所で管理できる「<a target="_blank" rel="nofollow noopener" href="https://tomodachi.bio">ともだちびお</a>」というサービスです。</p>
<p>Firebase+Nuxt.jsで作りました!Firebaseは初めての挑戦です。</p>
<p>リリースツイートはこちらです!え、リツイートしてくれますよね...?</p>
<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">🎉友人などのSNSリンクを一箇所管理できる「ともだちびお」をリリースしました!㊗️㊗️㊗️Firebase×Nuxt.jsでつくりました!Firebaseをはじめて使ったんですが、便利で感動しました!ぜひ触ってみてください!<a target="_blank" rel="nofollow noopener" href="https://t.co/msQC3Z9F2w">https://t.co/msQC3Z9F2w</a></p>— じぇい👨💻 (@jyouj__) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/jyouj__/status/1101035381208674304?ref_src=twsrc%5Etfw">February 28, 2019</a></blockquote>
<h2 id="サービス内容"><a href="#%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E5%86%85%E5%AE%B9">サービス内容</a></h2>
<p>サービス内容はともだちのSNSリンクを一カ所で管理できる連絡帳サービスです。</p>
<p><img src="https://qiita-image-store.s3.amazonaws.com/0/252295/bd91ed1f-5ea1-2648-d4c1-c5f00c63819a.png" alt="intro.png" /></p>
<p>Twitter, Facebook, Instagram, Githubなどのリンクを登録できます!</p>
<h2 id="使ったもの"><a href="#%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE">使ったもの</a></h2>
<h3><a target="_blank" rel="nofollow noopener" href="https://ja.nuxtjs.org/">Nuxt.js</a></h3>
<p>Vue.jsをさらに便利に活用できるフレームワーク。SPAもSSRもどっちも来い!っていうなんでもできちゃう感。SPAで今回は作りました!</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://firebase.google.com/docs/auth/?hl=ja">Firebase Authentication</a></h3>
<p>Twitter認証に使いました(後述)。</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://firebase.google.com/docs/database/?hl=ja">Firebase Realtime Database</a></h3>
<p>基本的なCRUDを実装しました(後述)。ルール定義で自分の保存データしかアクセスできないようにすることで連絡帳サービスを実装しています。Firestoreも興味深かったのですが、学習コストがたかそうだったので、まずはRealtime Databaseからにしました。</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://firebase.google.com/docs/hosting/?hl=ja">Firebase Hosting</a></h3>
<p>デプロイもものすごく簡単!カスタムドメインにもSSL接続を無料でできてハッピー!</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://fontawesome.com/">FontAwesome</a></h3>
<p>最初、CDNで使ってたんですが速度が遅かったので最終的にはnpmパッケージで使うことにしました。使うアイコンだけ<code>library.add()</code>すれば、読み込みも遅くなりません。</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://github.com/buefy/nuxt-buefy">nuxt-buefy</a></h3>
<p>BulmaのVueに最適化したフレームワーク。細かい部品は頼りきりでした。</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://github.com/hilongjw/vue-lazyload">vue-lazyload</a></h3>
<p>画像の遅延読み込みに使いました。少しは速度は改善したはず......。</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://github.com/mbj36/vue-burger-menu">vue-burger-menu</a></h3>
<p>おしゃれなバーガーメニューを実装できます。</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://github.com/JohMun/vue-tags-input">vue-tags-input</a></h3>
<p>タグの入力に使いました。</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://pwa.nuxtjs.org/">@nuxtjs/pwa</a></h3>
<p>PWA対応を簡単にできます。ただTwitter OAuthを使っているので一度Safariに遷移してしまってあまりうまく使えてません。Androidはできてるのかな?</p>
<h3><a target="_blank" rel="nofollow noopener" href="https://github.com/nuxt-community/analytics-module">@nuxtjs/google-analytics</a></h3>
<p>Google Analyticsの設定が楽々!</p>
<h2 id="Firebaseの認証・CRUD"><a href="#Firebase%E3%81%AE%E8%AA%8D%E8%A8%BC%E3%83%BBCRUD">Firebaseの認証・CRUD</a></h2>
<h3 id="認証"><a href="#%E8%AA%8D%E8%A8%BC">認証</a></h3>
<p><strong>Twitterログイン</strong></p>
<pre><code class="javascript">methods:
twitterLogin () {
var provider = new firebase.auth.TwitterAuthProvider()
firebase.auth().signInWithPopup(provider)
}
}
</code></pre>
<p><strong>ログアウト</strong></p>
<pre><code class="javascript">logout: function() {
firebase.auth().signOut();
},
</code></pre>
<p><strong>ログインしてるかのチェック</strong></p>
<pre><code class="javascript">firebase.auth().onAuthStateChanged(user => {
if (user) {
this.isLogin = true
this.user = user
} else {
this.isLogin = false
this.user = null
};
})
</code></pre>
<h3 id="CRUD"><a href="#CRUD">CRUD</a></h3>
<p><strong>Create(投稿)</strong></p>
<pre><code class="javascript">var newLinkKey = firebase.database().ref().child('posts').push().key;
firebase
.database()
.ref('posts/' + this.user.uid + '/' + newLinkKey)
.set({
content: this.content,
// 省略
})
</code></pre>
<p><strong>Read(読み取り)</strong></p>
<pre><code class="javascript">firebase.database().ref('posts/' + this.user.uid).on('value', function(snapshot) {
this.posts = snapshot.val()
})
</code></pre>
<p><strong>Update(更新)</strong></p>
<pre><code class="javascript">var newPost = {
content: this.content
// 省略
}
var updates = {}
updates['/posts/' + this.user.uid + '/' + key] = newPost
firebase.database().ref().update(updates)
</code></pre>
<p><strong>Delete(削除)</strong></p>
<pre><code class="javascript">firebase.database().ref('links/' + this.user.uid + '/' + key).remove();
</code></pre>
<h3 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h3>
<p>Firebaseはこれだけでマイクロサービスを作り上げることができます。</p>
<p>Nuxt.jsと組み合わせることでサービスの幅も広がって良き良き。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/jyouj__">Twitter</a>フォローしてねー!</p>
じぇい👨💻Hundread運営&Punizm開発中
tag:crieit.net,2005:PublicArticle/14616
2018-12-01T14:27:52+09:00
2018-12-01T14:27:52+09:00
https://crieit.net/posts/4
ニュースをランダムにガチャで読める「ガチャっとニュース」を4時間でリリースした話【個人開発】
<p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/jyouj__">じぇい</a>です!こんにちは。</p>
<p>ニュースをガチャすることで、ニュースをランダムに読める「<a target="_blank" rel="nofollow noopener" href="https://gachat-news.herokuapp.com/">ガチャっとニュース</a>」をリリースしました!</p>
<p><a target="_blank" rel="nofollow noopener" href="https://gachat-news.herokuapp.com/">https://gachat-news.herokuapp.com/</a></p>
<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">【拡散希望】ニュースをランダムにガチャして見れる「ガチャっとニュース」をリリースしました㊗️情報の偏りが問題になるこの世の中でランダムにニュースを見れたなら、偏りも減るのでは?と思って作りました楽しめるようにガチャ風にニュースが出るようになってます<a target="_blank" rel="nofollow noopener" href="https://t.co/95AlF0d9Tr">https://t.co/95AlF0d9Tr</a></p>— じぇい👨💻 (@jyouj__) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/jyouj__/status/1068155029582864384?ref_src=twsrc%5Etfw">November 29, 2018</a></blockquote>
<p>ぜひいろんな人に触ってもらいたいのでリツイートしてもらえると泣いて喜びます:stuck_out_tongue_closed_eyes:</p>
<h2 id="作った背景"><a href="#%E4%BD%9C%E3%81%A3%E3%81%9F%E8%83%8C%E6%99%AF">作った背景</a></h2>
<p>上のツイートにも書いてあるように、情報の偏りを無くそうと思いました。ただランダムにニュースを閲覧できるようにしても面白くないので、ガチャというエンターテイメント性を入れました。</p>
<p>ガチャしてニュースを読むという新たなアプローチ方法です!</p>
<h2 id="製作期間"><a href="#%E8%A3%BD%E4%BD%9C%E6%9C%9F%E9%96%93">製作期間</a></h2>
<p>水曜日3時間、木曜日1時間の計4時間で完成させました。</p>
<p>水曜日にメインの機能であるNewsAPIでニュースをランダムで取得するコードや大まかなサイトのレイアウトを作成しました。</p>
<p>木曜日はTwiiterでシェアされる画像の設定や細かいレイアウトを作成しました。</p>
<h2 id="ガチャっとニュースってどんなサービス?"><a href="#%E3%82%AC%E3%83%81%E3%83%A3%E3%81%A3%E3%81%A8%E3%83%8B%E3%83%A5%E3%83%BC%E3%82%B9%E3%81%A3%E3%81%A6%E3%81%A9%E3%82%93%E3%81%AA%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%EF%BC%9F">ガチャっとニュースってどんなサービス?</a></h2>
<p>「ガチャっと」というボタンを押すとランダムでニュースが一つガチャされます。</p>
<p><img width="1252" alt="スクリーンショット 2018-11-30 18.31.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/c6babb97-62cc-50e8-dd48-1f6e18aa3082.png"></p>
<p><img width="1248" alt="スクリーンショット 2018-11-30 18.32.57.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/5706c062-30ca-867d-2faf-0a6ac3a1c63d.png"></p>
<p>1ページで完結している、シンプルなサービスです。</p>
<p>もちろんスマホ対応してます。</p>
<p><img width="321" alt="スクリーンショット 2018-11-30 18.35.15.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/f01547b4-ae28-bfaf-c91f-d67a7aa9837f.png"></p>
<p><img width="314" alt="スクリーンショット 2018-11-30 18.35.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/a44e31fc-26e5-b19d-116c-142d2f6c178e.png"></p>
<h2 id="使ったもの"><a href="#%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE">使ったもの</a></h2>
<ul>
<li><p>Django</p>
<ul>
<li>使い慣れているから、サクッとできる</li>
<li>Flaskとかでもよかったかも</li>
</ul></li>
<li><p>Bulma</p>
<ul>
<li>1ページだけだけどレイアウトはそれなりには整えたかった</li>
<li>サクッとCSS適用できて便利</li>
<li>モーダルウィンドウやボタン、画像サイズの部分で活躍しました</li>
</ul></li>
<li><p>jQuery</p>
<ul>
<li>モーダルウィンドウの表示の部分で活用しました</li>
<li>小さな機能ならjQueryで十分</li>
</ul></li>
<li><p>News API</p>
<ul>
<li>国別、カテゴリー別など様々なニュースを取得できるAPI</li>
<li>newsapi-pythonというパッケージがあってよかった</li>
<li>最新のニュースを常に取得できるのもいい!</li>
</ul></li>
</ul>
<p>NewsAPIについては僕自身が使い方をブログに記事書いてます(笑)</p>
<p><a target="_blank" rel="nofollow noopener" href="https://jyouj.hatenablog.com/entry/2018/11/26/222639">[Django]NewsAPIを使ってニュースサイトを作ってみる</a><br />
<a target="_blank" rel="nofollow noopener" href="https://jyouj.hatenablog.com/entry/2018/11/27/214832">[Django]NewsAPIを使って色々なニュースを取り出してみよう</a></p>
<ul>
<li><p>Github</p>
<ul>
<li>使わない選択肢がなかった</li>
</ul></li>
<li><p>Heroku</p>
<ul>
<li>とりあえず無料のを使った</li>
<li>サーバーの知識なくてもOKなのありがたい</li>
</ul></li>
</ul>
<h2 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h2>
<p>今回で二つ目のサービスのリリースとなります。個人で色々開発する上のメリットは思い立ったらすぐ形にできたり、自分の気分の乗るときに作れるところだと思います。</p>
<p>まだまだ開発するぞ!</p>
<p>Qiitaにいいねくれたら舞って喜びます:sunglasses:</p>
<p>お読みいただきありがとうございました!</p>
じぇい👨💻Hundread運営&Punizm開発中
tag:crieit.net,2005:PublicArticle/14592
2018-11-03T22:40:22+09:00
2018-11-16T16:49:04+09:00
https://crieit.net/posts/Hundread
【個人開発】リレー式小説投稿サービス"Hundread"をリリースしました!
<p>じぇい(<a target="_blank" rel="nofollow noopener" href="https://twitter.com/jyouj__">@jyouj__</a>)です!</p>
<p>一週間ちょっとでリレー式小説投稿サービス"<a target="_blank" rel="nofollow noopener" href="https://hundread.fun/">Hundread</a>(ハンドレッド)"をリリースしました!</p>
<p>このサービスはもともと6月に行われたStartup Weekend Okayamaにて発表し、優勝したものです。</p>
<p>その後、別のサービスの開発で全然作れていなかったのですが、急に作りたくなってきてデザインを考え直し、急遽一週間ちょっとで作りリリースすることができました!</p>
<blockquote class="twitter-tweet" data-lang="en"><p lang="ja" dir="ltr">リレー式小説サービス"Hundread"をリリースしました!!Hundreadは自分が投稿した小説をツイッターにシェアして続きを他の人に書いてもらうことができます!もちろん、他の人の小説の続きを書くこともできちゃいます!ぜひ、使って拡散してください!<a target="_blank" rel="nofollow noopener" href="https://t.co/qEbytWUukM">https://t.co/qEbytWUukM</a></p>— じぇい👨💻Punizm作ってます (@jyouj__) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/jyouj__/status/1057652433797570562?ref_src=twsrc%5Etfw">October 31, 2018</a></blockquote>
<p>個人開発ではあるものの、様々な方にDMでわからないことを教えていただき無事リリースしました。本当にありがとうございます。</p>
<h1 id="どんなサービスなの?"><a href="#%E3%81%A9%E3%82%93%E3%81%AA%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AA%E3%81%AE%EF%BC%9F">どんなサービスなの?</a></h1>
<p><a target="_blank" rel="nofollow noopener" href="https://hundread.fun/">Hundread</a>は</p>
<p>小説を投稿してツイッターで共有するとそのツイートを見た誰かがその続きを書いてくれる小説投稿サービスです。</p>
<p>もちろん他のユーザーの小説や文章の続きも書くことができます。</p>
<h3 id="ログイン画面"><a href="#%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E7%94%BB%E9%9D%A2">ログイン画面</a></h3>
<p><img width="1242" alt="スクリーンショット 2018-11-01 22.08.42.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/9767151f-d0d3-01b5-ca7c-cc9f06a3f242.png"><br />
<img width="1247" alt="スクリーンショット 2018-11-01 22.08.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/e9943f02-a63b-9b3d-c649-81a8a96391d8.png"></p>
<h3 id="トップページ"><a href="#%E3%83%88%E3%83%83%E3%83%97%E3%83%9A%E3%83%BC%E3%82%B8">トップページ</a></h3>
<p><img width="1247" alt="スクリーンショット 2018-11-01 22.09.12.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/825c32a8-da0c-5347-ecf7-c6485ce40879.png"></p>
<p>このサービスは質問箱のようなサービスのようにツイッターでのコミュニケーションの方法の一つになればと思っています。</p>
<p>次から次に小説をリレーで回すことでこの人はこんなことを書くのか!という新たな気づきを、新しいコミュニケーションの形を、楽しんでみてください!</p>
<h3 id="モバイルにも対応"><a href="#%E3%83%A2%E3%83%90%E3%82%A4%E3%83%AB%E3%81%AB%E3%82%82%E5%AF%BE%E5%BF%9C">モバイルにも対応</a></h3>
<p><img width="439" alt="スクリーンショット 2018-11-01 22.20.29.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/449d51fe-faca-8a28-c7ee-48a83e6f32f7.png"><br />
<img width="416" alt="スクリーンショット 2018-11-01 22.20.52.png" src="https://qiita-image-store.s3.amazonaws.com/0/252295/45860f71-248f-cdb3-7281-5600f84744ae.png"></p>
<h1 id="使ったもの"><a href="#%E4%BD%BF%E3%81%A3%E3%81%9F%E3%82%82%E3%81%AE">使ったもの</a></h1>
<p>・<a target="_blank" rel="nofollow noopener" href="https://www.djangoproject.com/">Django</a><br />
Pythonのフレームワーク。一番なれてる。</p>
<p>・<a target="_blank" rel="nofollow noopener" href="https://bulma.io/">Bulma</a><br />
CSSのフレームワーク。モバイル対応も簡単でデザインもいい感じにできるので、これに頼りきりでした。</p>
<p>・<a target="_blank" rel="nofollow noopener" href="https://developer.twitter.com/">Twitter API</a><br />
Twitterアカウントでログインできるようにしました。</p>
<p>・<a target="_blank" rel="nofollow noopener" href="https://fontawesome.com/">fontawesome</a><br />
とにかく便利</p>
<p>・Github<br />
使うよね:sunglasses:</p>
<p>・Heroku<br />
インフラ関連の知識がないので助かりました。hobbyプランにすると独自ドメインでもSSLになるのでとにかくありがたい。ただ、staticfileの扱いでハマってしまった。。。</p>
<h1 id="助けられた記事"><a href="#%E5%8A%A9%E3%81%91%E3%82%89%E3%82%8C%E3%81%9F%E8%A8%98%E4%BA%8B">助けられた記事</a></h1>
<p><a target="_blank" rel="nofollow noopener" href="https://torina.top/detail/337/">https://torina.top/detail/337/</a><br />
DetailViewとCreateViewの組み合わせを参考にさせていただきました。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/okoppe8/items/76cdb202eb15aab566d1">https://qiita.com/okoppe8/items/76cdb202eb15aab566d1</a><br />
Herokuでのデプロイの時に参考にさせていただきました。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://blog.mktia.com/how-to-use-environment-variables-on-heroku/">https://blog.mktia.com/how-to-use-environment-variables-on-heroku/</a><br />
Herokuで環境変数の設定をする際に参考にさせていただきました。</p>
<p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/kenjikatooo/items/07c3d911210a4ca96781">https://qiita.com/kenjikatooo/items/07c3d911210a4ca96781</a><br />
Herokuで独自ドメインを設定する際に参考にさせていただきました。</p>
<p>また、困っているDjango関連の質問を<a target="_blank" rel="nofollow noopener" href="https://groups.google.com/forum/m/#!forum/django-ja">Django-ja</a>というグループにして、助けてもらいました。</p>
<h1 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h1>
<p>僕は新しい文化を創造することを常に追求してます。</p>
<p>是非とも<a target="_blank" rel="nofollow noopener" href="https://hundread.fun/">Hundread</a>を遊んで、拡散してください!</p>
<p>ちなみに......</p>
<p>Hundreadというサービス名は</p>
<p>手(Hund)で書き、読む(read)</p>
<p>と</p>
<p>100の英単語であるHundred</p>
<p>をかけた造語です笑</p>
<p>お読みいただきありがとうございます!</p>
じぇい👨💻Hundread運営&Punizm開発中