ゲームアプリ開発への道: 初心者からプロまでの完全ガイド

ゲーム開発に興味のある皆さん、こんにちは!

今回は、ゲームアプリの作り方について初心者の方からある程度経験のある方まで、幅広く役立つ情報をお届けしたいと思います。

私自身、ゲーム開発の世界に飛び込んでから10年以上経ちますが、最初の一歩を踏み出すときの興奮と不安を今でも鮮明に覚えています。この記事を通じて皆さんのゲーム開発の旅路がより楽しく、実りあるものになることを願っています。

スポンサーリンク

ゲームアプリ開発への道: 初心者からプロまでの完全ガイド

はじめに: ゲーム開発の魅力

ゲーム開発

ゲーム開発の世界は、創造性と技術が融合する素晴らしい領域です。自分のアイデアを形にしプレイヤーに新しい体験を提供できる喜びは何物にも代えがたいものがあります。

しかし、その道のりは決して平坦ではないです。技術的な壁、デザインの難しさ、そしてマーケティングの課題など、乗り越えるべきハードルは数多くあります。

1. 基礎知識の習得

ゲーム開発を始める上で最初の関門となるのが、プログラミング言語の選択です。初心者の方には、比較的学習曲線の緩やかな言語から始めることをおすすめします。

  • Python: シンプルで読みやすい構文が特徴で初心者に人気があります。Pygameというライブラリを使えば、2Dゲームの開発が比較的簡単に行えます。
  • JavaScript: Webブラウザ上で動作するゲームを作りたい場合におすすめです。HTML5の Canvas要素と組み合わせることで、インタラクティブなゲームを作ることができます。
  • C#: Unity エンジンで使用される主要言語です。ゲーム開発に特化した機能が豊富で、3Dゲームの開発にも適しています。

私が最初に選んだのはPythonでした。構文がシンプルで、エラーメッセージも分かりやすかったのが決め手でしたね。最初の「Hello, World!」を画面に表示させたときの喜びは今でも忘れられません。

ゲームエンジンの基礎

ゲームエンジンは、ゲーム開発をより効率的に行うためのツールセットです。

初心者の方には、以下のエンジンがおすすめです。

  • Unity: 幅広いプラットフォームに対応し、豊富な学習リソースがあります。2D、3D両方のゲーム開発に適しています。
  • Godot: オープンソースで軽量なエンジンです。2D、3D両方に対応しており、独自のスクリプト言語 GDScript を使用します。
  • Construct: プログラミングの知識がなくても、ビジュアルプログラミングでゲームを作ることができます。

私はUnityから始めましたが、最初は圧倒されました。インターフェースの複雑さや、3D空間での操作に慣れるのに時間がかかりましたね。

でも、入門本やチュートリアルを一つずつこなしていくうちに、徐々に理解が深まっていきました。失敗を恐れずに、とにかく手を動かすことが大切です。

2. ゲームデザインの基本

アイデアの発想と企画書の作成

ゲーム開発で最も重要なのは、面白いゲームアイデアを思いつくことです。

アイデアの源は身の回りのあらゆるところにあります。日常生活、好きな本や映画、あるいは他のゲームからインスピレーションを得ることもあるでしょう。

アイデアが浮かんだら、それを企画書にまとめましょう。企画書には以下の要素を含めると良いでしょう。

  1. ゲームの概要
  2. ターゲット層
  3. ゲームプレイの詳細
  4. ストーリー(必要な場合)
  5. アートスタイル
  6. 技術要件
  7. 開発スケジュール

私が最初に作った企画書は今見返すとかなり稚拙なものでしたが、アイデアを整理し、開発の指針を立てる上で非常に役立ちました。完璧を求めすぎず、まずは書き出してみることが大切です。

ゲームメカニクスの設計

ゲームメカニクスは、プレイヤーがゲーム内で行う行動や、ゲームの進行を制御するルールのことです。良いゲームメカニクスは、プレイヤーに楽しさや達成感を与え、ゲームへの没入感を高めます。

例えば、パズルゲームであれば

  • ブロックの配置ルール
  • スコアの計算方法
  • レベルアップの条件

などが重要なメカニクスとなります。メカニクスを設計する際は、以下の点に注意しましょう。

  • シンプルで理解しやすいこと
  • プレイヤーの技能向上に応じて難易度が上がること
  • 予測可能でありながら、時に予想外の展開があること

