フォーム読み込み中
こんにちは。AWSインテグレーションチームの平尾、谷口、内田です。
AWS社がPartyRockを活用した生成AIアプリケーション開発のハッカソンを開催したため、社内でチームを組み挑戦してみました。
チームで取り組むことで、楽しみながら生成AIを用いたアプリケーションを開発することができました。
1人では参加のハードルが高いハッカソンも取り組みやすくなると思いますので、我々がどのようにチームでアイデアを出し、開発し、応募したか共有します。
今後ハッカソンに参加される際の背中を押すことができれば幸いです。
また生成AIの面白さも感じ取ってもらえたらと思います!
PartyRockは2023年11月16日にAWS社からリリースされた、誰でも気軽に生成AIを活用したアプリケーションをノーコードで作成することができるプレイグラウンドです。
PartyRockはAWSの生成AIサービスである「Amazon Bedrock」から派生したものであり、テキスト入力による指示と画面の操作だけで、生成AIを用いたアプリケーションを誰でも簡単に作成して、公開することができます。
PartyRockの背後では、Amazon Bedrockが利用されています。Amazon Bedrockで選択できる複数の基盤モデルを組み合わせたインタフェースがPartyRockでは提供されているので、画面でモデルを選択するだけでAmazon Bedrockの凄さを体感することができます。
本記事では、PartyRockの具体的な操作方法の説明は割愛しますが、AWSの公式ページにて、PartRockのアプリケーション例が公開されています。以下のURLからご確認ください。
また、PartyRockを実際に触ってみたい方は、PartyRock動作環境から試すことができます。
尚、PartyRockを利用する場合は、Google、Amazon、Appleのいずれかのアカウントでサインインが必要となりますので、アカウントをご準備ください。
【PartyRock アカウント選択画面】
2024年1月~3月に、プログラミング経験がない方でも生成AIのアプリケーション開発に参加できるハッカソン 「The PartyRock Generative AI Hackathon by AWS」 がAWSによってDEVPOSTで開催されました。
【PartyRock Hackathon Topページ】
ハッカソンへの参加者は、以下の4つのカテゴリのいずれかに適合するように PartyRockアプリケーションを作成するか、または、Communityが作成したChatRPGアプリケーションをリミックス(独自改良)する必要があります。
・ Interactive learning experiences - virtual science labs, language lessons, etc
・ Creative assistants - music composition assistance, story idea generators, etc
・ Experimental entertainment - AI-driven interactive stories, RPGs, etc
・ Freestyle - projects that do not fall into any of the categories above
・ Remix Side Quest: Remix the community-created ChatRPG app
ハッカソンのスケジュールは以下の通りとなり、業務を行う傍ら、1ヶ月強で、「アイデア創出」→「開発」 → 「応募」を行うという非常にタイトなものでした。
| 開始時刻(日本時間) | 終了時刻(日本時間) |
提出 | 2024年1月30日 AM3:00 | 2024年3月12日 AM9:00 |
審査 | 2024年3月21日 AM2:00 | 2024年4月13日 AM9:00 |
優勝者発表 | ― | 2024年4月16日 AM2:45 |
昨今ハッカソンは至る所で開催されるようになったことから、かなり身近なものになってきたと思います。そのため、「ハッカソンに興味がある」、「ハッカソンに挑戦してみたい」という方は多いかと思います。一方で、「ハッカソンはどこで行われているの?どうやって調べたら良いの?」という疑問を持たれている方もいらっしゃると思います。そのような人たちの参考としてオススメしたいのが「DEVPOST」です。
【DEVPOST Topページ】
DEVPOSTとは、世の中の開発者がハッカソンへ参加することを支援することを目的としたプラットフォームです。「開発者が興味のある仕事を見つけられるようにする」というミッションのために、ハッカソン(対面、オンライン)の主催や仕事に関する情報を公開しているサイトになります。
DEVPOSTに関する詳細な情報は本記事では割愛させていただきますが、今回のようなAWS社が主催するものをはじめ、他のクラウド(Azure/Google Cloud等)や、AI、Blockchainといった技術領域に関するハッカソンが多く掲載されています。
自身で興味がある領域に関するハッカソンが開催されていないかDEVPOSTでチェックしてみると良いでしょう。
ハッカソンへの挑戦を考えた理由は2つあります。
1つ目は、ハッカソンでは、様々なバックグラウンドを持つメンバーが集まり、アイデアを出し合い、実現するために協力し合うことで、組織力の向上が期待できるからです。自分のアイデアを他のメンバーと共有し、それを実現するプロセスは非常に刺激的で楽しいものであり、日常的な業務に囚われることなく、0からアイデアを創出して実現する経験は、クリエイティブな問題解決能力を養い、自己成長とチームの成長に繋がり組織内の協力関係も深めることができます。
2つ目は、ハッカソンは、新しい技術やアプリケーションの開発に最適な機会となるからです。参加者は、新たな技術を学び、それを応用することで問題の解決策を見つけます。その過程で得た知識や成果を、ハッカソンの参加者や関心を持つ人々にアピールすることが大事です。特に企業内外のエンジニアやビジネス関係者に対して技術発信をすることで、将来のビジネスや技術開発の機会を広げることができます。
ハッカソンの成功のカギは、多様なスキルを持つメンバーでチームを組み、それぞれの得意分野を活かすことにあります。
今回は、以下の異なる組織メンバーにてチームを組みました(組織名は2023年度時点のもの)。
①ソリューションエンジニアリング本部クラウドデザイン統括部SE第2部(以下、CLD2)
法人企業へのクラウドソリューションや生成AI活用環境を提案・構築している部隊を指す。
②デジタルエンジニアリング本部DE第3統括部SI第1部(以下、DE)
法人企業へのクラウドソリューションや生成AIに関するITコンサル部隊を指す。
各自の役割は、以下の通りです。
【凡例 ◎:推進リーダー ○:推進メンバー】
全員でアイデアを出し合いながら、構築や開発が得意なCLD2が開発を推進し、的確なアンサーで応えることに長けているDEがエントリ項目の執筆を主に担当しました。
このように各自の得意領域を活かしつつ、多角的なアイデアを創出し、アプリケーションの作成から応募まで達成しました。では、我々がどのようにしてアイデア出しを行っていったのかを次の章でご紹介します。
以下の流れで、アイデア出しを進めていきました。
① 時間と1人当たりのアイデア数を決めてブレインストーミングを実施
② 全員のアイデアに対し、それぞれでやりたいアイデアのTOP3に投票
③ 投票数の多いアイデアを残して、再度、各自やりたいアイデアのTOP3に投票
④ アイデアのTOP3が残るまで投票を繰り返す
⑤ TOP3のアイデアに対して、アプリ開発を実行する
ここで、①のブレインストーミングに一番高いハードルがあると思う方が多いのではないでしょうか?
考えれば考えるほど、また、生成AIに詳しくなればなるほど、「本当に作れるのか?」、「既に似たようなサービスがあるのでは?」と考えてしまい、思考が止まってしまうのではないでしょうか?
それではなかなかアイデアが出せず、議論が発展しません。
そこで、我々は以下のポイントに注意しながら、ブレインストーミングを進めていきました。細かいことは気にしないで、まずは面白そう、やってみたいアイデアを出していきました。(これらの注意すべきポイントは生成AIに教えてもらいました。)
★ポイント★
・ 時間、アイデア数については強制し、アイデアの量を確保する
・ 独自性(まだ世にリリースされていないか)について気にしない
・ 実現可能性について気にしない
・ 成功事例を研究し、新たなアイデアに発展させる
・ 既存のものの掛け合わせで、新たなアイデアに発展させる
・ 自分が困った経験やあったらいいな、を言語化する
実際に出てきたアイデアとその投票イメージは以下となります。
アイデアに対する不明点については投票の際に会話で補い合いつつ、検討に対する負荷をかけ過ぎないようにアイデアを出していきました。
【アイデア一覧への投票イメージ】
赤枠内の3つのアイデアに対してアプリ開発を進めていき、最終的には、「遊戯王のようなカード戦略バトル」に注力してハッカソンに提出しました。
3つのアイデアについてアプリ開発を進めた理由としては、当初はPartyRockの仕様に不明点が多かったため、開発を並走しながら、その特徴や実現不可なこと、アプリ構成を考えていく必要があったからです。まず、PartyRockの仕様や実現可能性を理解するために、1つのアイデアへの開発に注力するのではなく、担当者で役割分担をして、各アイデアを簡単なレベルで開発してみることにしました。
その中で、幼き頃の自分たちがカードパックを買ったときに感じていたワクワク感と、生成AIの確率的生成や画像生成がマッチしていると思い、カードバトルを採用して開発を進めることに決めました。
「4コマ漫画生成」や「マーケティング領域(ペルソナを演じてくれるAIと議論)」も開発していて非常に面白いものでしたが、「独自性」や「精度」の観点から開発の優先度を落とすことにしました。今回のハッカソンでは深堀をすることはありませんでしたが、また機会があれば、再度開発に挑戦してみたいと思えるようなアイデアでした!
それでは、我々が実際に開発し、ハッカソンに提出したアイデアの詳細について、次章以降でご説明します。
アプリケーションの動作を以下の動画でまとめましたので、動きを見たい方は是非ご確認ください。
2人のプレイヤーがモンスターカードとサポートカードを用いてカードバトルを行います。プレイヤーはカードにして欲しいモンスターの情報を画面上部の白枠に入力するだけで、自動でモンスターカードとサポートカードを1枚ずつ生成し、バトルを開始します。
モンスターバトルは、サポートカードを駆使してAIが自動で戦略を組みバトルを展開し、決着をつけます。
テキストで表現されたカードの名前や能力のみでなく、画像生成AIを用いて生成されたカードの画像を見ながらバトルを行えるのが本アプリの注目ポイントで、実際にカードゲームを行っているような感覚を味わえます。
【入力画面】
【カード生成画面】
【バトル画面】
まず、プレイヤーが入力したモンスターの情報から、自動でモンスターカードの名前と種類、能力を生成するように設定しました。
次に、その生成されたモンスターカードの名前と種類、能力からそのモンスター画像と、モンスターカードに合ったサポートカードの名前と効果を生成させるように設定しました。
さらに、その生成されたサポートカードの名前と効果から自動でサポートカード画像を生成させるようプロンプトを設定しました。
ここまで来たらカードの準備は完了です。
最後に生成されたカードを用いて、あらかじめ定めていたルール通りにバトルを行わせ、生成AIには実況者になったつもりでカードバトルの実況を行わせました。
今回のアプリ開発にあたり、アプリをより楽しんでもらえるよう以下5点に着目して作成しました。
具体的にどのような課題や特徴があり、どのように工夫をした結果、出力がどのように変わっていったのかを紹介します。
| # | 課題 | 工夫点 |
|---|---|---|
| ① | 単にモンスターの画像を並べただけだと、バトル感がない | バトル実況を中央に配置し、左側のプレイヤーと右側のプレイヤーの対決の臨場感を演出する |
| ② | 戦闘向けのキャラデザインじゃないモンスターが生成される | 「かっこいい」という感情をそのままプロンプトに組み込む |
| ③ | モンスターカードの画像にモンスター以外の要素が生成される | モンスターの種類(犬や猫など)をモンスターカード生成プロンプトに組み込む |
| ④ | モンスターカードに全く関連がないようなサポートカードが生成される | サポートカード生成時に、モンスターカードの画像をプロンプトに組み込む |
| ⑤ | 決着がつかないまま実況が終了してしまうことがある | 必ず決着をつける指示のプロンプトを複数組み込む |
★工夫点①★
Partyrockはコンポ―ネントの配置を自由に定められるため、画面全体で両プレイヤーのカードが見え、バトルの決着がつくまでワクワクする展開になるよう工夫をしました。プレイヤーがモンスターカードの情報を入力したところから、
「モンスターカードの情報→モンスターカードの画像→サポートカードの情報→サポートカードの画像→バトル実況」と各フェーズで順番に生成結果を出力するようにすることで、プレイヤーが1つずつ情報を追い最後まで楽しめるように設定しました。
また、各コンポーネントの配置にも気を配り、プレイヤー1の情報が左側、プレイヤー2の情報が右側、両社のバトル実況がその中央に来るように配置をし、各プレイヤーで戦っている光景は見せつつも、わかりやすく結果が生成されるよう工夫を加えました。
★工夫点②★
カードバトルに少しでも迫力を加えるため、モンスターカード生成の際には「A cool name(かっこいい名前)」といった生成結果を最大化できるようなプロンプトを一言付け加える工夫をしました。
そうすると強そうに見えないモンスター画像が生成される回数が減り、プレイヤーがワクワクするような迫力のあるカードバトルを繰り広げられるようになりました。
【(例)シンプルなプロンプトの場合のモンスター画像】
【(例)プロンプトに「A cool name(かっこいい名前)」を付け足した場合のモンスター画像】
★工夫点③★
かっこいいモンスター名を基にかっこいいモンスターを生成させるため、生成したモンスター名を引用してモンスターカードの画像を生成するように設定しました。そうすると、入力と関連性のない要素が生成されてしまうことが多発しました。下記の画像では、犬のモンスターを生成させるはずが、犬の他に人間2人が生成されてしまっています。生成される画像の傾向から、かっこいい名前を生成するためについている形容詞や名詞により、モンスター以外の要素を生成している可能性が高いと推察しました。そこで、モンスター名の出力時に、モンスターの種類(犬や猫など)を出力させるように設定したところ、プレイヤーがインプットしたモンスターが単体で生成させることができるようになりました。
【(例)引用先がモンスター名のみの場合のモンスター画像】
【(例)引用先がモンスター名・モンスターの種類の場合のモンスター画像】
★工夫点④★
サポートカードを生成する際、サポートカード名と効果を生成し、その2つを基にサポートカードの画像を生成させました。この場合、モンスターカードの画像とはテイストの異なるサポートカードの画像が生成されてしまいました。カードバトルを行うのであれば、サポートカードはモンスターカードを強化する能力を持つべきであり、サポートカードの画像からモンスターカードの強化される姿をイメージできるようにする方がゲームとして面白いと考えました。そこで、サポートカードの画像生成の際、既に生成済みのモンスターカードの画像をプロンプトに組み込むと、モンスターカードと似たテイストのサポートカードを生成させることができ、サポートカードのワクワク感が増しました。
【(例)モンスターカードの画像を引用していない場合のモンスターカードとサポートカード】
【(例)モンスターカードの画像を引用した場合のモンスターカードとサポートカード】
★工夫点⑤★
最後にバトルフェーズでは、2人のプレイヤーがモンスターカードとサポートカードを駆使してバトルをするのですが、勝敗がつかずに終了してしまうケースが多発しました。そこで、プロンプトに「必ず決着はつく」という文言を追加しましたが、それでも決着がつかないケースがは解決されませんでした。そこで、実況者が実況しているという前提条件から着想し、「必ず決着はつく」の他に「あなたは必ず勝者を称えなくてはならない」と更なる決着に関わる文言をプロンプトに追加しました。その結果、毎回バトルの決着がつくようになりました。
【(例)決着についてプロンプトで言及しない場合のバトル実況】
【(例)「必ず決着はつく」というプロンプトを入力した場合のバトル実況】
【(例)「必ず決着はつく」「あなたは必ず勝者を称えなくてはならない」というプロンプトを入力した場合のバトル実況】
いかがでしたか?生成AIを活用したアプリ開発も意外と難しくなさそうに感じられたかと思います。
普段クラウドインフラ提供を生業としている我々にとって、アプリ開発は新鮮で非常に楽しいものでした。
そんな私たちが作成したアプリを是非体験してみてください。
Partyrockはアプリ自体もアイディアが決まってからは約1週間、10時間程度で作成でき、Partyrockは手軽に複雑なアプリが作れる便利なツールでした。
アプリ構築から1カ月程してもう一度アプリを動かすと、モンスターカードとサポートカードの画像の関連性が向上していたり、途中の出力のみを再出力できるようになったりと短期間で機能や精度の向上が早いこともPartyrockの魅力の1つです。
一方で、LLMが極度に争いを拒むようになり今までは出力されていた実況が出力されなくなってしまうなど課題もあり、これからの機能向上にも期待していきたいです。
ハッカソンに取り組む中で技術的に実現が難しいことや気を付けなければいけないことに気づくことができ、最先端技術をしっかりと追い続けるためには、このように楽しみながら自身たちで手を動かすことが重要であることを再認識することができました。
ご興味を持たれた方は、是非PartyRockを触ってみてください。
またチームでハッカソンに参加することがあれば、本記事の進め方を参考にしていただければと思います。
ソフトバンクはAWS アドバンストティアサービスパートナーです。「はじめてのAWS導入」から大規模なサービス基盤や基幹システムの構築まで、お客さまのご要望にあわせて最適なAWS環境の導入を支援します。
Microsoft Azureは、Microsoftが提供するパブリッククラウドプラットフォームです。コンピューティングからデータ保存、アプリケーションなどのリソースを、必要な時に必要な量だけ従量課金で利用することができます。
Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。
Alibaba Cloudは中国国内でのクラウド利用はもちろん、日本-中国間のネットワークの不安定さの解消、中国サイバーセキュリティ法への対策など、中国進出に際する課題を解消できるパブリッククラウドサービスです。
MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。
条件に該当するページがございません