tag:crieit.net,2005:https://crieit.net/boards/web1week-202009/feed 「(9/7~9/13)1週間でWebサービスを作るイベント - お題「2」」の投稿 - Crieit Crieitで「(9/7~9/13)1週間でWebサービスを作るイベント - お題「2」」ボードに投稿された最近の投稿 2020-10-13T22:19:20+09:00 https://crieit.net/boards/web1week-202009/feed tag:crieit.net,2005:PublicArticle/94740cb30652b25a8431550ff759aca8 2020-10-13T22:19:20+09:00 2020-10-13T22:19:20+09:00 https://crieit.net/boards/web1week-202009/94740cb30652b25a8431550ff759aca8 神経衰弱♪大遅刻の2作品目ですにゃ。お題が「2」ってことで、2枚のカードを揃えて取る定番のカー... <p>神経衰弱♪<br /> 大遅刻の2作品目ですにゃ。お題が「2」ってことで、2枚のカードを揃えて取る定番のカードゲーム(ボードゲーム? テーブルゲーム?)を作りましたにゃ。30枚のカードで遊ぶシンプルな神経衰弱で、いちおうルール設定とかレベル別のコンピュータとか、いろいろあるんですけど、実はゲーム本体より、おまけで付いてくる「猫でも作れる神経衰弱♪」っていうただ長いだけで中身のにゃい駄文のほうがメインだったりしますにゃ。<a target="_blank" rel="nofollow noopener" href="http://bigchan.sakura.ne.jp/nekodemo3/shinkei-1.html">ここをクリックすると遊べますにゃ</a><br /> <a href="https://crieit.now.sh/upload_images/bf8f7e7d102486c4dd44ebb297d8f3675f85a81187129.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bf8f7e7d102486c4dd44ebb297d8f3675f85a81187129.png?mw=700" alt="image" /></a><br /> ※この記事の内容は、他のところ(あほげー、その他)でも発表する場合がありますにゃ。ご了承くださいにゃ。</p> びっぐにゃん tag:crieit.net,2005:PublicArticle/2-5f6701cb21b0c 2020-09-20T16:16:27+09:00 2020-09-20T16:16:27+09:00 https://crieit.net/boards/web1week-202009/2-5f6701cb21b0c 2を作るゲーム <p>web2weekになってしまったけれど供養のために投稿。</p> <h3>どんなアプリ?</h3> <p>相手よりも早く答えが2になる数式を作ることを目指す、一対一のオンライン対戦アプリです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://two-apps.vercel.app/">https://two-apps.vercel.app/</a> (AWSで動かしているので数日で消します)</p> <p><a href="https://crieit.now.sh/upload_images/f62d888eaa5459b8fde300e7a2e6f6d15f66fdfd064df.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/f62d888eaa5459b8fde300e7a2e6f6d15f66fdfd064df.png?mw=700" alt="画面イメージ" /></a></p> <h3>使っている技術</h3> <p>フロントエンドは Next.js + Typescript で実装。Vercelでホスティングしています。</p> <p>バックエンドは AWS です。APIGateway + Lambda (Go) で WebSocket 通信を実装しました。対戦相手のマッチングやゲーム情報の記録には、SQS、DynamoDBを使っています。</p> <p><a target="_blank" rel="nofollow noopener" href="https://github.com/uu64/two-apps">https://github.com/uu64/two-apps</a></p> <h3>感想</h3> <p>せっかくだから新しい技術触りたいなと思い WebSocket と Go を使ってみた。<br /> 1週間では終わらなかったけれどいろいろと学びがありました。ありがとうございました。</p> uu64 tag:crieit.net,2005:PublicArticle/2-5f63a9ff4385b 2020-09-18T03:25:03+09:00 2020-09-18T03:38:30+09:00 https://crieit.net/boards/web1week-202009/2-5f63a9ff4385b ワン、ツーの2を打ち込むボクシングゲーム <p>大変時間をオーバーしてしまいました。。<br /> 今回3度目の参加です!</p> <p>ちなみに過去2回の参加のやつです。<br /> <a href="https://crieit.net/boards/web1week-202003/ff735b2ea9df14e5ba6b89e7e7ee4f73">https://crieit.net/boards/web1week-202003/ff735b2ea9df14e5ba6b89e7e7ee4f73</a><br /> <a href="https://crieit.net/boards/web1week-202005/LIEK">https://crieit.net/boards/web1week-202005/LIEK</a></p> <p>今回のテーマは2。<br /> 2がテーマということで、最初に聞いた時は2〜〜〜〜?どうしよ〜〜〜?と思い、<br /> 2。。。<br /> 1.2...<br /> 1.2...<br /> と考えてる時に、浮かんだのがボクシングの1.2でした。<br /> はじめの一歩やらホーリーランドやら好きなせいだと思います。</p> <p>というわけで、左を制するものは世界を制するとかありますけどやっぱ左だけで倒せるのはリカルドマルチネスとか覚醒したヤンキー狩りくらいなので、1.2の右です。<br /> 2.つまり右でフィニッシュをしようというゲームを作ることに決めました。</p> <h2>ヒットザツー(今のとこPC画面専用です!)</h2> <p><strong><a target="_blank" rel="nofollow noopener" href="https://naosaga.com/hitthe2/">https://naosaga.com/hitthe2/</a></strong></p> <p>最近よく触ってるcanvasを使いました。<br /> これは開催前から最初から使おうと考えてました。<br /> この連載をめちゃくちゃ参考にしつつ、ある程度カスタマイズしました。<br /> <a target="_blank" rel="nofollow noopener" href="https://qiita.com/doxas/items/9debec7e1f0c19bc8daa">https://qiita.com/doxas/items/9debec7e1f0c19bc8daa</a></p> <p>あとはちょっとjqueryとかsass使ってます。<br /> 絵はフォトショ(無駄遣い)とノートに書いたの写真撮ってます。</p> <p>ーーーーーーーーーーーーーーーーーーー</p> <h2>ゲームの流れ</h2> <p>タイトル画面。エンターでスタートします。<br /> <a href="https://crieit.now.sh/upload_images/db70aedeb2bdf365363fe9cc062448305f63a5f8e802c.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/db70aedeb2bdf365363fe9cc062448305f63a5f8e802c.png?mw=700" alt="image" /></a></p> <p>次の画面で対戦相手が出て、もっかいエンターで試合が始まります。<br /> 最初だけなんかやたら自分と相手の絵の表示に時間かかるかも。</p> <p>トレーナーのジーちゃん(鴨川リスペクト)がなんか色々いうんでぜひ見てみてください。</p> <p><a href="https://crieit.now.sh/upload_images/d39d9acdaa09b0c617a84d9a608f4b745f63a65325070.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d39d9acdaa09b0c617a84d9a608f4b745f63a65325070.png?mw=700" alt="image" /></a></p> <p>HPぶん殴って0になったらfinishシーンになるので、画面の条件に従って右を打ち込んでください。必殺の右(いくつか種類があります!)が決まれば試合終了です。<br /> 間に合わないと逆にやられます。</p> <h2>やりたかったこと、気になること</h2> <p>・パンチの速度とかHPは変えれるので、アイテム取ったり合間のトレーニングとかで強くなる、とか。</p> <p>・敵キャラ何人か作る、とか(当初の構想は3人でした。それぞれ動きや飛んでくる攻撃変えるとか。(クラスで敵キャラオブジェクト作ってるので、気が向いたらそんなに時間かけずにやれるかも!)</p> <p>・あとED画面とかOPでじじいと主人公(名前適当すぎて忘れました)の出会いシーンとか、ゲーム説明の画面も入れたかった。<br /> EDは途中から間に合わなさそうだったのでリングにかけろの「未完」のパロディをやるとこまで考えてたけどその画面さえ未完でした。</p> <p>・フットワークを交互に踏む絵とか、殴る時の絵とか用意したんですが、canvasがどうもうまくコントロールできずいったん断念。</p> <p>色々あるんですが明らかにまだまだ時間かかりそうで、<br /> 2がテーマとはいえ1週間の2倍かけてもまだできなさそうだったので、一旦公開します!</p> <p>ーーーーーーーーーーーーーーーーーーー</p> <p>やりたいことはまだまだありますが、やっと一区切り!<br /> 全然他の方の見れてないので、ゆっくりみます!</p> ひよこ橋 tag:crieit.net,2005:PublicArticle/7d791bd98f4683b5bb7474b4624ac9a5 2020-09-15T07:02:15+09:00 2020-09-15T07:02:15+09:00 https://crieit.net/boards/web1week-202009/7d791bd98f4683b5bb7474b4624ac9a5 数字が順番に表示されますので・2の二乗の倍数・2が含まれる数のときにアホになってください。ナベ... <p>数字が順番に表示されますので</p> <p>・2の二乗の倍数<br /> ・2が含まれる数</p> <p>のときにアホになってください。<br /> ナベアツに気を取られないようにしてください。</p> <p>(スピード選択、称号などはあとで更新します。取り合えず骨組みだけアップしています。)</p> <p>【URL(SSLではありません)】<br /> <a target="_blank" rel="nofollow noopener" href="http://ryoma-do.com/web1week/sample01/">http://ryoma-do.com/web1week/sample01/</a></p> りょま@Androidアプリ制作中 進捗出してくし、丁寧に生きる tag:crieit.net,2005:PublicArticle/Close-to-2 2020-09-14T23:55:27+09:00 2020-09-15T12:36:03+09:00 https://crieit.net/boards/web1week-202009/Close-to-2 Close to 2 <p>遅刻で失礼します。<br /> 今回のお題は「2」ということで、「2」に一番近い式をあてるゲームを作りました。</p> <p>作品:<a target="_blank" rel="nofollow noopener" href="https://h-yoshikawa0724.github.io/close-to-2/">Close to 2</a><br /> <a href="https://crieit.now.sh/upload_images/3cd4cdadeab8d8ecd1e58166ea5af9825f5f7f9cdd330.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/3cd4cdadeab8d8ecd1e58166ea5af9825f5f7f9cdd330.png?mw=700" alt="close-to-2.png" /></a></p> <h2>概要</h2> <p>4択の中から、計算結果が「2」に一番近い式をあてるゲームです。<br /> 初級、中級、上級で遊べて、難易度が高いほど長い式になり、30秒で何問正答できるかな?というゲームです。</p> <p>自分で作っておいてなんですが、よほど暗算が得意じゃないと無理ゲーじゃねーかと思いました(笑)</p> <h2>余談</h2> <p>元々は「2」に関するクロスワードを作ろうとしていたのですが、「2」縛りで問題を考えるのがしんどいの極みだったので変えました(しかも土曜...)<br /> その時点ですでに投稿されていた方(特に、きらぷかさんとDE-TEIUさん)の作品を見て、シンプルなゲームでも十分面白いものが作れるんだなぁと思い、今回の作品に至りました。<br /> (他の方の作品を参考にさせていただきましたが、丸パクリレベルになってしまわないよう気を付けたつもりです)</p> <hr /> <p>前回参加時にはできなかった、TwitterシェアボタンとOGP設定もやっつけではありますがやりました。<br /> よければシェアしてやってください。<br /> <del>(すみません、投稿後に、携帯でやるとシェアボタンが反応しないというバグを早速見つけてしまいました…)</del></p> <p>バタバタとしましたが、とりあえず形にできてよかったです。<br /> ありがとうございました!</p> <p>そのうち、また別にレポート記事を書こうと思いますー。</p> よし tag:crieit.net,2005:PublicArticle/ec786645d9b442b936ad73e36dd9df19 2020-09-14T13:21:28+09:00 2020-09-14T13:21:28+09:00 https://crieit.net/boards/web1week-202009/ec786645d9b442b936ad73e36dd9df19 2つのボタンであたたたたたたたたた!!! <h1>打ち込め!あたたたたた!!</h1> <p>Firebase+Vueで初めてプロジェクト作成からデプロイまでやってみました</p> <p><a target="_blank" rel="nofollow noopener" href="https://atatata-test-app.web.app">https://atatata-test-app.web.app</a></p> <p>よかったら遊んでください!</p> <h2>とりあえずやってみた</h2> <p>・Vue3でプロジェクトを作ってみた<br /> ・値の受け渡しとか、表示切り替えしてみた<br /> ・Firebaseにデプロイしてみた!</p> <p>ほんとに何もインストールしてなくて、node.jsインストールするところから始めたので、何も作れないかと思いましたが、なんとか作り切りました!</p> <h2>できなかったこと</h2> <p>・Twitterに投稿するボタンがつけれなかった<br /> ・ランキングとかDB系の操作まで辿りつかなかった<br /> ・終了後、最初から始めるのがつけれなかった(ので、リロード)</p> <p>とにかく、時間がなかったので、適当です!</p> <h2>さいごに</h2> <p>合間時間での作業ですが、次回も何か作れたらいいな♪</p> あた、あいた、たた(本厄を吹き飛ばせ!) tag:crieit.net,2005:PublicArticle/wip-Salmon-run 2020-09-14T04:46:55+09:00 2020-09-14T04:46:55+09:00 https://crieit.net/boards/web1week-202009/wip-Salmon-run [wip] Salmon-run 本当にやりたかったことを二度(ふたたび)始めるアプリ <p><a target="_blank" rel="nofollow noopener" href="http://salmon-run.net/">http://salmon-run.net/</a></p> <p>「産まれた川に戻る」という夢を持つシャケの切り身と一緒に、本当にやりたかったことをもう一度始めるコーチアプリです。</p> <h2>これまでの経緯</h2> <ul> <li>コーチアプリ作りたい気持ちがあった</li> <li>ちょうど今週木曜から夏休みだな??? と夢が広がる</li> <li>amplify + typescript + react(hooks) でなんか作りたい気持ちがあってキャッチアップ</li> <li>夢が広がりすぎて木曜日くらいまでコンセプト設計やる</li> <li>金曜に要約実装が始まりこれ1週間で終わらないやつだな? とこの辺りで気づく</li> <li>一旦デザイン諦めて動くモックアップ作る事に専念</li> <li>実装 & 実装</li> <li>シャケの切り身の日記をコンテンツ作るのに実装と同じくらい時間がかかる事に気付いてとりあえず最初7日分だけ動くものを作る。</li> <li>そのチュートリアルも作る途中で力尽きる</li> <li>俺たちの戦いはこれからだ</li> </ul> KONDO-Yuuki tag:crieit.net,2005:PublicArticle/2-5f5e3d7d003ae 2020-09-14T00:40:45+09:00 2020-09-14T00:40:45+09:00 https://crieit.net/boards/web1week-202009/2-5f5e3d7d003ae 2番じゃダメですか? <p>web1weekはお題駆動のイベントなのでね。<br /> ジャンル被りは問題無いのですよ。<br /> ただ・・・</p> <p><a href="https://crieit.net/boards/web1week-202009/2-NoCode">クイズ2位じゃダメなんですか!?(NoCodeアプリ)</a></p> <p><strong>ネタ被りはキツい!!!</strong></p> <h1>作ったもの</h1> <p><a href="https://crieit.now.sh/upload_images/78014ab7bef1792293bd920f15606dce5f5e3a97b8f75.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/78014ab7bef1792293bd920f15606dce5f5e3a97b8f75.png?mw=700" alt="2位じゃダメなんですか?" /></a><br /> <a target="_blank" rel="nofollow noopener" href="https://second-place.vercel.app/">2位じゃダメなんですか?</a></p> <p>ランキングから2位を当てるクイズサイトです。<br /> クイズの登録機能もあります。<br /> まだ問題数が少ないので何か登録して貰えると嬉しいです!</p> <h1>使った技術</h1> <ul> <li>Nuxt.js</li> <li>TypeScript</li> <li>Tailwind CSS</li> <li>Firestore</li> <li>vercel</li> </ul> <p>リポジトリはpublicにしています。<br /> <a target="_blank" rel="nofollow noopener" href="https://github.com/kin-mi/second-place">https://github.com/kin-mi/second-place</a><br /> vercelを使ってみたくて作りました。</p> <h1>所感</h1> <p>Netlifyの上位互換っぷりが凄い。<br /> ホスティングしか使ってないけど、簡単・早い・直感的。<br /> まぁNetlifyも簡単で直感的なのだけれど、とにかく早い(デプロイ、表示速度)<br /> どう使い分ければ良いのだろう・・・。</p> <h1>おわり</h1> <p>人生で初めてNoCodeに敗北を喫しました。<br /> コード書いて遊んでる場合じゃなかった。<br /> 次はNoCodeチャレンジやってみたいです。</p> きんみ tag:crieit.net,2005:PublicArticle/30cb7f2f82f524c1fa54ce53cd3ecc2f 2020-09-13T23:59:09+09:00 2020-09-14T00:02:12+09:00 https://crieit.net/boards/web1week-202009/30cb7f2f82f524c1fa54ce53cd3ecc2f 天使と悪魔で対立する2つを表現しました! <h1>天使と悪魔ジェネレーター!</h1> <p><a target="_blank" rel="nofollow noopener" href="https://angels-and-demons.vercel.app/">https://angels-and-demons.vercel.app/</a></p> <p>できました!</p> りんご🍎@エンジニア/個人開発がんばりんご tag:crieit.net,2005:PublicArticle/e72e612d154ba9a56f4ae40e0cd0ecc9 2020-09-13T23:56:26+09:00 2020-09-14T00:26:48+09:00 https://crieit.net/boards/web1week-202009/e72e612d154ba9a56f4ae40e0cd0ecc9 鏡文字ジェネレーター <p>初めまして、<a target="_blank" rel="nofollow noopener" href="https://twitter.com/pro_nackey">なっきー</a>と申します。<br /> 楽しそうだったので、イベントに参加しました!<br /> ぎりぎり滑り込みで投稿してますw</p> <h2>2といえば、、、</h2> <p>いろいろ考えました。作り始めては、ほかの方のアプリと似ていたので変えたり、面白くないと気づいて辞めたりと、そもそも開発するまでに五日過ぎてましたw</p> <p>最終的にこじつけみたいになってしまいましたが、こういう流れです。</p> <p>「2」 → 「対、ペア」 → 「鏡」 → 「鏡文字」、、、<strong>それだっ!!</strong></p> <p>それだっ!!</p> <p><a href="https://crieit.now.sh/upload_images/b8ad97659fd368dcb3c65541cbc3bfbf5f5e251d268a5.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b8ad97659fd368dcb3c65541cbc3bfbf5f5e251d268a5.png?mw=700" alt="それだっ!!" /></a></p> <h2>作ったもの</h2> <p>というわけで、つくったものがこちらです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://naokifukuyori.github.io/mirror_generator/">https://naokifukuyori.github.io/mirror_generator/</a></p> <p><a href="https://crieit.now.sh/upload_images/71fb9be8ab91eaceff5c68cc339b2b965f5e38fa52e7d.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/71fb9be8ab91eaceff5c68cc339b2b965f5e38fa52e7d.jpg?mw=700" alt="鏡文字ジェネレーターの画像" /></a></p> <p>このアプリは、「入力した文から左右や上下反転した文の画像を作れる」、というアプリです。</p> <p>こんな感じの画像が簡単に作れます!<br /> <a href="https://crieit.now.sh/upload_images/4be22bceb3dcf1317cf03bf5565c37d35f5e2f9ca3f1d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/4be22bceb3dcf1317cf03bf5565c37d35f5e2f9ca3f1d.png?mw=700" alt="image" /></a></p> <h2>挑戦したこと</h2> <ul> <li><p>素のJavaScriptをもっと極めたい!!と思ったので、フレームワークを使わずに実装したこと(結局、そんなに書かなかったけども)</p></li> <li><p>htmlを画像化するために、JavaScriptライブラリ「html2canvas」を初めてしたこと(苦戦したところもあるけど、基本的には使いやすくて良きだった)</p></li> </ul> <h2>使用した技術</h2> <ul> <li>html</li> <li>css</li> <li>JavaScript</li> <li>html2canvas</li> <li>githubPages</li> </ul> <h2>改善点</h2> <p>まだまだ改善したいところが山積みです~、ぴえん。</p> <ul> <li>改行, 半角空白に対応していない</li> <li>レスポンシブデザインになってない</li> <li>ファビコンを設定してない</li> <li>webフォントファイルの軽量化</li> <li>コードをリファクタリングをしたい</li> </ul> <p>やる気を失ってなかったら、改善していきたいと思います。ギブミーヤルキー!</p> <p>あ、あと今回はコードをgithubで公開しているので(<a target="_blank" rel="nofollow noopener" href="https://github.com/NaokiFukuyori/mirror_generator">こちら</a>)、もしよければアドバイスなどがありましたら、ぜひお願いします!</p> <h2>まとめ</h2> <p>色々書きましたが、なんにしてもとりあえずデプロイまで持っていけたことがうれしいです!!!</p> <p>ぜひ、このアプリを使って色々な画像を作って遊んでみてください!!<br /> 画像を投稿するときに「#鏡文字ジェネレーター」のハッシュタグをつけていただけたら、僕がめっちゃ喜んでいいね100回押しますので、よろしくお願いします。</p> <p>では、ありがとうございました!<br /> <a href="https://crieit.now.sh/upload_images/87e3e270d354e7ae682aebee2ab2e0275f5e30f4e56ca.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/87e3e270d354e7ae682aebee2ab2e0275f5e30f4e56ca.png?mw=700" alt="image" /></a></p> なっきー@プログラミング楽しい tag:crieit.net,2005:PublicArticle/hook2hook 2020-09-13T23:45:43+09:00 2020-09-14T12:47:10+09:00 https://crieit.net/boards/web1week-202009/hook2hook 上の句と下の句のマッチングサイト「hook2hook(ホック・トゥー・ホック)」を作りました。 <p><a href="https://crieit.now.sh/upload_images/b40fb4568e5dd565e33d6fcd568da5f65f5e3023bae69.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/b40fb4568e5dd565e33d6fcd568da5f65f5e3023bae69.png?mw=700" alt="image" /></a></p> <p>「hook2hook(ホック・トゥー・ホック)」は下の句を読むと誰かが上の句を作ってくれる「短歌のマッチングサイト」です。</p> <p><a target="_blank" rel="nofollow noopener" href="https://hook2hook.emomie.com/">https://hook2hook.emomie.com/</a></p> <p>こまけぇことは後だ!</p> <hr /> <p>ちゃんと書きます</p> <h2>コンセプト</h2> <p>上の句と下の句をマッチングさせるサイトです。短歌という文化に疎かったのですが、付け句という提示されたお題に対して短歌を完成させる、という遊びを目にして「めっちゃエモい……」となってしまったので作りました。<br /> お題に対する「2」は言わずもがな2つの句をマッチングさせることでクリアしました。</p> <h2>もう少し詳しく</h2> <p>めっちゃエモい短歌があって、なんだこれ……とみてみたら「下の句が提供され、それにいろんな人が上の句をつけて遊んでいる」という現場に遭遇したことがあるか? 私はあったので作りました。こいつを見てくれ。エッモ……</p> <p>お前が世界を滅ぼしてくれ短歌<br /> <a target="_blank" rel="nofollow noopener" href="https://togetter.com/li/1588443">https://togetter.com/li/1588443</a></p> <p>ちょっと調べたんですが、既存の短歌サイトは縦書きだったりフォントが和風だったり、本当に純粋に短歌を楽しむ人にすごくフォーカスしていて、1週間で作るカジュアルサービスなんか足元にも及ばないな……といったんは考えたのですが、自分が一緒に楽しみたいと思っているユーザは、自分の世界感を確立し、完成しているタイプのユーザではないのかもしれない、とも思い至りました。<br /> 下の句だけで世界観を共有したり、ファンフィクの一形態としての短歌に必要なのは、縦書きや和風フォントではなく(あるに越したこととはないと思う)pixivやポイピクと同様のUGC化、シェア、評価や数字の可視化では……幸いなことにそこのフォーカスしたサービスはまだなかったため、着手とあいなりました。そのためhook2hookではシェア、リテンションに力を入れたサービスになっています(評価はこのあと機能で付けます……)</p> <h2>使った技術</h2> <ul> <li>php7系</li> <li>ロリポップレンタルサーバ</li> <li>mysql</li> <li>cakephp3系</li> </ul> <p>実家のような安心感。とにかく短期間でのリリースを目指すなら慣れた技術でやるのが絶対必要ですが、OGP画像の動的生成は別の作ろうとしていたサービスからソースを引っ張ってこれたので、普段から無駄に素振りしてるとこういう時に飛距離が伸びるな……と思いました。<br /> だからって締め切りまで3時間切ったら「どうしてもOGP画像がほしいんじゃ!」などと強行突破しないでいったんちゃんと工数確認したほうがいいと思う。</p> <h2>できること</h2> <h3>上の句を作ってシェアする</h3> <p>誰かが投稿した「下の句」に自分で考えた「上の句」をつけてツイートすることができます。</p> <h3>下の句を作ってシェアする</h3> <p>下の句を投稿すると誰かが上の句を考えてくれます</p> <h2>このあとできるようになること(多分)</h2> <ul> <li>ログインして「hook2hookにも投稿」を行うと、「hook2hookでマッチングした短歌」に表示されます。</li> <li>上の句がログインして投稿されると、マッチングして完成した短歌が表示されます <ul> <li>マッチングした短歌に「エモい」を送れます</li> <li>マッチングした短歌の数が表示されます</li> <li>タグを登録することができます</li> <li>下の句やマッチングした短歌をタグで検索することができます</li> </ul></li> </ul> <h2>所感</h2> <p>楽しかったです!</p> さちえ🍛開発垢 tag:crieit.net,2005:PublicArticle/2-5f5e2cf04388d 2020-09-13T23:30:08+09:00 2020-09-13T23:30:56+09:00 https://crieit.net/boards/web1week-202009/2-5f5e2cf04388d 息子と2人で遊ぶゲーム <p>めちゃくちゃこじつけですが,息子と「2」人で遊ぶゲームです。<br /> <a target="_blank" rel="nofollow noopener" href="https://web1week-kohe.netlify.app/">https://web1week-kohe.netlify.app/</a><br /> <a href="https://crieit.now.sh/upload_images/bfcb57539fead8dad22eaaa88ed230625f5e2c064e494.PNG" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/bfcb57539fead8dad22eaaa88ed230625f5e2c064e494.PNG?mw=700" alt="image" /></a><br /> カウントを交互に減らしていって0にした人が負けです。</p> <p>フレームワーク使わずにPureJSを使うという個人的なテーマもあり,HTML + CSS + JavaScript というシンプルな作りにしました。</p> <p>1週間ってあっという間ですね。<br /> JSよりもHTMLとCSSに苦戦しました。。。</p> こへ@エンジニア tag:crieit.net,2005:PublicArticle/22 2020-09-13T23:07:29+09:00 2020-09-13T23:11:52+09:00 https://crieit.net/boards/web1week-202009/22 にゃんにゃん時計(22時計) <h3>すごくどうでも良い情報</h3> <ul> <li>良い感じのアイデアが全く思い付かないまま何やかんやで木曜日までが終わる。</li> <li>金曜日に知人に助けを求め良い感じのアイデアをもらう。秒で採用する。</li> <li>「規模感的に土日あればいけるっしょ!」→ 何もしないまま土曜日がほぼ終わる。</li> <li>土曜日の夜中にようやく着手する。</li> <li>何とか間に合ったっぽい。 ← いまここ</li> </ul> <h3>アイデアの概要</h3> <ul> <li>2 → にゃん。</li> <li>22 → にゃんにゃん。</li> <li>バックエンド中心でいきたい。→ 特にGolang書いてみたい</li> <li>フロントエンドは控えめに。→ 時計表示ぐらいで良いです</li> </ul> <h3>にゃんにゃん時計(<a target="_blank" rel="nofollow noopener" href="http://tak-dev.tk/22clock.html">http://tak-dev.tk/22clock.html</a>)</h3> <ul> <li>背景にランダムな猫の画像(可愛い)が表示されるだけの時計アプリ。</li> <li>20秒ごとに猫の画像(可愛い)が更新される。</li> <li>クライアントからのインタラクション機能はない。</li> </ul> <p><a href="https://crieit.now.sh/upload_images/dac38a54804c180842c8e9fc85e4dba05f5e28a266c3d.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/dac38a54804c180842c8e9fc85e4dba05f5e28a266c3d.png?mw=700" alt="可愛い猫の画像" /></a></p> <h3>構成</h3> <ul> <li>バックエンド <ul> <li>基盤:さくらVPS</li> <li>OS:CentOS8</li> <li>Webサーバ:nginx</li> <li>言語:Golang</li> <li>FW:未使用</li> <li>API詳細:Yahoo画像検索結果をスクレイピングする → JPGファイルのURLを30個抽出する → それをJSONで返す <ul> <li>検索キーワード:「猫 可愛い」</li> </ul></li> <li>Google画像検索じゃないの?:Googleはスクレイピングを禁止しているようです</li> </ul></li> <li>フロントエンド <ul> <li>言語:HTML / CSS / JavaScript</li> <li>FW:未使用</li> <li>動作詳細:前述のAPIを呼び出してJSONを取得し、JPGファイルのURLをランダムに1つ選択し、背景画像に設定する(ページ表示時&20秒ごと)</li> </ul></li> </ul> <h3>最後に</h3> <p>楽しかったです。<br /> 良い企画をありがとうございました。</p> Tak tag:crieit.net,2005:PublicArticle/Google-Map-Glide 2020-09-13T22:37:23+09:00 2020-09-13T22:43:00+09:00 https://crieit.net/boards/web1week-202009/Google-Map-Glide Google Mapでまとめられていたデータを使って「東京固めプリンマップ」のサイトをGlideで作ったよ <p>こんにちは! <a target="_blank" rel="nofollow noopener" href="https://twitter.com/nabettu">@nabettu</a>です。</p> <p>今回のWeb1WeekではNoCodeでサイトを作ってみました!それが表題の<a target="_blank" rel="nofollow noopener" href="https://hard-pudding-map.glideapp.io/">「東京固めプリンマップ」</a>です。</p> <p><a href="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e19143a8b4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e19143a8b4.png?mw=700" alt="image.png" /></a></p> <p>こちらは <a target="_blank" rel="nofollow noopener" href="https://twitter.com/asobikikaku/status/1207610114070331397">へんてこグルメガイド(矢崎/ヤザキング)@asobikikaku さんの以下のツイート</a>がありまして、</p> <p><a href="https://crieit.now.sh/upload_images/79e6bf9260c43abe509b40b1544ddb435f5e19197c0fa.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/79e6bf9260c43abe509b40b1544ddb435f5e19197c0fa.png?mw=700" alt="purin.png" /></a></p> <p>こちらのマップの利用許可を頂いてデータを使わせて頂き(ありがたや〜🙏)、Glideで文字列検索などをできるようにしたものになります。</p> <p>Glideの無料枠なので地図データがたまに出なかったりするんですが、「品川区」などで検索するとその住所やキーワードにヒットする固めプリンが食べれるお店が出てきます。</p> <h2>サイトの作りかた Step1 マイマップ→Spreadsheet</h2> <p>まず元のデータですが、Google Mapのマイマップ機能を使って作られています。</p> <p>これをGlideで使えるようにSpreadsheetに直したいと思います。</p> <p>まずはMapを使えるデータにエクスポートするのですが、形式がKMLというものに限られています。</p> <p><a href="https://crieit.now.sh/upload_images/9baece2dbe2ef09f5c2a2b859667736c5f5e1b3b1f07e.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/9baece2dbe2ef09f5c2a2b859667736c5f5e1b3b1f07e.png?mw=700" alt="名称未設定.png" /></a></p> <p>そしてダウンロードしたKMLファイルを次のサイトを使ってCSVに変換します。</p> <p><a target="_blank" rel="nofollow noopener" href="https://tool.stabucky.com/gmap_kml2csv.htm">Googleマップ KML/CSV相互変換</a> というサイトを使います。</p> <p>そしてCSVをSpreadsheetで読み込めば、一旦元データの変換は完了です。</p> <h2>サイトの作りかた Step2 データ成型(緯度経度→住所)</h2> <p>さぁ出来上がったCSVですが、次のような形式になっています。</p> <p><a href="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1bec0460b.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1bec0460b.png?mw=700" alt="image.png" /></a></p> <ol> <li>index</li> <li>名前</li> <li>説明文</li> <li>緯度</li> <li>経度</li> </ol> <p>Glide上で正しく場所を表示するには住所が必要です。ということで緯度経度から住所を作っていきます。</p> <p>使わせて頂いたのはこちらのサービス<br /> <a target="_blank" rel="nofollow noopener" href="http://geoapi.heartrails.com/">郵便番号/住所/緯度経度データ変換サービス</a></p> <p>こちらのAPIを使って、住所を緯度経度から割り出していきます。</p> <p>まずはAPI用のURLを作ります。</p> <pre><code>="http://geoapi.heartrails.com/api/xml?method=searchByGeoLocation&x=" & G2 & "&y=" & H2 </code></pre> <p>という感じで設定すればxmlが取得できるようになりますので、このURLで一つカラムを作成します。(G2,H2とかはカラムデータの取得)</p> <p>するとこんな値が入るようになります。</p> <pre><code>[http://geoapi.heartrails.com/api/xml?method=searchByGeoLocation&x=139.5955947&y=35.7092688](http://geoapi.heartrails.com/api/xml?method=searchByGeoLocation&x=139.5955947&y=35.7092688) </code></pre> <p>そのXMLのデータをインポートするための命令がSpreadsheetにあるので、それを利用してカラムに入れます。</p> <pre><code>=IMPORTXML(J3,"/") </code></pre> <p>すると</p> <pre><code>" 港区 みなとく 西新橋一丁目 にししんばし1ちょうめ 139.753077 35.668116 89.19496353533386 東京都 1050003 港区 みなとく 西新橋二丁目 にししんばし2ちょうめ 139.751867 35.667002 93.81633499427977 東京都 1050003 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー30階 とらのもんとらのもんひるずびじねすたわー30かい 139.750062 35.667986 191.29710881449762 東京都 1056430 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー35階 とらのもんとらのもんひるずびじねすたわー35かい 139.750062 35.667986 191.29710881449762 東京都 1056435 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー3階 とらのもんとらのもんひるずびじねすたわー3かい 139.750062 35.667986 191.29710881449762 東京都 1056403 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー34階 とらのもんとらのもんひるずびじねすたわー34かい 139.750062 35.667986 191.29710881449762 東京都 1056434 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー4階 とらのもんとらのもんひるずびじねすたわー4かい 139.750062 35.667986 191.29710881449762 東京都 1056404 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー5階 とらのもんとらのもんひるずびじねすたわー5かい 139.750062 35.667986 191.29710881449762 東京都 1056405 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー6階 とらのもんとらのもんひるずびじねすたわー6かい 139.750062 35.667986 191.29710881449762 東京都 1056406 港区 みなとく 虎ノ門虎ノ門ヒルズビジネスタワー33階 とらのもんとらのもんひるずびじねすたわー33かい 139.750062 35.667986 191.29710881449762 東京都 1056433 " </code></pre> <p>というデータがカラムに入ってきます。このままだと使いづらいので、</p> <pre><code>=SPLIT(K3," ",true,true) </code></pre> <p>でバラしていくと別々なカラムにスペースで区切られた内容が入るので、</p> <pre><code>杉並区 すぎなみく 西荻北四丁目 にしおぎきた4ちょうめ 139.596547 35.708441 126.1002605 東京都 1670042 杉並区 すぎなみく 西荻北五丁目 にしおぎきた5ちょうめ 139.599946 35.709907 399.6782071 東京都 1670042 杉並区 すぎなみく 西荻北三丁目 にしおぎきた3ちょうめ 139.598557 35.706513 407.1976297 東京都 1670042 杉並区 すぎなみく 善福寺一丁目 ぜんぷくじ1ちょうめ 139.598386 35.712448 434.6331725 東京都 1670041 武蔵野市 むさしのし 吉祥寺東町四丁目 きちじょうじひがしちょう4ちょうめ 139.592693 35.705914 456.3604124 東京都 1800002 杉並区 すぎなみく 善福寺二丁目 ぜんぷくじ2ちょうめ 139.591476 35.711792 466.3581414 東京都 1670041 武蔵野市 むさしのし 吉祥寺東町三丁目 きちじょうじひがしちょう3ちょうめ 139.589047 35.706186 684.1543641 東京都 1800002 杉並区 すぎなみく 西荻北二丁目 にしおぎきた2ちょうめ 139.603286 35.706947 741.7175361 東京都 1670042 杉並区 すぎなみく 上荻四丁目 かみおぎ4ちょうめ 139.604281 35.710003 789.3953431 東京都 1670043 杉並区 すぎなみく 松庵三丁目 しょうあん3ちょうめ 139.596458 35.701977 815.462034 東京都 1670054 </code></pre> <p>それの1,3個目を結合して</p> <pre><code>杉並区西荻北四丁目 </code></pre> <p>というカラムが出来ました。これで一応はお店の住所になりますが、丁目までしか入っていないので、正確な場所を出すために、これにお店の名前を追加したものを住所として登録しておくと、無事に地図で場所を表示することができるようになりました。(表示する住所とマップで利用する住所は別にしておきます。)</p> <h2>サイトの作りかた Step3 サイトの表示設定</h2> <p>あとは出来上がったデータを使って、Glideでどのように表示していくかを設定します。</p> <p>今回はマップの他にリストと、</p> <p><a href="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1f433c322.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1f433c322.png?mw=700" alt="image.png" /></a></p> <p>その詳細画面を作ってみました。(instagramの一部の写真の利用許可も頂いたので、こちらは手動でURLを取得しました)</p> <p><a href="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1f51806eb.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1f51806eb.png?mw=700" alt="image.png" /></a></p> <p>下にタブを増やして、謝辞と元ツイートへのリンクも設定しています。</p> <p>最後にサイトの名前やアイコンを設定して、公開すれば出来上がりです。</p> <p><a href="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1f9e6921f.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6a7d103e403304f11bccfad32a20bc325f5e1f9e6921f.png?mw=700" alt="image.png" /></a></p> <h2>まとめ</h2> <p>こういうまとまったデータをサイト化するのにGlideは本当に楽ですね。</p> <p>ホントはプリン店にお気に入りできる機能を付けたかったのですが、Glideの有料機能が必要(約月$49)だったので断念しました。</p> <p>むしゃくしゃしたときには、このマップを見て固いプリンを食べに行きましょう。</p> <p><a target="_blank" rel="nofollow noopener" href="https://hard-pudding-map.glideapp.io/">「東京固めプリンマップ」</a></p> <p>あ、お題の「2」ですが、今回は「GoogleMap2Site」な事例ということでご勘弁をw</p> <p>以上です!今回もWeb1week参加できてよかったです!</p> nabettu tag:crieit.net,2005:PublicArticle/874fb61c4410747b783d7bc4dae4047c 2020-09-13T22:36:00+09:00 2020-09-14T10:02:55+09:00 https://crieit.net/boards/web1week-202009/874fb61c4410747b783d7bc4dae4047c 打線組んだwwメーカーを作った <h1>web1weekで「打線組んだwwメーカー」をつくりました!</h1> <p><a target="_blank" rel="nofollow noopener" href="https://order-maker.woodsatweb.com/">打線組んだwwメーカー</a> を作りました!</p> <p>投稿にあたり他の方と完全にネタ被りをしてしまったのですが、使っている技術周りは違ったので臆せず投稿しようと思います。笑</p> <p>(OGPも含めきれいに実装されていた方の打線メーカーはこちら)<br /> <a href="https://crieit.net/boards/web1week-202009/1dd1b99ee139f324c20408ce24eecec0">https://crieit.net/boards/web1week-202009/1dd1b99ee139f324c20408ce24eecec0</a></p> <h2>作った経緯</h2> <p>今回のテーマが「2」ということで、現代野球は2番打者に強打者を置くか、いぶし銀な打者を置くか、采配が分かれることに注目し、なんJでおなじみの「打線組んだww」を簡単に作れるWebアプリを作りました。</p> <p><a href="https://crieit.now.sh/upload_images/66db9b7e9072fb4189b2980cb9c46c425f5e1301d7a04.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/66db9b7e9072fb4189b2980cb9c46c425f5e1301d7a04.png?mw=700" alt="image.png" /></a></p> <h2>使った技術</h2> <ul> <li>Next.js</li> <li>TypeScript</li> <li>Vercel</li> <li>Cloud Functions</li> <li>Cloud SQL (MySQL)</li> </ul> <p>今回はNext.js v9.5で正式に導入されたStatic Generation(段階的な静的再生成)が使いたく、試してみました!<br /> ビルドされたページは静的ページとして配信されるのですが、投稿されると新しい静的ページを実行時に登録することができます。</p> <p>また、今回はFire StoreのようなNoSQLではなくRDBSが使いたかったので、Cloud SQLとCloud Functionsを繋げてサーバレスバックエンドの構築を目指しました。</p> <h2>学び</h2> <ul> <li>Static Generation<br /> Next.jsのStatic GenerationはgetStaticPathsとgetStaticPropsを対象のページに記述すると、静的ページとしてビルドされるだけでなく、getStaticPathsのfallbackパラメータをtrueにするだけで実現できました!<br /> 参考) <a target="_blank" rel="nofollow noopener" href="https://qiita.com/thesugar/items/73a169c4d23e4bd91554#安定版としての段階的な静的再生成">https://qiita.com/thesugar/items/73a169c4d23e4bd91554#安定版としての段階的な静的再生成</a></li> </ul> <pre><code class="typescript">export const getStaticPaths: GetStaticPaths = async () => { const response = await axios.get('<APIのURL>') const data = await response.data const paths = data.map((data) => `/post/${data.postId}`) return { paths, fallback: true } } export const getStaticProps: GetStaticProps = async ({ params }) => { const id = params.id const response = await axios.get('<API の URL>', { params: { postId: id }, }) const data = await response.data return { props: { data, }, revalidate: 1, } } </code></pre> <ul> <li>Cloud SQLのマシンスペック<br /> 特にマシンスペックを指定せずMySQLを立てていたのですが、立てて2日間で400円以上かかっていることが判明し、一番低いスペックまで落としました。<br /> Cloud SQLはインスタンスが立ち上がっている間従量課金になるので、初期段階で自分の開発規模に見合うスペックに設定することが大事ですね。<br />  クラウド破産にならなくてよかったw(もう1年分の無料期間は過ぎていたので...)</li> </ul> <h2>やりたかったけどできなかったこと</h2> <ul> <li>OGP画像の生成<br /> Vercel Functionsを使えば実現できるらしいのですが、画像のデザインや実装が時間切れで間に合わず...</li> <li>コメント機能<br /> 投稿された打順について「これは首位打者狙える」「上位打線屈強なのにこの下位打線は草」「これは万年Bクラス采配ですわ」なんて書き込めるようにしたかったのですが時間切れ</li> <li>打順の背景色<br /> パワプロ準拠で投手:ピンク、捕手:水色、内野手:黄色、外野手:緑にCSSの振り分けをしたかったのですがこれも時間切れ</li> <li>画像出力とテキスト出力<br /> テキスト出力できればそのままなんJに貼れて良いかもなーと思った次第でしたがこれも(以下略)</li> <li>入力フォームの順序入れ替え<br /> 1番打者に入力したけど6番くらいの方があうなーとなったときに、入力値入れ替えができたら良いかなと思ったものの実装する時間が(以下略)</li> </ul> <h2>まとめ</h2> <p>まさかの同イベントで同じネタの方がいらっしゃるとはwなアプリになってしまいました笑</p> <p>もっと足したい機能があるので、今回のイベントではプロトタイピングと位置付けて、サービスの拡大ができたら面白いかなーと思います。</p> <p><a target="_blank" rel="nofollow noopener" href="https://order-maker.woodsatweb.com/">打線組んだwwメーカー</a> はこちら</p> gengineer18