YES/NOで答える診断アプリを作りたいと思っています。

↓の診断アプリと同じ仕組みにしたいのですが、下記診断アプリはどういう仕組みか分かりますでしょうか?
http://escala.jp/uranai/igaidanshi/?__from=mixi

YES/NOで答えて分岐して、結果にたどり着いているだけな気はしますが、念のため、診断アプリに詳しい方がいましたら、教えて頂けますと幸いです。

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2011/10/17 06:08:13
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268

ポイント50pt

診断アプリに詳しいというわけではありませんが……



そのリンクのは、ご想像通り「YES/NOで答えて分岐して、結果にたどり着いているだけ」のものです。

雑誌とかにあるものも同じですね。Yes/Noで次の質問に分岐しますが、ある質問のYesと別の質問のNoが同じところに行ったりしていて、最終的にいくつかの結果にたどり着くというやつです。

そのリンクので言えば、問1でYes→問2でNoと、問1でNo→問2でYesが同じ質問にたどり着き、それまでの回答の筋道の違いは結果に影響を及ぼしません。

このような形で2択10問だと、すべてが別々なら1023問と1024通りの結果が必要ですが、今回のは48問で9通りに分かれています。



具体的なネタばらしをすると、no=の後の数字がページ番号の様なモノで1から48までが質問、49から57までが結果となっています。

1から48まではYes/Noそれぞれに飛ぶ番号が決められていて、49から57まではそれ(それと何問目かの表示)がないという違いがあるだけです。何問目かは、じつはcnt=の後の数字+1で、表示上だけのもの(結果やとび先には影響しない)です。



phpで作られているのは単に作り変えやすいというだけでしょう。

おそらくデータベースに、ページ番号と、質問内容と、Yes/Noそれぞれのとび先番号と、質問か結果かのフラグがあって、それとテンプレートから各ページを構成していると思います。

ですが、各ページで動的に変化させる必要のない分岐の組み合わせなので、やろうと思えば静的なページやブログでも可能かと思います。

id:hiyarihatto

ありがとうございます!

まさに、上記が知りたい情報でした。

上の仕組みで、URLを見ていけば完璧に仕組みがわかりますね。

2011/10/17 06:09:28

その他の回答1件)

id:TransFreeBSD No.1

回答回数668ベストアンサー獲得回数268ここでベストアンサー

ポイント50pt

診断アプリに詳しいというわけではありませんが……



そのリンクのは、ご想像通り「YES/NOで答えて分岐して、結果にたどり着いているだけ」のものです。

雑誌とかにあるものも同じですね。Yes/Noで次の質問に分岐しますが、ある質問のYesと別の質問のNoが同じところに行ったりしていて、最終的にいくつかの結果にたどり着くというやつです。

そのリンクので言えば、問1でYes→問2でNoと、問1でNo→問2でYesが同じ質問にたどり着き、それまでの回答の筋道の違いは結果に影響を及ぼしません。

このような形で2択10問だと、すべてが別々なら1023問と1024通りの結果が必要ですが、今回のは48問で9通りに分かれています。



具体的なネタばらしをすると、no=の後の数字がページ番号の様なモノで1から48までが質問、49から57までが結果となっています。

1から48まではYes/Noそれぞれに飛ぶ番号が決められていて、49から57まではそれ(それと何問目かの表示)がないという違いがあるだけです。何問目かは、じつはcnt=の後の数字+1で、表示上だけのもの(結果やとび先には影響しない)です。



phpで作られているのは単に作り変えやすいというだけでしょう。

おそらくデータベースに、ページ番号と、質問内容と、Yes/Noそれぞれのとび先番号と、質問か結果かのフラグがあって、それとテンプレートから各ページを構成していると思います。

ですが、各ページで動的に変化させる必要のない分岐の組み合わせなので、やろうと思えば静的なページやブログでも可能かと思います。

id:hiyarihatto

ありがとうございます!

まさに、上記が知りたい情報でした。

上の仕組みで、URLを見ていけば完璧に仕組みがわかりますね。

2011/10/17 06:09:28
id:a-kuma3 No.2

回答回数4973ベストアンサー獲得回数2154

ポイント50pt

こういうのは、状態遷移図(and 表) を使って設計します。


なんとか診断によくある絵ですが、丸を状態(そのときの見た目)、矢印をイベント(選んだ選択肢)と考えると、状態遷移図、という絵になります。

f:id:a-kuma3:20111015134358j:image


状態遷移図から、機械的に状態遷移表を書き起こせます。

今の状態YesNo表示
ADBA.html
BDFB.html
CEFC.html
DCFD.html
E--E.html (ゴール)
F--F.html (ゴール)

最初のカラムが「今の状態(表示中の絵)」、

二番目と三番目がイベントが起きたときの「次の状態」、

最後のカラムは、「そのときの状態を表示するための情報」です。


状態遷移表をデータベースなどに持っておいて、プログラムは、

今表示中の絵(状態)と、選んだ選択肢(イベント)から、次の状態を求めて、

その絵を表示して、選択肢が入力されるのを待ちます。


こういう設計をしておくと、間違いを減らすことができます。

例えば、あるページで "Yes" の選択肢を考えて無かった、という場合には、

状態遷移図で、空白の欄がある、ということになります。


設計ができれば、そのまま実装するだけですが、次のページをソース中に固定で持ってしまうと、

設計資料からソースに書き写すときのミスがあるかもしれません。

設計した状態遷移表を、そのままデータベースに持って、どのページからでも

同じプログラムを使って、次に表示するページを決める、というふうに

作っておくと、実装する段階でのミスを減らすことができます。


診断アプリの種類をたくさん作りたいときにも、プログラムは一つだけで、

データだけを準備すれば良い、というメリットもあります。

id:hiyarihatto

コメントありがとうございます!

とても分かりやすかったです。

データベースでデータを持てば、汎用的に使えそうですね。

参考にさせて頂きます!

2011/10/17 06:11:06

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません