tag:crieit.net,2005:https://crieit.net/users/matsubarase/feed Matsubarase.com公式の投稿 - Crieit CrieitでユーザーMatsubarase.com公式による最近の投稿 2019-10-13T23:43:10+09:00 https://crieit.net/users/matsubarase/feed tag:crieit.net,2005:PublicArticle/15477 2019-10-13T23:43:10+09:00 2019-10-13T23:43:10+09:00 https://crieit.net/posts/960b0aeb50068c42582d201c7dd14467 熨斗(のし)の王様を作ったときに気をつけたこと <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <ul> <li><a target="_blank" rel="nofollow noopener" href="https://noshi-king.matsubarase.com">のし王</a>というWebサービスを作った。<br /> <a href="https://crieit.now.sh/upload_images/fffb317da90f57ce80e2986ead5be3bd5da337e03f206.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/fffb317da90f57ce80e2986ead5be3bd5da337e03f206.png?mw=700" alt="のし王サムネイル" /></a></li> <li>のし作成サービスが既に存在する中で、下記に気をつけたというお話。 <ul> <li>サービス作成のきっかけになった不満点・ニーズをもれなく仕様に落とし込む</li> <li>仕様策定時は技術的な楽さに甘えず、ユーザー体験を優先する</li> <li>上記を実現するため必要最低限の技術を選定する</li> </ul></li> </ul> <h1 id="不満点の解消、ニーズを仕様に落とし込む"><a href="#%E4%B8%8D%E6%BA%80%E7%82%B9%E3%81%AE%E8%A7%A3%E6%B6%88%E3%80%81%E3%83%8B%E3%83%BC%E3%82%BA%E3%82%92%E4%BB%95%E6%A7%98%E3%81%AB%E8%90%BD%E3%81%A8%E3%81%97%E8%BE%BC%E3%82%80">不満点の解消、ニーズを仕様に落とし込む</a></h1> <ul> <li>ちょっとした贈り物に「のし」をつけたかった。</li> <li>既存サービスは、以下の点で不満が残った。 <ul> <li>「のし紙」のテンプレート(背景画像)だけが提供されており、Wordなどに貼り付けた後、自分で文字を描かないとダメだった</li> <li>Web上で任意の文字まで入れられるサービスでは、最後になるまで仕上がり具合がが分からなかった</li> <li>最終画像にサービス名のロゴが入ってしまい、贈り物には不向きだった</li> <li>フォントがしょぼかった</li> <li>水引き(背景画像)や表書き(御礼などの上部の文字)をどう選んでよいか分からなかった</li> </ul></li> <li>不満点の解消をもれなく仕様に落とし込んだ。 <ul> <li>背景画像と任意の文字を組み合わせてPDFで出力できるようにする</li> <li>最終出力結果には広告を入れない</li> <li>有料でもカッコいいフォントを採用する</li> <li>用途に応じて自動で「水引き」と「表書き」が選択できるようにする</li> </ul></li> <li>マッスルの神様 = マ神 → 熨斗の王様 = のし王</li> </ul> <h1 id="ユーザー体験を最優先する"><a href="#%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E4%BD%93%E9%A8%93%E3%82%92%E6%9C%80%E5%84%AA%E5%85%88%E3%81%99%E3%82%8B">ユーザー体験を最優先する</a></h1> <div class="table-responsive"><table> <thead> <tr> <th align="left"></th> <th align="left">技術的な楽さを優先</th> <th align="left">ユーザー体験を優先</th> </tr> </thead> <tbody> <tr> <td align="left">文字描画</td> <td align="left">ユーザー自身がWordなどで描画</td> <td align="left">Webサービス上で描画</td> </tr> <tr> <td align="left">仕上がり確認</td> <td align="left">プレビュー不可 or プレビューボタンクリックで表示</td> <td align="left">リアルタイムプレビュー表示</td> </tr> <tr> <td align="left">水引き、表書き</td> <td align="left">ユーザーの選択したものを表示</td> <td align="left">用途を選ぶと最適な水引き、表書きを自動で選択</td> </tr> <tr> <td align="left">描画フォント</td> <td align="left">無料の範囲で選択可能</td> <td align="left">有料で質の良いフォントが選択可能</td> </tr> <tr> <td align="left">ユーザーが泥酔状態</td> <td align="left">酔いが冷めてから使う</td> <td align="left">泥酔状態でも直感で使える</td> </tr> </tbody> </table></div> <h1 id="仕様の実現方法を考える"><a href="#%E4%BB%95%E6%A7%98%E3%81%AE%E5%AE%9F%E7%8F%BE%E6%96%B9%E6%B3%95%E3%82%92%E8%80%83%E3%81%88%E3%82%8B">仕様の実現方法を考える</a></h1> <ul> <li>使用した技術 <ul> <li>Webサービス上で文字描画しPDF出力 <ul> <li>水引きの種類や表書きなどの情報をブラウザ上で選択させる</li> <li>サーバーでPDFを作成してダウンロードさせる(Golang/Google App Engine)</li> </ul></li> <li>リアルタイムプレビュー表示 <ul> <li>サムネイル描画サーバー(Golang/Google App Engine)を準備</li> <li>水引きの種類や表書きなどの情報が変更されたらAjax(jQuery)でサーバーからサムネイル画像を取得し、ブラウザ上に即時反映</li> </ul></li> <li>用途を選ぶと最適な水引き、表書きを自動で選択 <ul> <li><a target="_blank" rel="nofollow noopener" href="https://wikiki.github.io/components/quickview/">Bulma-ExtensionsのQuickView</a>で用途一覧を表示</li> <li>用途を入力させて絞り込み(jQuery)</li> <li>用途クリックで「水引き」と「表書き」を最適なものに変更(jQuery)</li> </ul></li> </ul></li> <li>選定理由 <ul> <li>仕様実現に際して最低限/シンプルなものを選ぶ</li> <li>最新の技術よりも枯れて安定した技術を選ぶ</li> <li>なるべくメンテナンスが不要なものを選ぶ</li> </ul></li> </ul> Matsubarase.com公式