私が最初に作ったゲームは、メカニクスが複雑すぎて、プレイヤーが混乱してしまうものでした。シンプルに始めて、徐々に要素を追加していく方が良いですね。失敗から学ぶことも多いので、恐れずにいろいろ試してみてください。

3. グラフィックスとサウンド

グラフィックデザイン

ゲームの見た目は、プレイヤーの第一印象を左右する重要な要素です。プログラミングが得意でも、グラフィックデザインには苦手意識がある方も多いのではないでしょうか。初心者の方には、以下のアプローチをおすすめします。

  1. 既存のアセットを活用する: UnityAssetStoreやOpenGameArt.orgなどで、無料や低価格のアセットを入手できます。
  2. シンプルなデザインから始める: 幾何学的な形状や単色のオブジェクトを使って、まずは機能を実装することに集中しましょう。
  3. ピクセルアートに挑戦する: 比較的作成が容易で、レトロな雰囲気を演出できます。
  4. 外部のデザイナーと協力する: フリーランスのデザイナーに依頼したり、友人に協力を求めるのも一案です。

私も最初は絵を描くのが苦手で、既存のアセットを使うことから始めました。現在非常に多くの高品質なアセットが公開されているので、選ぶだけでも大変な作業かもしれませんね。

サウンドデザイン

音楽と効果音は、ゲームの雰囲気を大きく左右します。適切なサウンドは、プレイヤーの没入感を高め、ゲーム体験を豊かにします。

サウンドデザインのアプローチ:

  1. フリー素材の活用: Freesound.orgやOpenGameArt.orgなどで、無料の音楽や効果音を入手できます。
  2. 音楽制作ソフトの利用: GarageBand(Mac用)や LMMS(クロスプラットフォーム)などの無料ソフトを使って、簡単な曲を作ることができます。
  3. 効果音の自作: 身の回りの物を使って効果音を録音してみましょう。意外な物が良い音源になることがあります。
  4. 外部の音楽家との協力: 音楽制作に特化したクリエイターに依頼するのも一つの選択肢です。

私の場合、これらも全てフリー素材に頼りっきりといった感じです。もちろん自作出来るのであれば自作して使用するのも良いでしょう。

4. プログラミングの実践

ゲームループの実装

ゲームループは、ゲームの心臓部とも言える重要な要素です。基本的な構造は以下の通りです。

  1. 入力の処理
  2. ゲーム状態の更新
  3. 画面の描画

これを毎秒数十回繰り返すことで、滑らかなゲーム進行が実現されます。

このループを基本として、ゲームの要素を徐々に追加していきます。最初は単純な図形を動かすところから始めて、徐々に複雑な処理を加えていくのがコツです。

キャラクター制御の実装

プレイヤーキャラクターの動きは、ゲームの操作感を左右する重要な要素です。スムーズで直感的な操作感を実現するには、以下の点に注意しましょう:

  1. 入力の即時反映: キー入力やタッチ操作に対して、即座に反応するようにします。
  2. 物理演算の適用: 重力や慣性を適切に実装することで、自然な動きを実現します。
  3. アニメーションの追加: 歩行、ジャンプ、攻撃などの動作に合わせたアニメーションを実装します。
  4. 当たり判定の処理: キャラクターと環境オブジェクトとの衝突を適切に処理します。

例えば、Unityを使った簡単なキャラクター制御のスクリプトは以下のようになります。

このスクリプトでは、左右の移動とジャンプの基本的な制御を実装しています。

実際のゲームでは、これをベースにさらに複雑な動きや特殊能力を追加していくことになります。

私が最初にキャラクター制御を実装したときは、動きがぎこちなくジャンプの着地も不自然でした。物理演算のパラメータ調整に苦労しましたが、プレイヤーの意見を聞きながら少しずつ改善していくことで、最終的には満足のいく操作感を実現できました。

UI(ユーザーインターフェース)の実装

ゲーム内のUI(ユーザーインターフェース)は、プレイヤーに必要な情報を伝え、ゲームの操作を助ける重要な要素です。

