@gregory

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

JavaScriptだけで恋愛おみくじを作ってみた(乱数・履歴保存・SNS共有まで)

Discussion

JavaScriptだけで恋愛おみくじを作ってみた(乱数・履歴保存・SNS共有まで)

JavaScriptだけで簡単な「恋愛おみくじ」を作ってみました。

最初は単純にランダムで結果を表示するだけでしたが、実際に作り始めると意外と考えることが多くありました。

実装した機能

  • ランダムで運勢を表示
  • 結果をLocalStorageへ保存
  • SNS共有用のテキスト生成
  • 毎日違う結果を表示する仕組み
  • スマホ表示への最適化

ランダム処理

まずは基本的な乱数です。

const results = [
  "大吉",
  "中吉",
  "小吉",
  "",
  "末吉",
  ""
];

const result = results[Math.floor(Math.random() * results.length)];

しかし、この方法ではリロードするたびに結果が変わってしまいます。

そこで日付を組み合わせて、同じ日なら同じ結果になるようなロジックに変更しました。

const today = new Date().toISOString().slice(0,10);

const seed = today.split("-").join("");

const index = Number(seed) % results.length;

これだけでも「毎日の運勢」らしい挙動になります。

LocalStorageで履歴保存

履歴も保存しておくとUXが向上します。

localStorage.setItem("fortune", result);

表示時は

const history = localStorage.getItem("fortune");

だけで取得できます。

SNS共有

最近は結果を画像化したり、シェアできるようにすると利用率が上がります。

私は画像生成機能も試しましたが、Canvas APIだけでも十分実装できます。

作ってみて感じたこと

恋愛おみくじ自体はシンプルな仕組みですが、

  • ランダム性
  • キャッシュ
  • SEO
  • スマホUI
  • 共有機能

など、意外とフロントエンドの勉強になる題材でした。

実際に動作するサンプルや、UI・SEOについてまとめた内容は個人ブログでも紹介しています。

参考:https://mmcwant.livedoor.blog/

同じようなミニWebアプリを作っている方がいれば、実装方法などぜひ教えてください。

1 likes

Your answer might help someone💌