【個人開発】AIで手相を読み解く!3000年の叡智と最新技術で作ったWebアプリ「Palma」
はじめに
「自分の手相って、どんな意味があるんだろう?」
ある日、なんとなく自分の手のひらを眺めてて、そう思ったのがすべての始まりでした。
そんな疑問に AI が答えてくれる Web アプリ「Palma(パルマ)」を個人開発して、リリースしちゃいました!
このアプリは、スマートフォンのカメラで手のひらを撮影するだけで、AI が本格的な手相鑑定をしてくれるサービスです。古代から続く手相術と最新の AI 技術を組み合わせて、自分の個性や才能、未来の可能性を読み解いてもらえるんです。
この記事では、僕がアイデアを思いついてから、あれこれ試行錯誤しながらアプリを形にしていくまでの道のりと、その裏側にある技術について、ちょっとお話しさせてもらいます。
なぜ「手相 ×AI」だったのか
僕は昔から、MBTI とかの自己分析ツールが好きなんです。自分でも知らなかった自分の一面を発見できるのが、単純に面白いんですよね。
「もっと違う切り口で、自分を分析できるツールないかな?」
そんなことを考えてた時、ふと「手相」のことを思い出したんです。
実は以前、手相を見てもらった時に「新卒 2 年目で頑張りすぎて、体調面で無理をしやすい時期。少しペースを落として、自分を大切にする時間を作ったほうがいい」って言われて、後から振り返ると「妙に当たってたな…」っていう不思議な体験をしたことがあったんです。
この体験があって、手相って単なる占いじゃなくて、「自分だけのユニークな設計図」として、昔から自己分析のために使われてきたフレームワークなんだなって思うようになったんです。考えてみると、手相術って、何千年にもわたって膨大な数の人間の手と人生のパターンを観察して、その相関関係を導き出した、壮大な統計学とも言えるんじゃないかなって。
エンジニアとして面白いなと思ったのは、手相って結局パターン認識なんですよね。線の長さ、深さ、分岐の仕方...これって画像認識技術と相性がいいはずだって。そう考えたら、もうワクワクが止まりませんでした。
もし、この膨大な統計データとも言える手相術の解釈を AI に学習させることができれば、まったく新しい形のパーソナライズされた自己分析ツールが作れるんじゃないか。
運命を 100%当てることよりも、自分をより深く理解するための新たな「言語」をテクノロジーで提供する。そんなコンセプトにすごく惹かれて、このプロジェクトをスタートしました。
Palma でできること
-
📱 スマホで簡単!1 分でわかる本格鑑定
アプリの指示に従って手のひらを撮るだけ。AI が瞬時にあなたの手相を分析して、生命線、頭脳線、感情線といった主要な線の意味を解説してくれます。基本鑑定は完全無料です! -
💬 AI チャットで対話しながら深掘り
鑑定結果を読んで「もっと詳しく知りたい!」って思ったら、AI チャット機能で深掘りできます。まるで専属の鑑定士さんに相談してるみたいに、対話形式でさらに詳しいアドバイスをもらえるんです。 -
💯 100 円の買い切り型プレミアム鑑定
もっと深く自分を知りたい方向けに、100 円(税込)の買い切り型プレミアム鑑定も用意しました。恋愛、仕事、才能、金運など、より多角的な分析や、あなたの人生の転機を示す「人生年表」も見れます。サブスクじゃないので、解約忘れの心配もないです!
技術スタック
主要な技術構成をご紹介します。
- Next.js 15 + TypeScript: フルスタック開発の基盤
- Anthropic Claude 3 Haiku: 手相分析を行う AI モデル
- Clerk: 認証・ユーザー管理
- KOMOJU: 決済処理
- AWS Amplify: ホスティング・デプロイ
個人開発なので、開発速度と保守性を重視して、慣れ親しんだ技術を中心に構成しました。特に AI 関連では、コストと性能のバランスを考えて Claude 3 Haiku を選んでます。
正直、最初は GPT-4 とかも検討したんですけど、個人開発だと API 料金がバカにならないんですよね。でも Haiku は速度も速いし、手相の解釈には十分な性能があって、「これだ!」って思いました。技術選定って、性能だけじゃなくて現実的な運用コストも含めて考えないといけないなって、改めて実感しました。
こだわりの開発と、乗り越えた壁
個人開発は、自由である反面、孤独な戦いの連続でした。夜中の 3 時まで一人でコード書いて、エラーと格闘して、「なんでこんなことやってるんだろう」って思うこともありました。でも、自分が「これだ!」と思ったものを形にできる喜びは、何物にも代えがたいんですよね。
特にこだわった点と、ぶつかった大きな壁について紹介します。
1. 「撮るだけ」の裏にある、地道な画像解析
手相アプリの肝は、なんといっても撮影体験です。
「カメラで撮るだけ」って口で言うのは簡単だけど、実際にはブレや光の反射、ピントの問題とかで、一筋縄ではいきませんでした。
最初は「手のひらを画面に収めてください」みたいなシンプルなガイドだけだったんですけど、テストしてみると全然うまく撮れない。暗い部屋だと線が見えないし、明るすぎると反射で白飛びするし。正直、「これ本当にリリースできるのか?」って不安になったこともありました。
ユーザーがどんな環境で撮影しても一定の品質を担保できるよう、撮影ガイドの UI を何度も作り直して、ブレや明るさをリアルタイムで判定するフィードバック機能を実装しました。
// 画像品質チェックの実装(一部抜粋)
const analyzeImageQuality = async (imageData: string) => {
// ブレ検知、明るさチェック、手のひら検出などを実行
const quality = await checkPalmQuality(imageData);
if (quality.score < QUALITY_THRESHOLD) {
return {
isValid: false,
feedback: quality.issues, // 例: "もう少し明るい場所で撮影してください"
};
}
return { isValid: true };
};
2. AI 鑑定の「温かみ」と「信頼性」を両立させるプロンプト術
次にこだわったのは、AI が生成する鑑定文の温度感と、それを支える技術的な信頼性です。
目指したのは、まるで経験豊かな鑑定士さんが語りかけるような温かい言葉を、常に安定してユーザーに届けること。ご存知の通り、LLM はめちゃくちゃ「気まぐれ」なので、この安定性を担保するのが一番難しかったです
その鍵を握るのが、プロンプトエンジニアリングです。僕がやった工夫の思想を、ちょっとだけご紹介します。
// プロンプトエンジニアリングの思想(一部抜粋)
const userPrompt = `
あなたは日本の熟練手相鑑定士として、人生経験が豊富な日本の女性を対象に鑑定します。
これまでの歩みを称え、これからの人生がさらに輝くような、温かく希望に満ちた鑑定を心がけてください。
【鑑定のルール】
1. **厳密なJSON形式での応答**: 応答は必ず \`{\` で始まり \`}\` で終わること。
2. **人間らしい砕けた言葉遣い**: AIだと感じさせない自然な対話を目指すこと。
3. **具体的な内容**: 誰にでも当てはまる一般論ではなく、画像から読み取れる特徴を話すこと。
4. **ポジティブな表現**: 良い点を中心に伝え、課題も成長のヒントとして前向きに表現すること。
`;
// 実際のAPIコールでは、ユーザープロンプトの前にアシスタントとして
// 「必ず日本語で回答すること」「トークン数は2000以内で」
// といった、より普遍的なルールを注入しています。
const message = await createMessage([
{
role: "assistant",
content: "基本的な指示...",
},
{
role: "user",
content: [
{ type: "text", text: userPrompt },
{
type: "image",
source: {
/* ...画像データ... */
},
},
],
},
]);
ここに書いたのは、設計思想のほんの一部です。実際には、AI に詳細なペルソナ(人格)を与えて、思考のクセを読んで、望ましい振る舞いへと導くための無数の試行錯誤がありました。
プロンプトを 1 文字変えただけで全然違う結果になったり、「必ず〜してください」って書いたのに無視されたり。「AI って本当に気まぐれだな」って何度も思いました。でも、だからこそ面白いんですよね。まるで AI と対話しながら一緒に作品を作ってる感覚でした。
例えば、出力形式を安定させるための工夫や、安全性を確保するためのガードレール、より自然な会話を促すためのテクニックとか、いろんな知見をプロンプトに詰め込んでます。それはまるで、気難しい役者さんに細かく演出をつけていく作業みたいでした。この試行錯誤こそが、AI プロダクト開発の一番面白い部分で、同時に「企業秘密」とも言えるノウハウの核心かもしれませんね。
3. 立ちはだかった「決済審査」という壁
開発も終盤に差し掛かって、一番苦労したのが、実は決済審査でした。
個人開発の経験がある方なら分かってもらえるかもしれないけど、占いみたいなサービスは決済会社の審査がめちゃくちゃ厳しいんです。
最初に申請した決済会社からは、あっさり審査落ちの連絡が。理由も開示されず、対策の打ちようもない。
「ここまで作ったのに、リリースできないのか…」って、マジでプロジェクト畳むことも考えました。
でも、どうしても諦めきれなくて、もう一社、別の決済会社に望みを託して申請。祈るような気持ちで待ってたところ、今度は「審査通過」の知らせが!
PC の前で思わずガッツポーズしたのは言うまでもありません。技術以外の部分に、こんな大きな壁が待ってるとは。個人開発の厳しさと、乗り越えた時の喜びを同時に味わった経験でした。
この経験で思ったのは、「技術だけじゃダメなんだな」ってこと。どんなに良いものを作っても、ビジネス的な側面をクリアしないとユーザーに届けられない。でも逆に言えば、こういう困難を乗り越えてリリースできたサービスだからこそ、思い入れも強くなるんですよね。
今後の展望
このアプリは、まだスタートラインに立ったばかりです。今後、こんな機能を追加していきたいなと思ってます。
- 🌍 多言語対応: 海外のユーザーにも楽しんでもらえるように
- 📊 統計機能: 自分の手相がどれくらい珍しいのか、統計的にわかる機能
- 🤝 相性診断: 友人やパートナーと一緒に楽しめる相性診断
- 📱 ネイティブアプリ化: より快適な撮影体験の提供
個人開発だからこそ、ユーザーの声を直接聞いて、すぐに機能に反映できるのが強みだと思ってます。「こんな機能があったらいいな」っていうアイデアがあれば、ぜひ教えてください。一緒に面白いサービスを作っていきたいです。
おわりに
Palma は、僕が「こんなのあったら面白そうだな」っていう純粋な好奇心から始めたプロジェクトです。
手相が未来を 100%決めるわけじゃありません。
でも、自分の手のひらをじっくり眺めて、AI との対話を通じて自分自身と向き合う時間は、きっと何か新しい「気づき」を与えてくれると思ってます。
この長い開発記を最後まで読んでくださって、本当にありがとうございました!
もしこの記事が、これから何かを作ろうとしてる誰かの、ささやかな勇気やヒントになれば、それ以上に嬉しいことはありません。
▼ Palma で、あなたの「小さな宇宙」を覗いてみませんか?
https://palma-ai.com/
🔮この記事が面白いと思ったら、ぜひ「いいね」をお願いします
開発に関する質問やフィードバックも、コメントでお待ちしています!
Discussion