効果的なUIデザインのポイントは以下の通りです。

  1. シンプルで直感的なデザイン: 必要最小限の情報を分かりやすく表示することが重要です。情報過多になると、プレイヤーが混乱してしまう可能性があります。
  2. 一貫性のあるデザイン: ボタンやアイコンのデザイン、フォントなどを統一することで、プレイヤーが迷わずに操作できるようにします。
  3. レスポンシブデザイン: 様々な画面サイズに対応できるよう、UIの配置を工夫します。特にモバイルゲームの場合は重要です。
  4. フィードバックの提供: ボタンを押したときの効果音や視覚的な変化など、プレイヤーの操作に対して適切なフィードバックを返すことで、操作感を向上させます。

例えば、Unityを使ってシンプルなHPバーを実装する場合、以下のようなスクリプトを作成します。

このスクリプトでは、HPバーの表示を管理し、ダメージを受けたり回復したりした際にバーの表示を更新します。

私がUI設計で苦労したのは、情報の優先順位付けでした。最初は「かっこよく」しようとして、画面に多くの情報を詰め込みすぎてしまいました。

しかし、フィードバックを得て本当に必要な情報だけを表示するようにしたところ、ゲームの没入感が大幅に向上しました。

ゲーム状態の管理

ゲーム状態の管理は、ゲームの進行を制御する上で非常に重要です。主な状態としては以下のようなものがあります。

  • タイトル画面
  • ゲームプレイ中
  • ポーズ中
  • ゲームオーバー
  • リザルト画面

これらの状態を適切に管理することで、スムーズなゲーム進行が可能になります。

状態管理のための基本的なスクリプト例:

このスクリプトでは、シングルトンパターンを使用してゲーム全体で一つのGameManagerインスタンスを管理し、状態の変更を一元化しています。

私の経験では、最初はif文の羅列で状態管理をしていましたが、ゲームが複雑になるにつれて管理が難しくなりました。このような状態管理クラスを導入することで、コードの見通しが良くなり、バグの発見も容易になりました。

5. テストとデバッグ

効果的なテスト方法

ゲーム開発においてテストは非常に重要なプロセスです。バグの早期発見と修正はゲームの品質を大きく左右します。効果的なテスト方法には以下のようなものがあります。

  1. ユニットテスト: 個々の関数やメソッドが正しく動作するかをテストします。例えば、キャラクターの攻撃力計算関数が正しい値を返すかなどをチェックします。
  2. 統合テスト: 複数のコンポーネントが正しく連携して動作するかをテストします。例えば、キャラクターの攻撃がエネミーに正しくダメージを与えるかなどを確認します。
  3. プレイテスト: 実際にゲームをプレイしながら、ゲームプレイの面白さやバランス、バグの有無などをチェックします。
  4. ストレステスト: システムに負荷をかけて、極限状態での動作を確認します。具体的には、大量のエネミーを同時に出現させて、ゲームの処理速度が落ちないかなどをテストします。
  5. クロスプラットフォームテスト: 異なるデバイスやOSでゲームが正常に動作するかを確認します。

テストを効率的に行うためには、自動化ツールの利用も検討しましょう。Unityの場合、UnityTestFrameworkを使用してユニットテストを自動化することができます。

デバッグ技術

バグは開発過程で必ず発生するものです。効率的にバグを発見し修正するためのテクニックをいくつか紹介します。

  1. ログの活用: コード内の重要なポイントでログを出力し、プログラムの動作を追跡します。
  1. デバッガーの使用: IDEのデバッガー機能を使用して、コードの実行を一時停止し、変数の値を確認したり、ステップ実行したりします。
  2. アサーションの使用: 想定外の状況が発生した場合にすぐに気付けるよう、アサーションを使用します。
  1. エラー処理: 適切な例外処理を実装し、エラーが発生した際に詳細な情報を取得できるようにします。
  2. バージョン管理の活用: Git等のバージョン管理システムを使用し、問題が発生した際に前のバージョンに戻れるようにします。

私がデバッグで苦労したのは、再現性の低いバグの対処でした。ときどき発生する不具合は、原因の特定が難しいものです。そんなとき、詳細なログ出力とアサーションの活用が非常に役立ちました。また、他の開発者やテストプレイヤーからのフィードバックも、思わぬバグの発見につながることがあります。

6. パフォーマンス最適化

メモリ管理

ゲームのパフォーマンスを向上させるためには、適切なメモリ管理が欠かせません。特にモバイルデバイスでは、限られたリソースを効率的に使用する必要があります。

メモリ管理のポイント:

  1. オブジェクトプーリング: 頻繁に生成・破棄されるオブジェクト(例:弾丸、エフェクト)を事前に作成し再利用することで、メモリの断片化を防ぎます。
  1. リソースの適切な解放: 使用しなくなったリソース(テクスチャ、オーディオなど)は速やかに解放します。
  2. アセットバンドルの使用: 大規模なゲームでは、アセットバンドルを使用してリソースを動的にロードすることで、初期ロード時間を短縮し、メモリ使用量を抑えることができます。
  3. メモリリークの防止: 循環参照などによるメモリリークを防ぐため、適切にnullチェックや参照解除を行います。

描画最適化

描画処理は、ゲームのパフォーマンスに大きな影響を与えます。

以下のような最適化テクニックを活用しましょう。

  1. ドローコールの削減: 同じマテリアルを使用するオブジェクトをバッチ処理することで、描画命令の回数を減らします。
  2. LOD (Level of Detail): カメラからの距離に応じて、オブジェクトの詳細度を変更します。遠くのオブジェクトは簡略化したモデルを使用することで、描画負荷を軽減できます。
  3. オクルージョンカリング: 画面に表示されていないオブジェクトの描画を省略します。
  4. シェーダーの最適化: 複雑なシェーダーは処理負荷が高いため、モバイル向けには軽量なシェーダーを使用します。
  5. テクスチャの圧縮: テクスチャサイズを適切に設定し、必要に応じて圧縮を行います。

私がパフォーマンス最適化で学んだ重要な教訓は、「早すぎる最適化は諸悪の根源」ということです。開発初期から過度に最適化にこだわると、コードの可読性が低下し、開発速度が落ちてしまいます。まずは機能を実装し、実際にパフォーマンス問題が発生した箇所を特定してから最適化を行うのが効果的です。

7. マネタイズ戦略

広告の実装

モバイルゲームでよく使われるマネタイズ方法の一つが広告です。広告の種類には以下のようなものがあります:

  1. バナー広告: 画面の一部に常時表示される広告。
  2. インターステイシャル広告: ゲームの区切り(レベルクリア時など)に全画面で表示される広告。
  3. リワード広告: ユーザーが任意で視聴し、報酬を得られる広告。

Unityの場合、UnityAdsを使用すると比較的簡単に広告を実装できます。

以下は、リワード広告を実装する簡単な例です。

広告の実装で注意すべき点は、ユーザーエクスペリエンスを損なわないことです。

広告の表示頻度や表示タイミングは慎重に検討する必要があります。過度な広告表示はユーザーの不満を招き、ゲームの評価を下げる可能性があります。以下のポイントに注意しましょう。

  1. 適切なタイミング: レベルクリア時やゲームオーバー時など、ゲームの自然な区切りで広告を表示します。
  2. ユーザーの選択: リワード広告のように、ユーザーが自発的に広告を視聴する選択肢を提供します。
  3. 広告の質: 信頼できる広告ネットワークを使用し、不適切な内容の広告が表示されないようにします。
  4. ロード時間の考慮: 広告のロードに時間がかかる場合は、事前にバックグラウンドでロードしておきます。

私が経験した失敗は、初期のバージョンで広告の表示頻度を高くしすぎたことです。ユーザーからの否定的なフィードバックを受けて、表示頻度を下げ、代わりにリワード広告を増やしたところ、ユーザーの満足度とリテンション率が向上しました。

In-AppPurchase (IAP) の実装

In-AppPurchase (アプリ内課金) は、多くのフリーミアムゲームで採用されているマネタイズ方法です。

  1. 仮想通貨
  2. アイテム
  3. キャラクターやスキン
  4. 広告の削除
  5. VIPステータスや特別な機能

IAP の実装で重要なのは、以下の点です。

  1. 価値の提供: 課金アイテムが十分な価値を持つようにデザインします。
  2. バランス調整: 無課金でもゲームを楽しめるようにしつつ、課金による恩恵を感じられるようにバランスを調整します。
  3. セキュリティ: サーバーサイドでの検証を行い、不正な購入を防ぎます。
  4. 透明性: 価格や商品内容を明確に表示し、ユーザーが安心して購入できるようにします。
  5. 返金ポリシー: アプリストアの規約に沿った適切な返金ポリシーを設定します。

ユーザーフィードバックを分析し、価格設定の見直しや、より魅力的な特典の追加を行っていくことで売り上げが向上するんじゃないでしょうか。継続的な改善と分析が重要です。

8. マーケティングと配信

アプリストアの最適化 (ASO)

アプリストア最適化(AppStoreOptimization, ASO)は、アプリストアでの検索結果やランキングでより上位に表示されるようにする施策です。

  1. タイトルとサブタイトル: 重要なキーワードを含めつつ、魅力的なタイトルを設定します。
  2. 説明文: ゲームの特徴や魅力を簡潔に伝え、重要なキーワードを自然に盛り込みます。
  3. スクリーンショットとプレビュー動画: ゲームの魅力が伝わる高品質な画像や動画を用意します。
  4. アイコン: 目を引く魅力的なアイコンデザインを作成します。
  5. カテゴリ選択: 適切なカテゴリを選択し、関連性の高い検索結果に表示されるようにします。
  6. キーワード最適化: 関連性の高いキーワードを選定し、メタデータに適切に配置します。
  7. レビュー管理: ユーザーレビューに適切に対応し、高評価を維持します。

ソーシャルメディアマーケティング

ソーシャルメディアは、ゲームの宣伝やコミュニティ構築に非常に効果的なツールです。

  1. プラットフォームの選択: ターゲット層に合わせて適切なプラットフォームを選びます。例えば、若年層向けならTikTokやInstagram、幅広い年齢層にはTwitterやFacebookなどが効果的です。
  2. コンテンツ戦略:
    • ゲームプレイの短い動画クリップ
    • 開発の裏側や制作秘話
    • キャラクターやワールドの設定紹介
    • ユーザーが作成したコンテンツの紹介
    • アップデート情報や新機能の予告

  3. 定期的な投稿: 一定のスケジュールで投稿を続けることで、フォロワーの関心を維持します。
  4. コミュニティエンゲージメント: ユーザーのコメントに積極的に返信し、質問に答えたり、フィードバックを受け付けたりします。
  5. インフルエンサーマーケティング: ゲーム実況者やストリーマーとコラボレーションし、より多くの潜在的ユーザーにリーチします。
  6. ハッシュタグの活用: 適切なハッシュタグを使用することで、投稿の露出を増やします。
  7. 広告活用: 有料広告を利用して、ターゲット層に効率的にリーチします。

プレスリリースとメディア対応

ゲームのローンチや大型アップデートの際には、プレスリリースを活用しましょう。

  1. 見出し: 注目を集める魅力的な見出しを付けます。
  2. リード文: 最も重要な情報を冒頭に簡潔にまとめます。
  3. 本文: ゲームの特徴、開発背景、主要な機能などを詳しく説明します。
  4. 引用: 開発者やパブリッシャーのコメントを入れると、記事の信頼性が増します。
  5. 画像と動画: 高品質のスクリーンショットやトレーラー動画へのリンクを含めます。
  6. 連絡先: 問い合わせ先の情報を明記します。

プレスリリースを配信したら、ゲームメディアや技術ブログなどに直接アプローチするのも効果的です。個人的なメッセージを送り、ゲームの特徴や独自性をアピールしましょう。

9. ユーザーフィードバックとアップデート

フィードバック収集の方法

ユーザーからのフィードバックは、ゲームを改善し、長期的な成功を収めるために不可欠です。

  1. アプリ内フィードバックフォーム: ゲーム内に簡単なフィードバックフォームを設置します。
  2. アプリストアのレビュー: 定期的にレビューをチェックし、ユーザーの声を拾い上げます。
  3. ソーシャルメディア: Twitter、Facebook、Redditなどでユーザーの声を積極的に拾います。
  4. ベータテスト: 新機能のリリース前にベータテスターを募集し、フィードバックを得ます。
  5. アナリティクス: ユーザーの行動データを分析し、問題点や改善点を見つけます。
  6. サポートチケット: ユーザーからの問い合わせやバグ報告を整理し、傾向を分析します。
  7. ユーザーインタビュー: コアユーザーに直接インタビューを行い、深い洞察を得ます。

効果的なアップデート戦略

収集したフィードバックを基に、効果的なアップデート戦略を立てましょう。

以下のポイントを押さえることが重要です。

  1. 優先順位付け: フィードバックを重要度と実装の容易さでマトリックス化し、優先順位を決めます。
  2. 定期的なアップデート: 小規模な改善を頻繁に行うことで、ユーザーの関心を維持します。
  3. 大型アップデートの計画: 新機能や大幅な改善は、事前に告知してユーザーの期待を高めます。
  4. バグ修正の迅速な対応: クリティカルなバグは速やかに修正し、ユーザーの信頼を維持します。
  5. 変更履歴の明確化: アップデート内容を分かりやすく説明し、ユーザーに変更点を伝えます。
  6. A/Bテスト: 大きな変更を加える前に、一部のユーザーを対象にA/Bテストを行います。
  7. ユーザーの反応モニタリング: アップデート後のユーザーの反応を注意深く観察し、必要に応じて迅速に対応します。

10. 長期的な成功のために

コミュニティ構築

ゲームの長期的な成功には、強力なコミュニティの存在が不可欠です。以下の方法でコミュニティを育てましょう。

  1. 公式フォーラムの設置: ユーザー同士が交流できる場を提供します。
  2. Discordサーバーの運営: リアルタイムのコミュニケーションを促進します。
  3. イベントの開催: オンライン・オフラインでのイベントを定期的に開催します。
  4. ユーザー生成コンテンツの奨励: ファンアートやモッドの制作を奨励し、優秀な作品を表彰します。
  5. コミュニティマネージャーの配置: ユーザーとの対話を専門に行うスタッフを置きます。
  6. 透明性の確保: 開発の進捗や今後の計画を定期的に共有します。
  7. ユーザーの声の尊重: コミュニティからの提案を真摯に受け止め、可能な限り実装します。

私がコミュニティ構築で学んだ最も重要なことは、「誠実さ」です。たとえ批判的な意見であっても、真摯に耳を傾け、丁寧に対応することで、ユーザーの信頼を得ることができました。

継続的な学習と改善

ゲーム開発の世界は日々進化しています。長期的な成功を収めるためには、常に学び、改善し続ける姿勢が重要です。

  1. 新技術のキャッチアップ: AR/VR、機械学習など、新しい技術の動向をフォローします。
  2. 他ゲームの研究: 競合他社のゲームをプレイし、良いアイデアを学びます。
  3. 開発プロセスの最適化: アジャイル開発やスクラムなど、効率的な開発手法を取り入れます。
  4. チーム育成: メンバーのスキルアップを支援し、チーム全体の能力を向上させます。
  5. ユーザー心理の理解: ゲーミフィケーションや行動心理学を学び、より魅力的なゲーム設計に活かします。
  6. データ分析スキルの向上: ユーザーデータを適切に分析し、意思決定に活用する能力を磨きます。
  7. 業界イベントへの参加: GDC(GameDevelopersConference)などの業界イベントに参加し、最新のトレンドをキャッチします。

私自身、開発を始めた当初は技術面ばかりに注目していましたが、徐々にユーザー心理やデータ分析の重要性に気づきました。これらの知識を得ることで、ゲームデザインの質が大きく向上し、ユーザーの満足度アップにつながりました。

おわりに

ゲームアプリの開発は、技術力だけでなく、創造性、マーケティング、ユーザーコミュニケーションなど、多岐にわたるスキルが求められる挑戦的な分野です。

しかし、その分だけやりがいも大きく、自分のアイデアが形になり、多くの人に楽しんでもらえる喜びは何物にも代えがたいものがあります。

この記事で紹介した内容は、あくまでも基本的な指針です。実際の開発では、自分のゲームの特性や目標に合わせて、適切にアレンジしていく必要があります。失敗を恐れず、常に学び続ける姿勢を持ち続けることが、成功への近道となるでしょう。

最後に、ゲーム開発は一人で行うものではありません。開発チーム、ユーザー、そして業界全体とのつながりを大切にしながら、素晴らしいゲーム体験を創造していってください。皆さんの成功を心から応援しています!

著者プロフィール
うんくん

IT系に特化した記事がメインです。(Unity多め。)
Udemy講師もやっています。よろしくお願いします。

※Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています。

うんくんをフォローする
プログラミング全般
スポンサーリンク
シェアする
うんくんをフォローする