ホーム ブログ ページ 4

2023年度オンラインゲームセグメント新卒研修を行いました!

0

前年度に引き続き、オンラインゲームセグメントでは昨年の新卒である22卒が新卒研修の計画を立て実施しました。
時に部長にチェックしてもらいながら計画し、4~6月頭にかけて無事実施しました!
今年で2回目の試みであるオンラインゲームセグメント新卒研修(以下OG新卒研修)についてご紹介します。

今年は何をやったの?

今年の研修は大きく分けて3つのパートで計画しました。

①交流

②ゲーム分析

③ゲーム企画書

それぞれの概要を簡単に書き出すと下記みたいな感じです。(写真でも撮ればよかったのですが、すっかり失念していてイメージ図でお送りします…!)

①交流編

テーマ「同期と仲良くなる『きっかけ』にしよう!」

ただの差し障りの無い自己紹介よりも、その人の趣味もセットで語ってもらうとか、一緒にゲームしたりする方がよっぽど印象に残るよね~をベースに企画しました。実際にやったのはこの6つ。

・偏愛マップ                                                                     好きなものを図にまとめて、それを会話デッキに会話してもらいました。

・Good&New

・共通探しゲーム                                                                            4人くらいのグループでより詳細まで一致する共通点を探してもらいました。

・オンリーワン                                                                                               これは自分だけにしかないエピソード/特技etc.だろう、というのを発表してもらいました。

・ボードゲーム

・ゲーム布教                                                                                                   4人くらいのグループで好きなゲームを布教しあってもらいました。

②ゲーム分析

テーマ「売れているゲームからゲームについて考えてみよう」

1グループあたり5~6人のグループワークで行いました。ゲームのセールスランキング50位の中から1つタイトルを選んで、どういう仕組みかのゲームになっているか分析してもらいました。                                                             ただ「このゲームが面白いから」だけではなく、「こういう工夫/やり方をしているから、それが売り上げにつながっている」という会社におけるゲーム開発/運営について考えてみてほしいという思いからマネタイズも分析してね、と条件に入れた上で分析してもらいました。

分析結果は発表してもらい、今年はなんと22卒に加え、部長陣からフィードバックを出してもらいました!

③ゲーム企画書

テーマ「売れるゲームを考えてみよう」

分析と続いて売る売る言っているので若干拝金主義に見えなくもないですが、会社でゲームを作って運営するのって従業員にお給料を払わないといけません。どうしても売上と切っても切れない関係なんですよね。面白いと思ってプレイしてたゲームがサービス終了しちゃった経験がある人も少なくないと思います。

というわけで、長く運営していくなら売上も考えないといけないし、そもそも売れなさそうってゲームを開発するわけにもいかないので、面白さだけじゃなくて会社で作って運営できるゲーム企画を考えてもらいました。

条件は弊社で開発運営できるゲームで、IPは自社IPか新規のみ。就活用に書く企画書はAAAタイトル※チックなのが多いと思いますが、今回は現実的に実現可能な予算内で面白く売れそうなゲームを提案してもらいました。

分析同様、出来上がった企画は発表してもらい、22卒に加え部長陣からフィードバックを出してもらいました!

※AAAタイトル:すごくお金をかけて作られた超豪華なゲーム。最近の相場は普通のソシャゲで数億くらいの開発費であることを考えると…大変ハイリスク。

実際に作ってもらった企画書をご紹介!

1班-式姫札遊記(シキヒメフダユウキ)

式姫ちゃんアバターでお手軽に遊べる!花札/大富豪などのゲーム集合アプリ。                                                               現在絶賛開発中の式姫新作ゲームの周年記念でのリリースを想定してくれました。

2班-鉄蒸妖姫-てつじょうようき-

「スチームパンク×妖怪美少女」のニッチなテーマで差をつける!                                                                              陣形や合体技で奥が深い2Dオートバトルゲーム。

3班-Systemβ-Type.psy

世界を支配するAIに反逆する!                                                                                            超能力者と共に戦うコマンドバトル近未来ファンタジー。

4班-Grief Dolls

スチームパンクの世界を舞台に、不完全な機械人形たちの感情を育てて戦う。                                                                                 育成シミュレーション×横スクロールアクション。

5班-配信ヒーローズ(仮)

ヒーロー兼配信者のキャラクターが先頭を配信しながら活躍する。                                                                                   雑魚を一掃する無双系ターン制コマンドバトル。

6班-ロストコード

AIに支配された仮想世界で生きる主人公が、脱出するために童謡(ロストコード)を集めて戦う。                                                           童謡のアレンジ楽曲を使用したり戦略的リズムRPG。

7班-ウェザーアップ!

ストーリーとコンテンツ量で既存タイトルと差をつけるクリッカー×美少女ゲーム。                                                                        クリッカーの中でも、よりカジュアルな遊び心地に。

新卒研修のプロデュースのこと

今年は上記のような内容で新卒研修を実施しました。

今年は2回目だし楽勝?と思いきや、今年は今年で紆余曲折有りました。へへ…

ーー去年と違って、今年は”研修を受けたことがある”新卒たちが企画することになりましたが、どうでしたか?

自分たちが受けた研修が良かった分、それだけのクオリティを出せるのか?!プレッシャーもありましたが、研修を受けて出た感想から考えられたこともあります。

ーーと、いうと?

去年の経験が反映された最たるところは分析/企画の部長からのフィードバックでしょうか。                                                 去年の技術系の研修は分析とアナログゲーム企画でしたが、分析のみ21卒の先輩から厳しめのフィードバックを後々文面でいただいて、もっとキツくダメ出ししてくれてもいいのに…とか、アナログゲームも批評欲しいな…と思ったりしました。                                             これ、やる側になるとわかるんですが、きちんと適切なダメ出しするのって難しいし勇気も労力も結構要るんですよね。しかも自分たちも入って1年くらいだし、視野がまだまだ狭い自覚もある。それで必ずしも正しいフィードバックを出せるかといえば保証はないですよね。                                 その点部長陣は大ベテランで、そもそも判断する側にいる人たちなわけだから、23卒の成長を考えると頼まない手はないと思いました。

ということでお願したら快諾していただき、部長のフィードバックを組み込めました。サイクルではないけどPDCA的にすごい力になったんじゃないかなと思います。側から聞いていた22卒の自分ですら「ウワー!そんなん考えてなかったわ…」と反省のオンパレードでしたし。                                企画書を書く機会はそんなにないかもしれませんが、これで得られた視野とか経験とかを活かせる場面は多いんじゃないかなと思います。

ーーそういえば去年はアナログゲーム作成でしたが、今年はゲーム企画書ですね?

概要でも軽く触れましたが、面白ければそれでよかった学生感覚から一歩進んで、会社として利益を出すことを意識できるようになってほしい。自分のところだけじゃなくて、全体を見渡せるようになってほしい。という思惑がありました。                                            自分の目の前の作業をこなしていればいいや~って感覚の人も少なくないと思いますが、それじゃダメなんですよね。今はそれでもいいかもしれないけれど、今後リーダーとかになって、プロジェクトの主要メンバーになったときに、絶対に必要な意識だと思います。アルバイトじゃなくて、社員として雇われるってそういうことだと考えました。

というわけで、何かしら企業利益とか視野を広げるような何かに挑戦してもらいたくて、どうするのが最適か考えてみました。去年同様アナログゲームを作る案もありましたが、「アナログゲームで利益出すことを考えるの難しすぎでは?利益出せる未来が想像できない」「扱っている商材が違いすぎてやっても経験としてしょっぱくないか?」「それなら順当にゲーム企画書が直接的に力になりそう」といった感じで企画書に落ち着きました。

~23新卒の方へメッセージ~

いろんな人に言われてると思いますが、新卒同期は一生に一度です!                                        想像していたゲーム業界とのギャップや、実力をつけて任せられる仕事が増えて忙しくなったりと楽しいばかりの世界ではないかもしれませんが、同期と乗り越えていってほしいです!来年の新卒研修はこのままいくと23卒が企画することになるのかな?                           今回研修を受けて、酸いも甘いも感じたものがあると思います。是非自分たちのその感覚を活かして研修をパワーアップしてください!

~24新卒の就活生の方へメッセージ~

もしアピリッツとご縁があってオンラインゲームセグメントに配属となったら、23新卒プロデュースの新卒研修を受けることになるかもしれません。きっと僕たちの代が考えたものよりパワーアップしているに違いないので、楽しみにしてくださいね! 

まずはご応募お待ちしております!

ハイレベルな発表が続々!23新卒Webエンジニア研修「ミニプロ」発表会

0

今年もWebソリューションセグメントに入社した22名の新卒エンジニアがミニプロジェクト(通称「ミニプロ」)に取り組みました。
7チームに分かれて、2~3週間という短い期間の中、先輩から手助けしてもらいながらも自分たちだけで開発を行いました。
今回はいくつかのテーマの中から自分たちで選択し、設計・開発をしていく流れです。
今年で3年目のミニプロ。その発表会に潜入してきました!(2023年6月 取材)

開始時刻までの緊張感・・・

開始直前の会場の様子はやはり全員緊張している様子。部長陣やサポートしてくれたメンターの先輩方が続々と会場に入ってきて緊張はピークに・・・。

そんな中でもこれまで自分たちが頑張ってきたことを信じ、最後の最後まで確認をしているチームが多く見受けられました。

開始前の最終確認を仲間同士で行う。。がんばれ!

交通費の申請フォームを選択したチームが一番多かった

今年はテーマをいくつか出され、その中から選択していく流れですが、交通費申請フォームを開発したチームが圧倒的に多くありました。実際に自分たちが利用している中で不便さを感じる部分があり、改良すべき点があったことから選んだチームが多かったようです。

今年は人数が多い+チーム数も多いことから各チームの持ち時間は質疑応答の3分を含め計10分での発表時間となります。この短い時間の中で機能説明や工夫した点、大変だった点など交えてデモンストレーションを行いました。

どのチームもとにかくレベルが高い!!

Eチームでは、入社してすぐに行った人事研修での話を課題として取り入れていて、開発部門長の鈴木部長から「かしこい!」との高評価!誰もが見落としてしまいがちな何気ない話をしっかり覚えていて参考にすることができるのは素晴らしい!

頑張って準備してきたものを発表中

一番大変だったことは?

どのチームでも一番多かったのが「スケジュール管理」

タスクの割り振りも考えて決められた期限内に完成させる…実際のプロジェクトも同様の流れで進んでいるため、より実務に近い経験ができたのではないでしょうか。

中には「タスクの割り振りが偏ってしまい、結果として一人に負担がかかってしまった」との反省点を挙げているチームも。

鋭い質問が続々と!!

各グループの質疑応答の際には「まさかそんなところ突っ込まれるとは…!」と思うような鋭い指摘が!

内容についてはもちろん、発表資料の文字のフォントや日英表記に統一がないのは何か意図があるの?といった質問に対しては、「…今気づきました。」との回答(笑)

Dチームの発表では、デモンストレーションの中で人の名前を数名表示していたのですが、そこに対して剣持部長が「この名前はランダムで?」という質問を。人名をランダムで出してくれるものがあるようでそれを活用したと回答したところ、「いや~僕の嫁さんの名前(旧姓)が入ってたからちょっとびっくりしてw」  !? なんという偶然!笑 まさか剣持部長の奥様の名前が入っているなんて!こんなほっこり場面もありました(笑)

部長陣からのお言葉

無事全グループの発表が終わり、最後は部長陣から一言ずつ。

「チームワークという観点から見させてもらったが、それぞれの色があって素晴らしかった。

「完成度がすごい。次はもう少し精度を上げて挑戦していってほしい。」

「どれも素晴らしく実際に使ってみたいと思った。」

「プレゼン資料の独自さ、試行錯誤されていて素晴らしかった。」

「毎年見ているが、今年はテーマを自分たちで選ぶ方式。唯一Aチームが難しめのテーマを選択。すごい。

「制作期間から様子を見ていたが、チームを超えて相談していたのが印象的でチーム関係なく助け合いできていたのが素晴らしい。」

「このミニプロという経験をひとつの成功体験として強く心に刻んでこれからも頑張ってほしい。細かい指摘もしたが、これからの実際の業務ではプロとして細かい部分も重要になってくる。『美は細部に宿る』を意識して取り組んでほしい。

後日行われた結果発表・表彰式

各チームの発表内容を部長陣が評価・採点し、後日表彰式が行われました。

今年はなんとトップ2に選ばれたチームには高級焼肉のご褒美が!!

まず、部長陣からの総評として、「本当に全チームの一人ひとりが非常に頑張ったことが分かる発表会で素晴らしかった」「各々悔しい部分もあったかもしれないけれど、そこに関しては今後の糧にして頑張ってほしい。短い期間の中でやり遂げたことを誇りに思って。本当にお疲れさまでした」とお褒めの言葉、労りの言葉をいただきました。

さて!お待ちかね上位2チームの発表です!

第2位!Aチーム!!!

・発表までの段取りが良く、準備ができていた。

・開発系のドキュメントをお題に出していないけど、プロジェクト全体を考えていた。

・機能全体が非常によくできていた。

・他チームが選ばなかったテーマを唯一選んでいて挑戦するというアニマルスピリッツを感じた。

本人たちからのコメントも。

(中尾)テーマを選んだ当初は難しくて大変だったけど、チーム内でたくさん話し合って進めることができた。2位という評価本当にうれしい。

(池本)難しい課題だったから完成するか不安だったけど無事完成できて良かった。

(渡邊)難しいと分かっていながら挑戦できるという経験は今後の大きな力になると思う。

そして第1位に輝いたのは・・・!Eチーム!!!

・課題書に書かれていなかったことを実際に開発に盛り込めていたのがすごい。

・顧客志向性が非常に高い。

・プロジェクト全体の品質が高かった。プロジェクトのマネジメントがしっかりできていた。

お客様がもっとも満足してくれる内容だった。

(平)とにかく楽しかった。企画書を吉岡くんが作り込んでくれたのが大きかった。話し合いの中でも意見をまとめつつしっかりした設計ができたのが良かった。スムーズに進めることができた。

(山下)1位という評価本当にうれしい。自分は何も分からない中でのスタートだったけど、チームのメンバーをはじめ、周りの同期に助けてもらいながら進められた。これからもっと頑張って今度は自分が助ける側になりたい。

(吉岡)チーム内で頻繁に話し合うことが成功につながった。焼肉楽しみ。

(根間)得意なこと、好きなことが4人とも異なる中でコミュニケーションを密に取りつつ、それぞれの良さを出せた。良い経験になった。

見事一位に輝いたEチームは一位らしく1のポーズで!!かっけえ
こちらは見事二位に輝いたAチーム!二位のダブルピース最高

Aチーム、Eチーム本当におめでとう!!美味しい焼肉を楽しんで!

他のチームの評価も高く、接戦になっていたとの話もあり、本当にみんな頑張りました!

このミニプロは来年ももちろん実施する予定。研修とはいえ、より実務に近い流れで進めていくことは新卒のみんなにとってきっと素晴らしい経験になると思います。

これからもアピリッツの戦力として頑張っていってほしいです!

UnityエンジニアのためのChatGPT活用法と回答例

0

アピリッツの知識共有サイト「ナレッジベース」で公開されている内容をアピスピでも紹介します。こちらは、エンジニアとして活躍している伊藤駿一さんによる記事です。

皆さんこんにちは、エンジニアの伊藤です。

現在私は、新規開発プロジェクトで、ローカライズ担当エンジニアとして業務をしています。

ところで皆さん、最近話題のChatGPT使用していますか?

わたしは有料版で使用できるChatGPT4を試したところ、もうChatGPT無しでは仕事できない身体になってしまいました。

ということで今回は、自分が業務の中でChatGPTをどんな風に活用しているのか、質問例実際の回答例を含めて紹介していきたいと思います。

ぜひ、最後までご覧ください!

 

UnityエンジニアのためのChatGPTの活用法

 

実装相談

Unityの開発に関する疑問や問題点に対して、アイデアや解決策を提案してもらうことができます。

質問例1

Q: メモリリークを防ぐためにリストを効率的に管理する方法はありますか?

A: リストのサイズを制限し、一定のサイズを超えたら古いデータを削除するようにしてください。また、必要に応じてリストをクリアできるようにすることで、メモリリークを防止できます。

質問例2

Q: Unityでキャラクターがジャンプするアニメーションを実装するにはどのようにすべきですか?

A: キャラクターのアニメーターコントローラーにジャンプアニメーションを追加し、適切なトリガーを設定してください。スクリプト内でそのトリガーを呼び出すことで、キャラクターがジャンプするアニメーションが再生されます。

このように、ChatGPTはUnityエンジニアが抱える実装上の問題や疑問に対して、アドバイスや解決策を提供するのに役立ちます。具体的な質問を投げかけることで、技術的な知見や、実践的なソリューションを得ることができ、エンジニアの効率や開発速度が向上します。

 

コード提供

具体的な実装やコード例を提供してもらうことができます。

質問例1

Q: シングルトンパターンを実装するにはどのようにすべきですか?

A: 次のようなシングルトンパターンの実装を参考にしてください。

ChatGPTが実際に回答したもの

質問例2

Q: ゲームオブジェクトをプールして効率的に再利用する方法はありますか?

A: オブジェクトプールを実装することで、ゲームオブジェクトを効率的に再利用できます。

以下にオブジェクトプールの簡単な実装例を示します。

ChatGPTの実際の回答例

このように、ChatGPTはUnityエンジニアが求めるコード例や、スニペットを提供するのに役立ちます。特定の機能やアルゴリズムに関する質問を投げかけることで実装の参考となるコードを得ることができ、開発作業をスムーズに進めることができます。

 

コードレビュー

ChatGPTは、Unityエンジニアが書いたコードに対してレビューや改善提案を行うのに役立ちます。コードの最適化や、潜在的な問題点を見つけ出すことができるため、エンジニアのスキル向上や、コード品質の向上に寄与します。具体的な質問を投げかけることで、コードに関するアドバイス等を得ることができます。

質問例1

Q: このコードに改善点や問題があれば教えてください。

実際にだしたコード例

A: このコードはプレイヤーの移動を制御するものですが、いくつかの改善点があります。

  1. Update()内でRigidbodyに力を加えていますが、物理ベースの移動はFixedUpdate()内で行うべきです。これにより、フレームレートに依存しない安定した動作が期待できます。
  2. 入力に対して正規化を行うことで、斜め移動時の速度が増加しないようにすることができます。

改善後のコードは以下の通りです。

ChatGPTによる改善後のコード例

質問例2

Q: 次のコードでパフォーマンスの問題があれば指摘してください。

実際にだしたコード例

A: このコードは敵のスポーン処理を行っていますが、Instantiate()関数を使っているため、大量の敵がスポーンされるとパフォーマンスに影響が出る可能性があります。オブジェクトプールを使って敵のインスタンスを再利用することで、パフォーマンスの問題を軽減できます。

オブジェクトプールを実装したEnemySpawnerのコード例は以下の通りです。

ChatGPTによる実際の回答例

この実装では、poolSizeで指定された数だけ敵のプレファブを事前に生成し、リストに格納しておきます。Spawn()メソッドで敵が必要になる度に、リスト内の非アクティブな敵オブジェクトをアクティブにして利用します。これにより、敵の生成時のパフォーマンスの問題が軽減されます。

このように、ChatGPTはUnityエンジニアが提出したコードに対して、フィードバックや改善提案を行うのに役立ちます。コードの可読性や効率性に関する質問を投げかけることで、コードの品質を向上させるアドバイスを得ることができ、プロジェクト全体の品質向上に貢献します。

 

まとめ

この記事では、UnityエンジニアのためのChatGPTの活用法として『実装相談』『コード提供』『コードレビュー』の3つの項目を取り上げました。これらの活用法をうまく使うことで、エンジニアはより効率的に開発を進めることができ、プロジェクト全体の品質や速度を向上させることが可能です。ChatGPTを日々の開発作業に取り入れることで、Unityエンジニアは新たな知見を得ることができ、業務の幅も広がるでしょう。今後もさまざまなシーンでChatGPTを活用し、エンジニアの働き方をより効果的で効率的なものにしていきましょう。

 

実は。。。

ここまで読んでくださってありがとうございます。

実はこの記事、

 

 

 

 

 

 

 

 

 

 

『ChatGPT』で作成した記事です!!

※多少の修正は加えていますが、大部分はChatGPTによって作成されています。

自分はChatGPTに以下のような指令を送りました。

伊藤さんが実際にChatGPTに送った指示例

これで文章を作成した後、「各項目ごとのまとめの文」「記事全体のまとめ文」が欲しいなと思ったので次のような指令を出しました。

これで作成されたのが今回の記事になります。

おもしれー

「ユーザー、クライアント、版元、みんなからの信頼を得る」片木 大輔インタビュー

0

目次

アピリッツのコンテンツデザイン部で受託運営タイトルのディレクターを務める部長の片木は、「あまりにゲームのことばっかり話すからゲームをつくる人になったら?」と友人に言われてゲーム業界に入った人物です。キャリアチェンジのいきさつや、ソーシャルゲーム運営で大切にしていることを聞きました。(取材 2023年4月)

もともとはシステム系の商社にいました

―― 片木さんは最初からゲーム業界にいたわけじゃないんですよね?

大学を出て最初に就職したのは、システム系商社のカスタマーサポート部でした。お客様のところに訪問して、メンテや営業をするんです。なのでゲームとは無関係の仕事でした。

―― そこからどうしてゲーム業界に入ったのですか?

仕事を始めて5年目あたりで管理職を打診されて、そこで「このままずっとこの仕事を続けててよいのだろうか」と思いました。ちょうどその頃に友達から「ずっとゲームの話ばっかりしてるよね。だったらゲーム作る仕事やったら?」と言われて、そこでやっと「なるほどな」と思いました。

 

卒業率46%のゲーム専門学校に入る

―― ゲーム業界にはどうやって転職しましたか?

まずは専門学校に入ることにしました。とはいえ、専門学校に入っただけでゲーム業界に行けるとは思っていなかったので、なるべく厳し目のところを選びました。卒業率100%で就職率が高いと謳っていても、フタを開けてみたら「ゲームを作る仕事」ではなかったりする専門学校は残念ながら存在します。

なので、ある学校説明会で校長が「うちは厳しい。卒業率も46%だ」と話しているのを聞いて、「ここだ」と入学を決めました。

卒業後はゲームリパブリックという会社に入り、プレイステーション3のいくつかのタイトルでグラフィックプログラマーとして働きました。5年ほどそこで働いて、何社かを経て、ソーシャルゲーム業界に進みました。エンジニアをやりつつ、企画やディレクションの仕事もするようになって、今に至ります。

―― アピリッツではどんなことをしていますか?

タイトル名は明かせないのですが、ある大型タイトルの受託運営のディレクターをやっています。

 

クライアントやユーザーにどうやって満足してもらうか

―― アピリッツに入社した頃はどんなことを考えていましたか?

入社直後は、「自分がどうやって活躍できるか、どういうものをユーザーに提供していけるか」というようなことを考えていたと思います。それまでのキャリアと大きく変わることはないと思っていましたが、何ができるのかなと楽しみでしたね。

受託開発に関わるようになってからは、「どうやってみんなに活躍してもらうか」「クライアントやユーザーにどうやって満足してもらえるか」を考えつつ、「アピリッツとしてどうやって仕事をするべきか」というような、自分中心ではない視点が増えたと思います。

 

「アピリッツのあのチームに任せたら大丈夫」と思ってもらう

―― 今の部署では、おもに受託運営の仕事をしています。プロジェクトを進めるうえで、大事にしている目標や、その目標を達成するために実践していることを教えてください

私たちのチームは、クライアント様のタイトルを運営しています。でも、「自分たちのタイトルを運営している」という認識をしっかり持って、取り組んでいます。

今の目標は、もちろん、新たなタイトルの新規開発から運営をアピリッツとして任せてもらう、ということです。

ユーザー、クライアント様、そして版元様にも満足してもらって、「アピリッツのあのチームに任せれば大丈夫だ」というところまで持っていきたいです。

 

やっぱり北欧神話が好き

―― ある部長によると「片木さんと立ち話を始めるとおもしろくてとまらないんだよ」とのことですが、おしゃべり好きなんですか?

どうでしょう(笑)基本的にはおとなしい性格のはずなのですが、スイッチが入るとしゃべり続けることはあるような気はしています。あと、筋道立てて細かく話すことが好きですね。

雑談好きの片木さん。これは「かつてのゲーム開発ではROMに焼く作業があってデータを作るときに工夫が必要で……」という話をしているところ

―― 雑談とも関係することですが、ゲームを作る上での「引き出し」は、どんなふうに増やしてきましたか?

やっぱりゲームが好きなので、そこからの情報が多いです。

その中でも中学生時代に友達のなかで流行ったTRPGには一番影響を受けていると思います。

T&T、D&D、ソードワールドRPG、ルーンクエスト、クトゥルフなど広く浅く遊びました。当時はお金もなくて、みんなで順番にシナリオを作って持ち寄って遊んでました。誰かが良いシナリオを創ると悔しいので、次はそれに負けないシナリオを創って……。というような感じでみんなでそれぞれの世界を創生してましたね。

そのための設定を創るために神話調べたりもしていましたので、その辺りが自分の基礎を作ってるのかなと思います。

―― どの神話が好きですか?

北欧神話です。ゲーム業界で一番人気なんじゃないでしょうか。

―― なんで北欧神話が人気なのでしょう?

おそらくこれまでの超有名なゲームタイトルに出てくるいろんな単語が、北欧神話をモチーフとしているからじゃないでしょうか。ファミコン時代からそういう文化があります。

「オーディン」といったらみんな「あーはいはい」とわかる。「エクスカリバー」より「グングニル」のほうがグッとくるというか。

あと、北欧神話は程よいサイズ感だと思います。たとえばギリシャ神話や日本の神話だと「まずXXをして、それからXXがあって……」と、幅広く、いろいろありすぎる。個々のエピソードは面白いんですけどね。北欧神話はストーリーもわかりやすいですし、とっつきやすい印象があります。

―― なるほど。こういう感じで雑談が止まらないんですね

そうですね(笑)

 

ユーザーからのネガティブな反応をどう受け止める?

―― どんなふうに部署のメンバーを引っ張っていきたいですか?

「やっぱりゲームは楽しい」と思えることが一番大切だと思っていますので、「ゲームを作ることは楽しいんだよ」ということを伝えながら、一緒に楽しく作っていきたいです。

「ゲームを作る」と「ゲームで遊ぶ」は違うものです。

ゲーム業界を志望する人は、たいていゲームで遊ぶことが好きなんですよ。例外もあるかもしれませんが、「ゲームで遊んだときの感動を自分でも生み出したい」って考えてアピリッツに来てくれる人は大勢います。その人達に楽しんでもらいたいです。

特に、ソーシャルゲームはユーザーとの距離が近いです。たとえばコンシューマーゲームだと、物理的なソフトだけをリリースしていた時代は、ユーザーからの反応ってすごくわかりづらかったんです。リリースしてちょっとしてから、文句だけが匿名掲示板に書かれる(笑)

これに対してソーシャルゲームはリリースしてすぐポジティブな感想をもらえます。

―― ポジティブじゃない感想も来ちゃいますか……?

来ます! でも、ネガティブな感想も、視点を変えれば「そのゲームに興味を持ってくれている」ことですし、ヒントももらえるんです。

去年、頑張って開発した新機能に厳しいご意見が多かったんです。どうしてもそういった意見って目につくんですよね、なのでせっかく頑張ったのに……って作った本人たちは当然落ち込むのですが、「でも本当におもしろくなかったら、何も書かれないよ」ってはげましました。「その人なりに、そのゲームのことは好きでいてくれているのだ、だからこそ書いてくれているんだ」って。

―― 「好き」の反対は「嫌い」じゃなくて「無関心」ですもんね

だから無反応が一番怖いですね。文句を言う人がいなくなったときが本当のピンチだと思います。

例えば、ゲームを盛り上げるために生放送をすると、ずーっとマイナスのコメントを書いてくださる方もいらっしゃるんです。「運営に刺さる言葉をおっしゃりたいのかな。何かのメッセージなのかもしれない」と受け取るようにしています。

―― 強いですね。

そりゃもちろん最初は疲れますし、落ち込むこともあります。でも、無反応よりずっといい。

これからゲーム業界を目指す方には、「あのゲームのあの機能、惜しいよね!つまんないよね!」って話すときの方が妙に熱く盛り上がることを思い出してほしいです。文句を言い合ってる方が楽しいときだってあるんです。

だから、作り手側にまわったときに「文句ばかり言われてる、ああこのゲームはダメなんだ」って落ち込まないほうがいいですよ。マイナスに受け取らないほうがいいです!

―― 前向き! ありがとうございました!

健康相談窓口っていうのができたらしい

0

あたたかくなってきたので、ちょっと薄着になってきましたね。

そこで、気づいてしまった。
鏡にうつった自分をみて、気づいてしまったのです。

んんんん、なんか少し丸くなってきたんじゃないかしら、私のフォルム。
病気じゃないとは思うんだが、太りすぎなんじゃ・・・・


そんな心配をしていたところに、お知らせが

健康相談窓口の開設につきまして

アピリッツでは、みなさんの健康管理のため、専門の保健師に電話やメールで相談できる窓口を設置いたしました。
こちらは産業医契約をしている団体で運用されており、会社を通さず相談をすることが可能です。
持病や健康診断結果についての相談はもちろん、職場での人間関係やメンタルヘルス系の相談も可能です。

おー、匿名で小さなことから相談できるっぽい。

というわけで、さっそく使ってみました。

アピリッツの社員専用メールアドレスで最近ちょっと太ってきて気にしていますという内容の相談をしてみました。

すぐに返事がきた!

翌営業日には保健師さんからお返事がきました。

内容は完結にいうと

・BMI上肥満ではないからそんなに気にしないで

・ただこのまま体重増加していくと健康リスクも上がってしまうから気をつけましょう。

・心身の余裕がないときは無理にダイエットするとイライラしてストレスがたまるかも。

・筋トレや運動ができないときは、ストレッチをしたりビールが好きとのことですが、カロリーオフやノンアルコールを選んでみるのもよいと思います。

というような内容が送られてきました。
早い、優しい、無料、相談した秘密を守ってくれる(ブログに書いてますけど^^;)

どうしてこの制度ができたのか聞いてみました

そもそもアピリッツでは働く人のキャリア形成や、人生を豊かにするような取り組みを行っています。

アピリッツで働く人は、継続的にスキルを高め、気持ちよく活躍できるように、評価制度の改定資格支援制度導入などを行ってきました。

また、特にパフォーマンスを高めるためには心身ともに健康であるべきと考えています。

この相談窓口の設置は、会社や担当者を介すことなく、小さな悩みから気軽に相談ができます。 病気になる前に誰にも知られずに相談ができるところがポイントです。

たくさんの社員に利用してもらい、より健康で楽しく働いてほしいです。

なるほど!一生懸命働いてもらうために、健康大事にしてねってことだったんですね!(なんかちょっと違うかもしんないけど)

アピリッツではアピカフェや懇親会などの会社が楽しくなる制度もたくさんあります。

これからもいろいろな制度ができていくと思うと楽しみですね。

AWS LambdaのFunctionURLsでRedmineAPIを利用した話

0

はじめに

最近オートミール食のレパートリーが増えてきました。ゲームデザイン(GD)部クライアントエンジニアの中村です。

我々GD部ではプロジェクトのタスク管理にRedmineを利用しています。Redmineのタスクチケットは基本的にPM職が管理しており、CSVファイルから一括でインポートする機能がよく使われています。この機能はチケットの一括新規作成が可能ですが、一括更新には利用できませんでした。そこでこの度、CSVファイルを読み込み一括で更新する機能をPythonスクリプトで作成することとなりました。

制約

今回作成する「Redmine一括更新withCSV(仮称)」は以下の制約を課しました。

  1. 基本的にPM職が利用するものである
  2. WindowsやMacなどのプラットフォームに依存しない
  3. 低コスト

1については、利用者のPCにスクリプト実行環境を整えなければいけないという点で大きなハードルとなります。2については、プロジェクトごとにMac派とWindows派が別れているため必須要件となります。3については言わずもがな。

技術選定

これらの制約を考慮して、以下の3パターンを考えました。

  • AWS ChatbotとSlackを連携
  • botkitとSlackを連携
  • Lambda Function URLsをブラウザから実行

AWS ChatbotとSlackを連携

AWS Chatbotを利用するとSlackからaws-cliのコマンドを実行できます。そのため、Slackワークスペースから必要情報を入力するだけでLambda Invokeができるのではと考えました。

しかし、CSVファイルをアップロードしなければならないという点で問題がありました

  • Slackワークスペースにファイルアップロードができない
  • AWS ChatbotのcliではLambdaにファイル指定できるのはjsonだけ
  • AWS ChatbotのcliではS3にファイルアップロードできない

以上よりボツとなります。

botkitとSlackを連携

botkitはnodejsで記述するSlackのチャットボットです。Slackに送信したメッセージに反応し、そのメッセージに対する何らかの処理を実行することができます。そのため、SlackにCSVファイルをアップロードしたら自動でRedmineAPIを実行し更新させることができます。

しかしながらこの案ではbotkitをデーモン化して維持するためのサーバーリソースが必要となるため、コストの面でボツとなりました。(あと単純にAWSサービスを使いたかった)

Lambda Function URLsをブラウザから実行

AWS Lambda Function URLsは公開から1年が経過した割と新しい機能です。もともとLambdaはAPI Gatewayを経由してhttpから実行することができましたが、API Gateway自体がコスト面で高めだったためこういったユースケースでは利用していませんでした。

Lambda Function URLsの登場でhttp経由で簡単にLambdaを実行できるようになったため、折角なので利用していこうと思った所存です。Lambdaはコスト面で優秀であり、Function URLsにはIAM認証が搭載されているためセキュリティ面でも良い選択肢となりました。

Redmine一括更新withCSV(仮称)の構築

AWSサービス構成図

今回利用したAWSサービスは少ないので、以下のような非常にシンプルな図になります。

Redmine Update 構成図

使用したサービスとしては以下のとおりです。

  • Route53 – https証明書のためにドメイン取得
  • CloudFront – S3 Bucketに置いたSPAの配信
  • CloudFrontFunction – CloudFrontに対してBasic認証を設置
  • S3 Bucket – ブラウザに表示するためのReact-SPAにファイルアップロードができるFormを配備。
  • Lambda – CSVを解析してRedmineAPIを利用する。FunctionURLsを設定。

Lambda Function URLsのIAM認証

Lamdba Function URLsには認証せずパブリックにアクセス可能なNONE設定と、認証されたIAMユーザーとロールのみがアクセス可能なAWS_IAM設定の2つが用意されています。今回はセキュリティを固くする意味でもAWS_IAM設定で進めます。

まず、このLambdaFunctionに対するInvokeのみを許可するIAMポリシーを持ったユーザーを作成します。このIAMポリシーは公式ドキュメントにサンプルがあります。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "InvokeLambda",
            "Effect": "Allow",
            "Action": "lambda:InvokeFunctionUrl",
            "Resource": "arn:aws:lambda:ap-northeast-1:000000000000:function:LambdaRedmineUpdaterKari",
            "Condition": {
                "StringEquals": {
                    "lambda:FunctionUrlAuthType": "AWS_IAM"
                }
            }
        }
    ]
}

このユーザーはマネジメントコンソールへのログインを許可せず、アクセスキー・シークレットアクセスキーの発行のみ行いました。このアクセスキーを使用してLambda FunctionURLsのIAM認証を行います。

FunctionURLsのIAM認証にはAWS Signature Version 4 (SigV4)が必要になるようです(公式ドキュメントより)。こちらについてはaws-sdk-js-v3に含まれているためyarnから簡単に利用開始できますが、公式に明確なサンプルコードがないためgithubのissueを参考に実装しました。

IAM認証に使用するアクセスキー、更新するCSV、実行するLambdaのホスト、更新先のRedmineエンドポイントをすべてフォームから入力することとしています。Javascriptコード上にはアクセスキー等秘匿情報が残らないので安全かと思います。

const signer = new SignatureV4({
  credentials: {
    accessKeyId: data.AwsAccessKeyId,
    secretAccessKey: data.AwsSecretId,
  },
  region: "ap-northeast-1",
  service: 'lambda',
  sha256: Sha256,
});
const parsedUrl = new URL(data.LambdaUrl);
const endpoint = parsedUrl.hostname.toString();
const path = parsedUrl.pathname.toString();
const req = new HttpRequest({
  hostname: endpoint,
  path,
  method: "POST",
  body: JSON.stringify(formBody),
  headers: {
    host: endpoint,
    "Content-Type": "application/json",
  },
});
const signed = await signer.sign(req);
const resp = await fetch(data.LambdaUrl, {
  method: req.method,
  body: req.body,
  headers: req.headers,
});

このようにすることでブラウザからLambda Function URLsを実行することができました。

無事、LambdaからPythonを使用してRedmineAPIも実行できました。

フロントページのBasic認証

今回S3バケットにはReactで作成したSPAを設置しています。独自ドメインを使用するためにCloudFrontを設置しているため、折角なのでCloudFront Functionを利用してBasic認証を実装しました。前提としてS3バケットにはCloudFrontのOAIアクセスのみ許可されています。

CloudFront Functionsの利用方法は公式ドキュメントに詳しく記述されています。Basic認証は以下のように記述しました。

 var response401 = {
  statusCode: 401,
  statusDescription: 'Unauthorized',
  headers: { 'www-authenticate': { value: 'Basic' } }
};
function handler(event) {
  var request = event.request;
  var headers = request.headers;
  var basicBase64 = '<user:pass> Base64';
  var authString = 'Basic ' + basicBase64;

  if (typeof headers.authorization === "undefined" || headers.authorization.value !== authString) {
    return response401;
  }

  return request;
}

CloudFront Functionsは Lambda@Edge より少し機能が低下しているように感じますが、簡単なIP制限や別ページへのリダイレクト、Headerの追加などがシンプルに利用できます。無料利用枠もあるので小規模にも使いやすいでしょう。

最後に

今回はLambda Function URLsを利用してRedmineAPIを実行しCSVから一括更新する仕組みを作成しました。

こういったちょっとした便利機能のPython/Nodeスクリプトが必要になったとき、エンジニア以外の環境でその実行環境を用意してあげるよりもLambdaで実行できるようにしたほうがメンテナンスもしやすくなるでしょう。また、ブラウザから実行できるので複数人からの実行も当然可能です。

Lambda Function URLsにIAM認証を適用すればセキュリティ的にもかなり安全です。また、IAMユーザーのポリシーも該当のLambdaの実行に限られているため、アクセスキーが流出しても影響を受けるのはLambdaだけです。(流出しないのが一番ですが)

以上、またちょっとしたスクリプトが必要になったときこのような形で機能を用意しようと思います。

面談で出された問題がプログラムの基礎として良かった話

0

アピリッツの知識共有サイト「ナレッジベース」で公開されている内容をアピスピでも紹介します。こちらはES部のエンジニア・桑添敏生さんによる記事です。

これは、C#の話でゴリゴリにエンジニア専用の記事です。

突然ですが問題です。

(コンパイルが通る様に元から少し改修しましたが解答内容は同じです。)

public class TestCase1 : MonoBehaviour
{
    private void Start()
    {
        Test1();
    }

    private void Test1()
    {
        List<int> val1 = new List<int>(){0};
        List<int> val2 = new List<int>(){1};

        SetValue(val1, val2);
        
        Debug.Log($"合計はいくつになるでしょうか? {val1[0] + val2[0]}");
    }
    
    private void SetValue(List<int> val1, List<int> val2)
    {
        val1[0] = 3;
        val2 = new List<int>(){2};
        val2[0] = 5;
    }
}
Debug.Log($"合計はいくつになるでしょうか? {val1[0] + val2[0]}");

この部分の答えは何になるかわかるでしょうか?

解答

正解は、「4」です。(ちなみに自分は「8」と答えました。)

解説

今回、「SetValue」関数の引数にListを入れていますが参照型の値渡しをしているので、
val1[0] = 3;
を代入すると値が変わります。

その後の処理は、
val2 = new List(){2};
と、 関数内で引数で値渡したもの(コピー)に対して改めて生成をした後に以下の代入を行なっても、
val2[0] = 5;
コピーのアドレスを変えて値を入れただけなので大元の値は変わらず、

val1[0] = 3;
val2[0] = 1;

なので合計は「4」になります。

問題自体は終わりでここからは余談です。

発展した話 : どうすれば「8」になるのか

なぜ自分が「8」と答えたか、ここの辺りはふわふわした知識でしたが、
追加で何をすれば8になったのかを考えるのが大事だと思ったので今回まとめることにしました。

C#では値型参照型の区別が大事ですが、
これに加えて値渡し参照渡しがあります。めちゃくちゃ紛らわしい。
(値型参照型自体もプリミティブとかオブジェクトなんて別の言い回しがあるのでさらに訳わかんなくなります)

自分は参照型で渡しているから生成を行うと実体の方も変わると勘違いしましたが、
C#では基本的に値渡しとなるので、実際は参照渡しをしないとダメです。

なのでタイトルのどうすれば「8」になるか、の答えを言ってしまうと、
自分が勘違いした通りに実体を渡してあげればいいので「参照型参照渡し」をすれば良いだけです。

もっというと「参照渡し」という単語を聞いて想像できるパラメータ修飾子があると思いますがそのままで、
「ref」をつけてあげればいいんです。

SetValue(val1, ref val2);
    
private void SetValue(List<int> val1, ref List<int> val2)
{
    val1[0] = 3;
    val2 = new List<int>(){2};
    val2[0] = 5;
}

これで試してみた所、「8」と出力されました。

なので今回は問題として出題されましたが、
関数内で参照型の実体に変更を加える実装を行う場合は、
参照型参照渡し」、紛らわしいので言い方を変えると実体(インスタンス)を渡すことで代入ができるようになりました。

また振る舞いとしては「out」パラメータ修飾子も同じ参照渡しで、
かつoutパラメータ修飾子を使用している場合は値が入っている事が保証されるのでこちらの方が安全そうです。

表にするとこういう感じです。

プロパティ書き換えインスタンス置き換え
値型値渡し
値型参照渡し
参照型値渡し
参照型参照渡し

図を元にインスタンスの置き換え部分の挙動に注目して見ると問題の箇所は、
参照型 値渡し : インスタンス ×
となっていたので想像した挙動とは異なった、という結果でした。

まとめ

1つ渡し方に気をつけて、
値渡しコピー
参照渡し変数へのアクセス
を渡している解釈でいれば問題なさそうです。

参考資料

【C#】「参照型」を渡しても「参照渡し」にはならない件

メソッドのパラメーター (C# リファレンス)

2023年度アピリッツ入社式、65名を迎えました

0

2023年4月1日にアピリッツは入社式を行いました。今年は65名入社。2022年は45名入社だったので、大幅増です!(2021年は34名。着々と増えています!)今年も当日の様子をご紹介します(2023年4月 取材)

今までの会場では、65名も座れない!

去年と一昨年は、オフィスのカフェスペース(広くて芝生でステキなんです)で入社式を執り行ってきたものの、去年45名を迎えたあたりから「会場にみんな入らないかも……?」とドキドキしていました。そして今年入社するのは65名。とうとう完全なるキャパオーバーとなり、今年は外部の大きな会場を使いました。会社の成長を感じます。

大切な式典なので、今年も人事企画部が心を込めて準備・運営しました

同期を大切にね

今年も社長の和田による新入社員のみなさんへの挨拶から始まりました。「65人もアピリッツに来てくれたことは、とてもいいことで、まずはみなさん来てくれてありがとう」「学生時代は、毎年あたらしい環境とコミュニティが提供されてきたと思いますが、これからはそういった機会は少なくなります」「だから同期を大切にね」とメッセージを送りました。

「こういった公的な式典は、人生でおそらく最後になる人が多いんですよね」と和田

「初任給が出たら、お世話になった人や育ててくれた人にごはんでもごちそうしてください」と優しい言葉で締めくくりました。そしてそれぞれの役員からもご挨拶。「自分の身に起こった変化を楽しんでほしい」「会社はどんどん大きくなれる。個人も成長できるが、会社でみんなでがんばれば、10倍成長できる」「笑いながら楽しめる仲間がいるのはいいこと」「みなさんにしかできないことがある」とエールを送りました。

取締役の永山からは「思い立ったときにチャレンジしてほしい」とエールを送りました
「自分の身に起こった変化」をユーモラスに話しつつ、「みなさんも変化を楽しんでほしい」と執行役員の八木
執行役員の長谷はアピリッツに新卒入社した1人。今も同期とのつながりを大切にしているそうです

ということで、今年も入社式が無事終わりました。ただいま研修の真っ最中!

そして、来年に向けて早くも2024新卒の採用情報を公開しています。学生のみなさん、エントリーお待ちしています!

オンラインゲーム設計に必要な「プレイヤー主観性」という考え方

0

アピリッツの知識共有サイト「ナレッジベース」で公開されている内容をアピスピでも紹介します。こちらはES部のエンジニア・清水則雄さんによる記事です。

通信ゲームのイメージ 

よく、オンラインゲームを作ってるというと「同期とか大変でしょ」や、「ずれているとおかしい」などと言われる気がしています。

端末を2台以上置いて比べた時には「完全に〇秒後に両プレイヤーの状態が一緒」もしくは少しラグがあるくらい、というイメージを持ってる人が多い気がします。

よくあるオンラインゲームの動いてるイメージ

実はオンラインゲームは主観的に見られている

ただ、実際にオンラインゲームをプレイしている人たちは相手の端末を見ることがほぼ無く。自分の画面をみてプレイしていることがほとんどです。

「そんなので一緒に遊んでる感じあるの?」という疑問があるのですが、実は相手の動きが変化していることを見て、主観的な「体感」として一緒に遊んでる 、と感じ取れていると思います(錯覚・勘違いともいう)。

逐次相手の変化が自分の世界に影響している、と感じると、「マルチプレイしてるんだな」って自分の中で感じ取っている状態です。

プレイヤーは客観的に世界を体験していない

実際に端末の差を見てみると、「敵の向きが違う」「雑魚の位置がバラバラ」「エフェクトが端末によってでるタイミングと場所が違う」などとずれている事が多いです。

極端にいうと、プレイヤーAの世界とプレイヤーBの世界では起承転結でいうと”起”と”結”だけが僅かなラグを含んだ同期をしているだけで、経緯の部分を客観的にみると全く違う世界が動くようになっていますが、それでも「ひとつの世界を共有している」と感じ取っています。

ユーザーのゲーム体験が大事

大事なことはプレイヤーが、ポイントポイントで事象を共有していることで、そこまでのプレイヤー各々の経緯に関しては大きく考慮しない、というのがあると思います。

ネットワークの性質上、不安定、遅延などはある部分なので、客観的に正しいかというよりは 1プレイヤーが主観的に見たときにおかしくないか? を考える方が楽にオンラインゲームの設計をできる気がしています。

余談:チャット

最近ソーシャルゲームにおいてもリアルタイムチャットを実装する機会が増えている気がします。

リアルタイム web も流行ってきているので、このあたりの同期性を気にする場合も多いですが、個人的にはプレイヤーの体験としてどうすればいいのか?が重要視されるべきで、ゲーム性によって設計を考える部分ではあると思います(ホーム画面に秒を刻んだチャットの同期がいるのか?など)。

ChatGPTにアピリッツのプレスリリースを書いてもらったら「カンのいいアシスタントが来た~!」と思った

0

OpenAIが開発した自然言語処理モデルを活用したChatGPT。流行ってますよね。もう猫も杓子もChatGPT……という空気なので、広報のわたしも、その流れに乗っかって「プレスリリースをChatGPTに書いてもらったらどうなるか?」を、無料版を使って試しました。

結論から言うと「なるほどこれは便利だわ」と感じるレベルです。とくに広報の仕事を始めたばかりで「プレスリリースってどうやって書けば……」と困っている人(昔の自分です)にとって、ChatGPTは心強いお手伝いさんになるはず。また、仕事で文章をいっぱい書く人にとって、「大事な基本」に立ち返るいい機会になるとも感じました。

ChatGPTにオフィス増床のプレスリリースを書いてもらおう

今回は、アピリッツで過去に出したこちらのお知らせをもとにChatGPTにプレスリリースを書いてもらいました。

プレスリリース:アピリッツ、オンラインゲーム事業とWebソリューション事業拡大に伴うオフィス増床のお知らせ ニューノーマルに対応したオフィスをZ世代がデザイン

2年前にオフィス増床をしたんです。いまもカフェや懇親会やゲーム開発のオフィスとして愛されている場所です。

で、どうして既存のプレスを選んだのか? 理由は次の2点です。

情報漏洩に気をつけましょう

「未来の、未開示の情報」をChatGPTを使って書くことは情報漏洩のリスクにつながるおそれがあると考えました。今回は腕試しがしたいだけだし、じゃあ過去のプレスと見比べるのもいいかな……と思い、昔懐かしのオフィス増床のプレスをチョイスした次第です。

とはいえ過去を振り返ってばかりもいられませんし、もし「新サービスのお知らせ」などを書きたいときは、実際の社名やプロダクト名は入れずに試すとよさそうです。

インサイダー情報が漏れると悲劇が待っているので、そこは慎重にいきます(アピリッツはインサイダー情報の教育も念入りにやっています)。

当時「どう書けばいいんだろう」と私が迷った

広報として仕事を始めてまもなくの頃で、「どう書くのがいいんだろう?」とあれこれ迷ったからです。他社さんのプレスリリースを参考にさせてもらったり、社内のメンバーに相談しながらなんとか書き上げました。

なので、そんな当時の自分のことを思い出しながらChatGPTを使ってみることにしました。

ChatGPTはラフな言葉の意図を汲み取ってくれる(人間以上に)

まず一回目。

スラスラ出てきます。ChatGPTが書いてくれたプレスリリースは、タイトルと冒頭の数行を読めば「ああ、事業拡大して会社が成長しているから2/15にオフィスを増床したんだね」とわかります。さすがにこのままパブリッシュすることはありませんが、どんなことを書けばいいかの補助線としては立派に機能しています

なにより、わたしのラフな命令からこちらの意図をここまで汲み取って仕上げてくるのでびっくりしました。ChatGPTご自慢の自然言語処理のパワーを感じます。

では次に要素を足してみます。この新オフィスのデザインや設備は、当時入社間もない若手の社員が主導して考えてくれたんです。そのことを命令文にグダグダっと書き足してみました。

増床日が抜けてしまいましたが、「若手社員が中心となり、新しいオフィスの空間デザインや機能的なアイデアを提案し、活気あるオフィス環境を実現しました」なんて言い回しは参考になります。

なんというか、ChatGPTはカンのいいアシスタントのようです。

ChatGPTはタイトル案も考えてくれるよ

でもプレスリリースのタイトルがそっけないな……ってことで、タイトルも考えてもらいました。

今回は5案としましたが、これ10案でも10000案でもいいんですよね。黙々と10000案出してくれます。ここまで「!」を連呼するタイトルは、アピリッツではまだチャレンジしたことがありません。

ちょっとニュアンスを変えてみましょう。

ちゃんとこちらの雑なニュアンスを読み取って1000本ノックをこなしてくれる相棒です。自分一人で悩んでどん詰まりになるくらいなら、ChatGPTを参考にするのは大いにありだと感じました。

以上のように、オフィス増床のプレスをChatGPTに書いてもらいました。こちらからの命令文を工夫すれば、さらにいろんなバリエーションのプレスリリースの草稿を出してくれるはずです。

スクリプト(命令文)が大事

ChatGPTはユーザーとのチャット内容(命令文のやりとり)によって出力が変わります。実際に試してみると「何もしなくてもChatGPTの出力のクオリティはそこそこの及第点だが、ちゃんと使い込むともっと精度が上がる」と痛感するんです。そんな一例を紹介します。例えば「こういう表現ってこのシーンだとなんて言い換えたらいいんだっけ?」とChatGPTに相談してみると……?

まちがっちゃいないが、とても味気ない

実は、これと一語一句同じ問いかけを、私が去年から使っているChatGPTのアカウントでも試しました。するとまるで違う内容が出てきました。

あと一息だけど、こういうのを知りたかった!

こっちのほうが私は「いいな」と思います。バリエーションが多く、このフレーズの意味と効果がわかりやすい。おそらくプレスリリースを作成する場合も、同様に使い手側による命令文の工夫が必要です。

では命令文の工夫には何が必要なのでしょうか? まずは「このプレスで、わたしたちは何を伝えたいか?」の視点だと思います。

結局、「このプレスで何が言いたいんだっけ?」が重要

広報としてプレスリリースを作成するようになったばかりの頃、下書きの段階から永山CFOによるレビューを必ず受けていました。プレスリリースの内容はIRの開示とも関係することがあったからです。

ここでのフィードバックで一番ありがたかったのは「で、ポイントは?」という言葉です。そう、ポイント。たとえば「アピリッツって若手が多い会社なんだな」だとか「このサービスはどういった顧客のために作ったのか」です。

このポイントがブレることは、文章の「てにをは」が崩れることよりも致命的だと私は考えます(もちろん「てにをは」がおかしいプレスは、みっともないですし、読んでくださる人に失礼なので、超大事なのですが)。

「N月N日までにこのリリースを出さなきゃ!しかもなるべくカッコよくて、わかりやすい感じのを!」と焦ってノーシンクで文章を作ると、たいていロクでもない内容になります。ポイントを見失っているからです。

なので、「このプレスリリースのポイントは何なのか?誰に、何を、知ってもらって、どう感じてもらいたいのか?」と、ポイントをしつこく考えながら原稿を読み返すと、ChatGPTに何を書いてもらうべきで、彼らが出力した文章から、わたしたちは何を選び、調整するべきかが、おのずと見えてくるはずです。

おそらく「ChatGPTに丸任せした文章」はすぐにわかります(今のところ……の話ではあるかもしれませんが)。なぜなら「ポイント」を生み出し、ポイントを大切にして、ポイントにふさわしいアウトプットを選ぶのは、わたしたちだからです。精進します。

ということで、アピリッツのニュースはこちらです!見てね!

ChatGPTを使ったアノテーション支援ツールを作ったお話 – 自然言語処理技術を活用した高精度アノテーションの試み

0

はじめに

クラウドインテグレーション部の浅田です。

OpenAIが提供しているChatGPTが話題になっていますね。3月に入りAPIの提供も始まったので、色々なサービスへの利用が考えられ始めてます。今回はアノテーションをサポートするツールをプライベートで作ってPoC(Proof of Concept)をした話を通して、ChatGPTの魅力や性能について書いていきたいと思います。

※ここでいうアノテーションとは、機械学習の分野で「教師あり学習を行うためにデータに対してラベルづけする行為」を指します。

想定する読者

  • ChatGPTってどんなものか知りたいかた
  • ChatGPTってどうやって使うのか知りたいかた

ChatGPTについて

ChatGPTOpenAIが作った大規模言語モデルです。自然な会話でのやり取りをできるというのが最大の魅力で、自然な文章を生成することができます。

最近まではブラウザでのみアクセスが可能だったのですが、3月に入りAPIの提供が始まったことで、アプリケーションから利用することが可能になり、様々な製品への応用が始まっています。

ChatGPTができること

ChatGPTができることを一言で表すなら「対話ができる」ということです。そして、対話ができるということは「言われたことを理解し状況に応じた発言ができる」ということでもあります。

突き詰めれば、ChatGPTができることはそれだけのことですが、膨大なデータでトレーニングされていることで、様々な応用がききます。

アノテーションについて

ChatGPTをはじめとした機械学習モデルは、教師データを与えることによって学習されます。例えば文章の感情判定モデルで、ポジティブ(な感情)とネガティブ(な感情)を識別したいモデルを作りたければポジティブな文章データやネガティブが文章データをたくさん用意することになります。

教師データとして使用する際にはそれぞれの文章がポジティブに属するのか、ポジティブに属するのかという情報を紐づけて与えてあげる必要があります。一方でポジティブ、ネガティブな文章は世界中にたくさんあると思いますが、ポジティブな文章である、ネガティブな文章であるという情報とセットで管理されていることは少ないので、データ自体と、それの情報を紐づけてあげる必要ががあり、その作業がアノテーションと呼ばれる作業になります。

アノテーションの課題

アノテーションは基本的には人手で行うことになりますが、大量のデータを作成するには人的コスト、時間的コスト、結果的には金銭コストが掛かってきます。そこで、ChatGPTを利用することでテキスト情報のアノテーションを手伝ってもらおう、というのが今回のコンセプトになります。

今回のツールのつくり

ユーザはWebブラウザ上から、アノテーションしたいテキストを一行ごとに記載したファイルをアップロードし、その際にアノテーションしたラベルの内容(先述の例であれば、「ポジティブ」、「ネガティブ」など)を指定することで、ChatGPTがそれぞれのテキストごとにラベルづけし、その理由、および確信度を表示する、という内容になります。

画面イメージとしては以下です。

入力画面
結果画面

テキストファイルを選択し、タグを指定すると、その結果が表示されるといった形になります。

今回のテキストファイルの中身は以下の様になっています。

スキピオはハンニバルがローマと戦ったカンナエの戦いに参加していたのである。
スティリコは異民族でありながらもローマの将軍として異民族と戦ったのである。
ハインリヒ4世はカノッサ城でローマ教皇グレゴリウス7世に謁見した。

それに対し、古代か中世でラベルを指定して実行した結果が上記の結果画面になります。適切にラベリングされていますね。

Reason列には、ラベル付の理由も具体的に書かれており、また歴史的事実とも合致しておりChatGPTのテキスト生成能力の高さが感じられる結果となりました。

ChatGPTのAPIを使う上でのポイント

フロント用のReactコード、およびバックエンドのChaliceのコードは以下のリポジトリで公開しています。

フロント

バックエンド

(ちなみに、annot”a”tionがannot”ai”tionになっているのは意図的です)

作り自体はシンプルなので、説明は割愛させていただきますが、ChatGPTのAPIの部分だけ補足させていただきます。

冒頭で、ChatGPTができることは「対話ができる」、すなわち「言われたことを理解し状況に応じた発言ができる」と述べました。裏を返せば、「いかにChatGPTにこちらが意図していることを伝えるか」が重要なポイントとなってきます。

機械学習の世界には雑なデータで作ったモデルは雑な結果しか生まないという意味の「Garbage In, Garbage Out」という言葉がありますが、ChatGPTでは雑な質問は雑な返答しか生まないといってもよいでしょう。

つまり、ChatGPTに対してどのような言葉を投げかけるかを設計することが、ChatGPTを上手く使うポイントになります。これはプロンプトエンジニアリングとも呼ばれます。

今回であれば、以下のようなプロンプト(発言)をユーザの入力を埋め込んで作成しています。

textには入力ファイルの1行が、labelsには指定したラベル(先述の例であれば”ポジティブ,ネガティブ”)が入ります。

{text}

上記の文章について、ラベルづけしてください。
答えは{labels}のいずれかで答えてください。

また、以下のフォーマットに従ってください。

ラベル:○○
理由:△△
確信度:□□

○○には{labels}のいずれかを入れてください。
△△にはラベルづけの理由を書いてください。
□□にはそのラベルが正しいと思う度合いを0から100の数値で表してください。

ポイントは2点です。

  • どのようなタスクを実行したいかを明示します。
    • 今回であれば「ラベルづけ」でうまくいってますが、端的な言葉でうまくいかない場合は、出きるだけ明示します。例えば、「どの概念に該当するか判定してください」など。
  • 出力の形式に対して、できるだけ具体的な制約をかけます。
    • フォーマットの指定がない場合でも、結果としては同じような内容を返してくれますが、出力の形式が安定しないのでAPIとして利用する際にはハンドリングしにくくなります。
      • 今回の例であれば、何も制約をかけないと「ラベルは「〇〇」です。理由は△△だからです。」であったり、「〇〇。理由は以下です。△△。」など出力が一定の形式にならず、プログラムから利用が難しくなります。

上記により

ラベル:○○
理由:△△
確信度:□□

のようにChatGPTの出力をコントロールできるので、プログラム側で正規表現で結果を抜き出すことが容易になります。

なぜChatGPTでアノテーションなのか

上記でみたように、与えたテキストがどのラベルに該当するかを返してくれるというのが今回のツールのコンセプトになります。

これはつまり、テキスト分類のアプリケーションを作っているということでもあります。

そこで疑問が湧く方もいるかもしれません。ChatGPTでテキスト分類ができるなら、アノテーションでデータを用意することなどする必要がないではないか、と。

確かにそれは一面では正しいですが、以下に記述するChatGPTの弱点を考えた時に、独自の機械学習モデルを作成することが必要なケースはまだまだあり、その際にChatGPTによるアノテーションが役に立つかもしれないと考えたためです。

ChatGPTの弱点

テキスト分類機能を実装するにあたり、ChatGPTにテキスト分類をさせれば事足りる可能性は高いと思います。それぐらいChatGPTの性能は驚異的です。

ただ、ChatGPTにもいくつか弱点はあります。

出力の正確さに偏りがある

ChatGPTはあたかも知識に基づいて発言しているように見えますがそうではありません。与えられた文章に続けて出力するとしたら、最も可能性のある(尤もらしい)文字列を出力しているだけです。それだけで、文章として自然で、文意を汲み取ったような文章を出力することは驚嘆すべきことですが、知識に基づいて発言しているわけではないのです。

したがって、学習データの少なさなどにより、連続する文章として可能性の高低を判断しにくい場合、出力を安定させることができません。すなわち、毎回バラバラなことを発言することになります。そして、全く事実と異なることを述べる可能性があります。

欧米の事柄や世界的に見ても有名な出来事や人物についてはかなり正確な記述が作成されますが、ローカルな出来事や人物については断片的で間違った記述をする傾向にあるようです。

これは追加のデータの学習で解決するものと思いますが、今のところ学習処理をユーザ側で行うことはできないので、対処することができません。

学習データにない新しい言葉には対応できない

ChatGPTは、当然のことながら学習に使われたデータについてしか対応していません。つまり、学習処理が行われたあとに出てきた未知の言葉や概念などは判断できません。これは適宜学習の再実行である程度は解決できる問題かもしれませんが、今のところユーザによる学習処理などはできないので、OpenAIの対応待ちとなってしまいます。

インターネットの利用が前提となる

当然のことながらOpenAIのAPIにアクセスできなければ、ChatGPTの機能を利用することはできません。インフラ面の制限からインターネットに繋ぐことが許可されていないプライベートネットワークや、IoTなどのエッジでの処理が必要である場合などで、ネットワークを利用できない場合には利用することができません。

速度が必ずしも速いわけではない

もちろん人手で同じことをするよりも、圧倒的な速度でレスポンスを返してくれますが、一般的なAPIと比較した場合に特段に速いわけではありません。これは汎化するために大規模なモデルになっているがゆえ仕方がないことではありますが、特化したモデルに比べれば速度面では遅いと言わざるを得ません。ただ、これはモデルの改善でよくなっていくものと思われます。実際に数ヶ月前に比べれば速度はかなり速くなっています。

ChatGPTの力を借りる

というわけで、ChatGPTはすべてを解決するというわけではないので、適宜使い所を見極めて使用していく必要があるかと思います。

今回であれば、ChatGPTの力を借りてアノテーションという人手で行っていた作業を自動化する試みを行いました。既存でも、学習したモデル自身にアノテーションされていないデータをアノテーションさせて、確信度が高くないデータだけ人にアノテーションさせようとするアプローチはありました。しかし、その判断を学習モデルに説明させること、特に普通の人が理解できる形で説明することは困難でした。ChatGPTであれば、モデル自身に人間の言葉でその理由を説明させることができます。

最後に

ChatGPTの性能には驚くばかりです。使い方によっては、今までは困難だったり、時間がかかっていた、たくさんのことを解決するポテンシャルを秘めていると感じます。

実際、今回のツール作成時にChatGPTで出力したコードを使ったり、いろいろ質問しつつ作成した部分もあります。専門家からすればChatGPTの出力には満足できない場合もあるかもしれませんが、ReactやAWS Chaliceを普段あまり使ったことがない自分のような人間が使う分には、大きな効率化につながりました。

ChatGPTはさまざまなテキストデータで学習されています。詳細は明かされていませんが、その中にはWebページや書籍などのデジタルデータが多数含まれています(参照)。

このため、ChatGPTは人類のデジタル領域における叡智の結晶と言っても過言ではないかと思います。ChatGPTを使ってどんな面白いサービスが出てくるか、ワクワクしますね!

文字列からテキストのオブジェクトを検索する機能

0

アピリッツの知識共有サイト「ナレッジベース」で公開されている内容をアピスピでも紹介します。こちらはES部のエンジニア・Iさんによる記事です。

クライアントエンジニアのIです。

現在Switchの新規開発(Unity)のローカライズ担当のクライアントとして仕事をしています。

今回は実際に業務の中で実装した「文字列が設定されているオブジェクトを検索する機能」について紹介をしたいと思います。

経緯  

プランナーやデザイナーの画面を見ながら会話をしているとScene上のオブジェクトを沢山クリックしてオブジェクトを探すという光景が良く見られます。

Unityでは画面上でオブジェクトを直接クリックすることでオブジェクトを選択状態にすることができ、選択したオブジェクトの状態をInspectorで確認することができますが、基本的に多くのオブジェクトが重なっているので中々確認したいオブジェクトに辿り着かなかったり、クリックをしすぎて通り過ぎてしまったりと中々オブジェクトを選択状態にするのが大変です。

実装している人は何となくオブジェクト名を覚えているはずなので簡単に検索して探せるかもしれませんが、プランナーが確認するときにオブジェクトを探す手段はやはりクリックして追いかけるしかないです。

ローカライズを対応があるので「テキストのフォントサイズ等を確認しないといけない」みたいなシチュエーションが多くありました。

そこで「画面上に出ている文字列からオブジェクトを検索できるような機能」があれば便利かなあと思って実装しました。

実装  

実装はシンプルで文字列を入力できるEditorWindowを作成して、TextMeshProのテキストに検索で入力した文字が含まれているものを一覧で表示します。

それぞれがボタンになっていてクリックするとオブジェクトが選択された状態になります。

これでInspectorにそのオブジェクトの状態をすぐさま確認することができます。

public class FindObjectByText : EditorWindow
{
    private static float WINDOWSIZE_W =  500f;
    private static float WINDOWSIZE_H = 500f;
    
    // 入力テキスト
    private string _inputText = "";

    // 検索結果
    private List<TMP_Text> _resultTexts = new List<TMP_Text>();

    private Vector2 _scrollPos = new Vector2();

    [MenuItem("Tools/FindObjectByText")]
    public static void ShowWindow()
    {
        var window = GetWindow<FindObjectByText>();
        var windowPos = window.position;
        windowPos.size =  new Vector2(WINDOWSIZE_W, WINDOWSIZE_H);
        window.position = windowPos;
    }
    
    private void OnGUI()
    {
        using (new GUILayout.VerticalScope())
        {
            GUILayout.Label("テキストを入力してください");

            _inputText = EditorGUILayout.TextField(_inputText);

            if (GUILayout.Button("検索"))
            {
                SearchObject(_inputText);
            }
            
            if (_resultTexts.Any())
            {
                GUILayout.Space(10);
                GUILayout.Label("検索結果");
                using (GUILayout.ScrollViewScope scroll = new GUILayout.ScrollViewScope(_scrollPos,EditorStyles.helpBox))
                {
                    _scrollPos = scroll.scrollPosition;
                    foreach (var tmp in _resultTexts)
                    {
                        if (tmp == null)
                        {
                            continue;
                        }
                        if (GUILayout.Button(tmp.name))
                        {
                            Selection.activeObject = tmp;
                        }
                    }
                }
                
            }
        }
    }

    private void SearchObject(string text)
    {
        _resultTexts.Clear();
        
        var textObjects = FindObjectsOfType<TMP_Text>();

        for (int i = 0; i < textObjects.Length; i++)
        {
            var textObj = textObjects[i];
            // 検索
            if (textObj.text.IndexOf(text, StringComparison.Ordinal) > -1)
            {
                _resultTexts.Add(textObj);
            }
        }
    }

まとめ  

大した機能では無いですが、あると地味に便利だと思います。

テキストだけでなく「CharacterIdからキャラのモデルを検索」したりなど色々なComponentに対して応用することが可能です。

このような「何かのComponentの情報からオブジェクトを検索する機能」は特にバグ修正の時などにも使いやすい機能だと思うので是非使ってみてください。

最近業務をする上で少しでも「自分が不便だな」と感じたり、他の人の作業を見たときに「何か不便そうだな」と感じたらなるべく効率化できる機能を実装することを心掛けています。

皆さんも今回のようなちょっとした機能でもいいので「うちのプロジェクトで使ってるこの機能地味に便利だよ!」というものがあれば是非教えて欲しいです!

アピリッツの資格取得支援は社員みんなにメリットがあるよ(ITパスポート取りました)

0

自分が頑張れば、自分に返ってくる環境

アピリッツでは資格取得支援制度をどんどん拡充させています。社長の和田がかつてインタビューで「(アピリッツを)”自分が頑張れば、自分に返ってくる環境”としたい」と答えていましたが、その環境を実現するためのステップのひとつです。

こちらもぜひ読んでください!

AWS認定をすべて取ったら100万円出します

たとえば、アピリッツは2021年の6月にAPN表彰手当を定めました。これは「AWS認定をすべて取ったり、社内外への技術発信に取り組んでAPNから表彰されたら会社から手当を出します!応援しています!」という施策です。最大で100万円以上出ます。

この「APN表彰手当」が社内に与えた効果は抜群で、AWS認定を取得するエンジニアがもりもり増え、AWS認定コンプリートまでリーチがかかっている社員も数名います(マネージャー陣曰く「想定以上のペースでみなさん勉強して取得しています」とのこと)。

社内Slackでも試験勉強について活発に情報交換がされています。

IPA資格保持手当も始まったよ

エンジニアも、デザイナーも、アナリストも、マネージャーも、みんなが勉強する環境であるならば、バックオフィスのメンバーも勉強したっていいんじゃない? ってことで、広報の私も、まずは情報処理推進機構(IPA)の資格のうち、基本のキである「ITパスポート」を取ってみることにしました。こちらはアピリッツが最近定めた「IPA資格保持手当」の対象資格にも入っています。

エンジニア以外のメンバーにも、IT企業で働く上での基礎知識を身に着けてほしい……そんな意図もあって、ITパスポートもIPA資格保持手当のラインナップに加わりました。

ITパスポート試験の受験料や合格基準は?

ITパスポートの受験料は7500円(2023年2月時点)で、合格すれば経費精算できます+報奨金ももらえます。

試験の仕組みはとても単純で、合格基準点に達すれば誰でも合格です。つまり入学試験のように倍率やライバルを心配しなくていいので気がラク。

また、日本のあちこちで毎日のように試験が開催されています。だから受験までの予定が立てやすくてありがたかったです(ただ、都内は1ヶ月先くらいまで試験会場が埋まりがちでした。やると決めたらとっとと申し込むことをオススメします!)。

自分にあったスケジュールと試験会場を選んで受験申込をすれば、あとは勉強するだけです。

やっててよかった試験対策

極端に苦手な分野は作らないほうがいいよ

ITパスポートの合格基準は2つあり、2つとも満たす必要があります。

まず、総得点が60%を超えていること。

そして、ストラテジ系、マネジメント系、テクノロジ系と3つの分野ごとに用意された合格基準点を超えていること。

後者の合格基準があるため、「ストラテジ系だけで一点突破してやるぜ!」みたいな勉強法はおすすめしません。とはいえ、易しい問題から難しい問題までいろいろあります。各分野の易しい問題だけでも必ず得点できるようにしておけば、合否ラインに豪快に引っかかることもなさそうですし、落ち着いて試験に臨めるのではと個人的には思います。

過去問がウェブ上で公開されてる

試験対策が必要かどうか? は、人によります。

まず己の実力を測るために過去問をやってみましょう。

参考書もたくさん売っていますが、それらを買う前にWebで過去問をちょっとやってみて、ざっくりと得点率を把握して、自分の勉強スタイルを決めるとよさそうです(たぶんこれで「自分ノー勉でいける」とわかる人もいるはず)。

私は、「勉強しないと合格は難しそうだな~」という際どい模試結果だったので、ウェブ上の過去問(大量)と参考書で試験対策をしました。とくに実際の試験もPCで回答していくのでPCで過去問を解きまくるのが個人的には一番合っていました。

とくにこちらのサイトのお世話になりました。

ITパスポート過去問道場

過去問道場では、過去問を試験回や分野で指定して解きまくれます。1000本ノックとかできちゃう。で、解きながら「当てずっぽうで答えてしまえ」だとか「なんだこれ?」と思った出題があれば、そこが自分の弱点なので、参考書や過去問サイトの解説を丁寧に読んで、出題の意図や傾向を理解していきました。

参考書はこちらを買いました。

令和04-05年 ITパスポート 試験によくでる問題集

理由はタヌキがかわいかったからです。あと技術評論社がなんとなく好きだったから。休みの日や朝の出勤前にソファに座ってブツブツ声に出して読んでいました。紙はパソコンの画面と違って目が疲れにくいのが利点。あとどこにいてもパッと本を開いて読める。

試験当日はこんな感じ

試験時間は2時間。ただし帰りたきゃさっさと帰ってよし

電卓や時計は持ち込めません。紙とペンは試験会場で提供されますので、暗算できない計算はその紙を使って解きましょう。

また、試験時間は2時間用意されています。正直「え!なっが!」と思いましたが、大丈夫。あなたの帰りたいタイミングで帰れます。解き終わって、気になるところを見直して「これでよし!」と思ったら、採点結果を見ましょう。己の試験結果を見終わったら、さっさと立ち去っていいです。マイペースに行きましょう。

ちなみに試験会場には老若男女いろんな人が集まっていました。試験直前までテキストを読み込む人、自作の勉強ノートを大事そうに抱えている人、ぼんやり窓の外を見ている人、いろいろでした(私はテキストを読み返していました。とくに2進数が苦手です)。

勉強はおもしろい

合格してもしなくても、とりあえず勉強するのは何歳になってもいいもんだな~と思いました。社内でエンジニアや営業のメンバーが何気なく口にしている単語の意味がわかったり、何が大事なのかが少しつかめるからです。社内でのコミュニケーションがラクになります。手当も当然うれしいけれど、こういった手応えが実は一番うれしかったりします。仕事と地続きの勉強のおもしろさとメリットを再確認しました。

ということで、次はGAIQAWSのクラウドプラクティショナーを勉強中です。がんばりまーす。

デザインの言語化を振り返る

0

デジタルエクスペリエンス部所属の内田です。
アピリッツではこの2月に新しい期が始まりました!区切りの機会に、この1年を振り返ってみたいと思います。
個人的にはこの1年で「デザインの言語化を強化する」という目標を立て、日々試行錯誤してきました。今回はその成果や反省点を振り返ります。

デザインの言語化が必要な理由

デザインの言語化を強化したいと思ったのは①お客様にデザインを説明するとき②コーディング以降の工程の2つの段階でその必要性を実感したためです。

①お客様にデザインを説明するとき

デザインがなかなか決まらない

デザイナーなら誰しも経験するこの場面。単にクリエイティブが上達すれば回避できるわけではないことを薄々感じ始めていました。
デザイン決定までには様々な調整が必要となります。そんな中で、デザインがイメージ通りでない時に、お客様もまたどう直してほしいかうまく言葉にできていないことに気づいたのです。

そこでこちらがデザインを提出する際に、
〇〇なニーズや課題がある(説明)だからこういうレイアウトや色にしました(ビジュアル)
というように説明とデザインをセットで提示するようにしました。

お客様にはまずその説明を読んでいただけるため、その課題感や解決策について認識合わせができ、それがビジュアル化されたときの細かいニュアンスについて説明した言葉をもとに微調整が可能になります。
こうすることで考え方の方向性が違うのか?細かいビジュアル調整だけでいいのか?などがコミュニケーションの中で明確になり、デザイン決定までの意志疎通がスムーズになったと実感しています。

スピード感のある制作と決定が必要となった

MVP開発やアジャイル開発が多くなった昨今では、毎工程ワイヤーフレームをじっくり考案し、それをもとにデザイン制作…といった決まった工程が繰り返されるわけではありません。システムや事業担当者の検討会議では実際のデザインをもとに議論をしたいという場面も発生しました。

その中でデザインを考え、説明を準備して提示していく…となると、スピードを上げたいにもかかわらず工数が増加してしまいます。

そのため、事前に論点を絞って重要な課題をピックアップしてから作業することで、必要なデザインだけを効率的に作成しました。
始めにテキストベースで整理されていると、そのまま説明資料にも活用できるため便利です。

また、説明資料では毎回共通のフォーマットを使用しました。デザイン確認に精通していない人でも認知負荷がかからず理解しやすくなるようにするためです。
「デザイン確認に精通していない人でも認知負荷がかからず理解しやすい」ということがとても重要で、共通フォーマットで説明とデザインの併記を徹底することで、解決したい課題や行うべき施策といった本質的な議論に集中できる環境を作ることができたと感じています。

②コーディング以降の工程

大きなプロジェクトになると自分で作成したデザインを他のメンバーにコーディングしてもらうことが増え、コーダーさんやエンジニアさんととの関わりが増えていきます。それと同時に次のような問題も増えました。

意図したデザインとなんか違う…?

まずこれは「デザイン通りの見た目になっていない!」という話ではないことを前置きしておきます。
デザイン通りの見た目になっている上で、出来上がったものが、なんだか、ちょっとだけ、意図したものと違うのです。

状態変化のパターンや既存or新規で作ると影響範囲がどうなのかなど……様々なことを考えデザインが出来上がるも、そのデザインの経緯や理由が伝わっていないと実装時にそれらが反映できず、不要な工数やコードが積みあがってしまう危険性があります。

そのような悲しい状況を防ぐためにも、デザインファイル内に細かくデザイン意図を記載し、コーディング担当者へ向けてデザインの経緯や理由・指示を書き込むようにしました。

例としては、このような感じです。

  • ここは大小さまざまな写真が入る予定なのでcssは〇〇の指定にして写真がすべて同じ大きさに見えるようにしてください。
  • このリンクはページ下部の△△へのアンカーリンクです。ヘッダーが追従してくるので移動後に見出しが隠れないようにお願いします。

思い返してみると、動的にデータが入る部分や移動を伴う要素への注意書きが多い気がします。

無駄な確認工数が発生する 

こちらもまず前提を話しておくと「いちいち聞かないで!」みたいな話ではありません!!
「だいたいよく発生するコミュニケーションって決まってるから、決まった場所によく聞かれることがまとまっていれば効率がいいのでは?」という発想になったお話です。

どんなプロジェクトでも途中でメンバーの出入りが発生しますし、その度に「この案件とは…」という共有ミーティングが開催されます。
また、プロジェクトが大きくなればなるほどファイルの種類や規模も大きく、すべてを把握することが難しくなってきます。

そこで、案件の基本情報やデザインファイルの場所を記載したドキュメントを作成しました。Slackの案件チャンネルなどにピン止めしておけば、プロジェクトに新しいメンバーが加わる時や探し物がある時に便利です。

さらに、デザインファイル内でも基本的なデザインルールや使用できる値を明確にしておく(デザイントークンを作成する)ことで、複数人で作業する場合や、規模が大きくなってきたときに一貫性のあるデザインが作成できます。

結局はコミュニケーション

ここまでデザインの制作と連携をスムーズにするために行った様々なことを振り返ってみました。もちろん言葉や伝え方に気を使えば使うほど、自分の意図の伝わらなさに落ち込んだり、他の人の意図をうまくくみ取れなかったりして、コミュニケーション面で「難しいなぁ」と感じることが多々ありました。

しかし「デザインの言語化」も結局はどうコミュニケーションをとって他業種の人や作業者同士で連携していくかということに終始しているように思います。
なぜなら、その方法について調べたり試したりする中で、私だけでなく、多くの仲間が同じ問題に直面していることに気づいたからです。

そのような課題を解決しようと行動することは”DesignOps”と呼ばれ、専任の担当者やチームまで誕生している企業もあります。
自分のやってきたことはDesignOpsの中のほんの一部かもしれませんが、もっと周りの業務を効率化してデザインの質を高めていこうという気運が高まっているのは確かです。

2023年はそんなDesignOpsをもっと深堀りしつつ、よりよいものを作っていきたい!という新たな目標を立て、新しい1年を頑張っていこうと思います。

Maya‐髪の毛やスカートなどの「揺れもの」における、スキニングの私的やりやすい方法

0

アピリッツの知識共有サイト「ナレッジベース」で公開されている内容をアピスピでも紹介します。こちらはES部の3Dデザイナー・平岡 隆一さんによる記事です。

業務でMayaを使うようになったはじめの頃は、最大インフルエンス数が3や4に設定されたスキンウェイトの調整に手こずっていました。

髪の毛やスカート、ひも状モデルなどの揺れ物をスキニングする時、ジョイント数が3つ以上あるとウェイト調整が途端に難しくなるかと思います。 業務を進める中で、揺れ物のウェイト調整を綺麗に行うためのポイントを見つけましたので共有させて頂こうと思います。

スキン影響値の範囲

メッシュをジョイントにバインドスキンすると自動的に影響値を設定してくれますが、範囲も強さもバラバラなので手動で設定します。 まずは、ジョイントがメッシュ頂点に与える影響値の範囲を設定します。

ジョイントの影響値の範囲は『後方ジョイントの少し手前から前方ジョイントの末端くらい』までにします。 全てのジョイントの影響値範囲をこのような法則で先に設定します。

スキン影響値の強さ

先程設定したスキン影響値範囲の両端が最もウェイトが弱いので、影響値を0.05ぐらいに設定します。 スキン影響値範囲の丁度真ん中あたりが最もウェイトが強くなるので、影響値を0.7ぐらいに設定します。

両端と真ん中のウェイト値を決めたら、さらにその間のウェイトを調整します。

ジョイントを移動させてみて、メッシュが綺麗に変形できていれば概ね調整は完了です。

この要領でその他の頂点もウェイト調整していきます。

まとめ

少々説明が分かりづらくなってしまいましたが、要点をまとめると、

・ウェイトの範囲を先に決め、

・ウェイトの最も強いところと弱いところを設定し、

・その間の頂点を馴染ませる。
といった具合に順序立てて進めていくのがポイントです。

以前は私も片っ端からがむしゃらに調整作業をしたので、非常に時間が掛かっていましたが、 これだと思う法則を決めてから実行することで作業短縮に繋がりました。

もちろん、今回紹介した方法は個人的にやりやすいと思っている方法なので、これが正解というわけでもなく、このほかに更にやりやすい方法があるかと思います。

また、今回のは揺れ物系に関したスキニングのコツであり、人体の関節などとは勝手が違うことをご了承ください。

こちらの情報が少しでもお役に立てれば幸いです。

GA4プロパティ自動作成を無効化する方法

0

最近部署異動しましたデータマーケティング部のYサイト→です。
WEBマーケティング業界に衝撃を与えた「Universal Analytics(以下UA)の計測を停止する」というGoogleのアナウンスから、約1年になります。各社がGA4への移行に苦労する中、Googleから新たな情報がリリースされました。

[UA→GA4] 自動作成された Google アナリティクス 4 プロパティについて
https://support.google.com/analytics/answer/12938611

要約すると、「2023年2月28日までにオプトアウトの設定をしないと、自動でGA4プロパティを作成して、UAの設定内容を移行しますよ」という内容です。
一見「GA4移行が手っ取り早くできそう!」と嬉しい内容です。しかし、本当に思い描いている通りにちゃんと移行されるのか、既に移行を終えている企業はどうすれば良いのかなど、いくつかの疑問が残ります。
実際どうなるかは3月1日にならないとわからない部分もあり、個人的には「オプトアウト(GA4プロパティを自動作成させない、無効化)の設定をした方が良いのでは?」と思っています。

そこで今回は、どのようなプロパティがGA4プロパティを自動作成されてしまうのか、オプトアウト設定する方法、オプトアウトしないリスクなどをご紹介したいと思います。

GA4プロパティ自動作成対象の見分け方

まず、全てのUAプロパティでGA4プロパティが自動作成されるわけではありません。主に2つ条件があります。

①UA無償版のプロパティである
②12ヶ月以内にデータ計測がされている

これらの条件にあてはまるかわからない方は、それぞれ確認していきましょう。

①UA無償版のプロパティである

ご自身が利用されているUAが無償版か有償版かわからない場合は、実際にUAを開いて確認してみましょう。

GAの管理画面上部で確認したいプロパティ、ビューを選択しようとしてみてください。すると下図のように見えると思います。そこで「360」というアイコンがあるものは有償版のUAプロパティです。それ以外は無償版となり、今回のGA4プロパティ自動作成の対象となります。

②12ヶ月以内にデータ計測がされている
12ヶ月以内にデータ(ヒット)が計測されているかどうかを確認するわかりやすい方法はUAのレポート画面確認かと思います。
UAの左メニューの「行動」にある「サイトコンテンツ」配下の「すべてのページ」などで見てみましょう。
右上の日付部分を過去1年で指定して、グラフが表示され、ページビュー数などに数字が入っていればデータ計測されていることになります。

UAのレポート画面確認

これら条件に当てはまる方は、次章でオプトアウトする方法を確認してみてください。

オプトアウトする(自動作成させない)方法

オプトアウトの設定がされていないUA無償版プロパティは、自動でGA4プロパティを作成されてしまいます。
他部署とGAアカウントを共有していて、複数のUAプロパティが存在している場合、それぞれオプトアウト設定をしておかないと、3月1日、意図しないGA4プロパティが作成されてしまっているかもしれませんし、既存のGA4プロパティへの影響があるかもしれませんので、ご注意ください。(後述します)

オプトアウトするには、まずはUA無償版プロパティを開きます。
UA無償版プロパティの管理画面左下「歯車アイコン 管理」をクリック > プロパティの設定列にある「GA4設定アシスタント」をクリックしていきます。

UA無償版プロパティ
GA4設定アシスタント

すると下図のような画面が開きます。

GA4設定アシスタント

画面下部までスクロールして、下図のように「Google アナリティクス 4 プロパティ(基本設定)を自動作成する」の右にあるトグルボタンがオン(青)になっているか、オフ(グレー)になっているかを確認してください。

Google アナリティクス 4 プロパティ(基本設定)を自動作成する

オフになっていれば、GA4プロパティは自動で作成されません。
オフにしようとして、トグルをクリックしたけれども、オフにできないという方は、そのUAプロパティにおける「編集権限」がないので、オプトアウト設定ができません。管理者に権限付与をしてもらうか、管理者に直接オプトアウトしてもらうように依頼しましょう。

オプトアウトしないリスク

前章で前振りをしましたが、今回のGoogleのリリースは既にGA4プロパティを作成している方も注意が必要です。
例えば、UAプロパティの管理画面のGA4設定アシスタントを使用してGA4プロパティを作成し、その後GA4プロパティをカスタマイズしたとします。そのような方は、下図のようにUAプロパティとGA4プロパティが接続されている可能性があります

この場合、接続されているGA4プロパティの管理画面側では下図のように表示されます。
(「歯車アイコン 管理」をクリック > プロパティの設定列にある「設定アシスタント」をクリック)

ここで注目していただきたいのが赤枠内の「0/12 個が完了としてマーク済み」という部分です。Google的に12個設定してほしいものがあるようです。

・データの収集
 1.ウェブサイトとアプリのデータを収集する
・プロパティ設定
 2.Googleシグナルを有効にする
 3.コンバージョンを設定
 4.オーディエンスを定義
 5.ユーザーを管理
・Google広告
 6.Google広告にリンク
 7.GA4のコンバージョンに基づいて入札
 8.GA4のオーディエンスを広告のターゲットに設定
・高度な設定(省略可)
 9.データをインポート
 10.BigQueryにリンク
 11.User-IDを設定
 12.Measurement Protocolを使用

3月1日にこれらの中で「完了」となっていないものについては、自動で補完されてしまう可能性があります。
これがオプトアウトしない場合のリスクです。特にGoogleシグナルはプライバシー・ポリシーに関わる重要事項で、法務的に大きな問題になる可能性があります。「GA4ではGoogleシグナルは利用しないつもりだったのに、勝手にオンにされてしまった」とならないように、オプトアウト設定するか、それぞれ完了させましょう。

完了させるには、各項目の右側にある「>」をクリックするとダイアログボックスが表示されるので、「完了」をクリックしてください。


まとめ

少し長くなりましたが、GA4プロパティ自動作成を無効化する方法をご紹介しました。
オプトアウト(無効化)設定をしないと、思いもよらぬデータを収集してしまったり、プロパティ一覧が散らかってしまったり、わざわざ手動で設定した内容が上書きされてしまう可能性があります。これは当日になるまで何がどのようになるのか、Googleしかわかりません。
そのようなリスクを避けたい方はぜひ今回の方法でオプトアウト設定をしていただければと思います。

アピリッツでは、今回のようなGA4に関する最新情報を踏まえ、GA4導入をサポートしています。
もし、「とりあえずGA4で計測を始めたけど、全くカスタマイズしていないのでどうにかしたい」「GA4導入を機にGTMを整理、Looker Studio(旧データポータル)でデータを見える化したい」など、お困りのことがございましたら、まずはお気軽にご相談ください。

日常でも1mmぐらいは役にたつ脆弱性対策・セキュリティ関連サイト3選

0

アピリッツの知識共有サイト「ナレッジベース」で公開されている内容をアピスピでも紹介します。こちらはセキュリティエンジニアの落合さんによる記事です。

こんにちはセキュリティエンジニアの落合です。

突然ですが、みなさんはPCやスマホを使っていて自分の 個人情報が流出したり、ウイルスにかかったという経験はお持ちでしょうか?

インターネットの海には怪しげなWebサイトがたくさんあります。 自分からそのサイトに立ち入らなくても、Eメールや最近ではSMSを使ったフィッシングをして偽サイトに誘導をして個人情報を盗んだり脆弱なWeb サイトやアプリを攻撃して個人情報を盗んだりで攻撃者たちはあの手この手で個人又は企業から個人情報を盗もうとしてきます。

そんなときにセキュリティに詳しくなくても1mmくらいは役に立つサイトを3つ厳選したのでいざという時に活用してもらえると嬉しいです。

1:メールアドレスやパスワードの流出を自分でチェックできる「HAVE I BEEN PWNED ?」

まず一つ目に紹介するサイトは「HAVE I BEEN PWNED ?」というサイトです。

このサイトはFacebookなどの実際のWebサイトやアプリで攻撃者によって盗まれたEメールアドレスとパスワードがデータベース化され、自分のEmailやパスワード を入力して流出しているかを確認できるサービスです。 怪しいサイトと思われるかもしれませんが、このサイトはセキュリティ研究者の トロイ・ハント氏が運営していて、イギリスの国家犯罪対策庁やアメリカのFBI と情報共有を行っている、信頼性のあるサイトです。

自分も実際にこのサービスを利用して自分のGmailのアドレスを入力したところ個人情報が盗まれていることに気がつきました。Life bearという電子手帳アプリ の運営から個人情報流出の謝罪文の載ったメールが実際に来ておりました。 すべての個人情報流出を確認できるかどうかはわかりませんが、大規模なサービスで流出した個人情報を確認できる貴重なサイトです。

HAVE I BEEN PWNED ? URL: https://haveibeenpwned.com/

2:パスワードの強度は? 「Security.org パスワードチェッカー」

自分のメールアドレスがすでに流出したころを確認したら、対策としてはパスワードを変更して、可能であればSMSによるワンタイムパスワードを設定しておくことです。 パスワードに関してはパスワードは8文字以上で大文字小文字の英数字と特殊文字を 含めたパスワードを設定することをお勧めします。攻撃者としては長ければ長いほ どパスワードを解読するのに時間がかかるので、文字数の長いパスワードもお勧めします。

そしていざパスワードを思いついた!となったら実際にパスワードの強度も確認することもお勧めします。以下のサイトでは実際のパスワード解析にかかる時間も表示してくれます

Security.org パスワードチェッカー URL: https://www.security.org/how-secure-is-my-password/

3:添付ファイルの安全性を確かめよう「VIROUS TOTAL」

最後に、攻撃者たちはメールやSMSでフィッシングによって直接的に個人情報を盗もうとするかもしれません。又は、身近な人を踏み台にしたフィッシングかもしれません。

身近な人を踏み台にした攻撃はなかなか気を付けていないと見分けられない場合があり、 うっかり添付されたファイルを開いてしまうことがあるかもしれません。

よくあるのは、ウイルスやマルウェアを添付したメッセージを使用した攻撃が考えられます。 次のサイトは、身近な人から受信したメッセージに怪しいファイルが添付されたときに 、利用をお勧めするサイトです。このサイトはgoogleによって運営され怪しいファイル を上げるとファイルにマルウェアやウイルスが含まれているかを確認することができます。

VIROUS TOTAL URL: https://www.virustotal.com/

思わぬところに落とし穴はあります

便利なインターネット生活でも思わぬところに落とし穴が潜んでいるので、自己防衛の ためにセキュリティについて関心を持っていただけると幸いです。

「デザイナーに寄り添って話を聞きたい」山田 有里沙インタビュー

0

ゲームグロース部で部長代行としてチームをけん引する山田は、2Dデザイナー出身です。今も現場でプレイヤーとして活躍しつつ、後進の育成をしています。「私は“外に向かってグイグイ行くぞ!”ってタイプじゃないんです」と言いつつも、ある局面では「プレッシャーを感じない」そうで……? 仕事をするうえで大切にしていることを教えてもらいました(取材 2022年12月)

式姫Projectに惹かれて入社

ーー 2017年に新卒のデザイナーとして入社されていますよね。アピリッツを選んだ理由を教えてください

アピリッツの自社IP「式姫Project」に惹かれたことが一番の理由でした。就職活動中に企業研究の一環で式姫のポータルサイトを見たり実際にゲームをプレイしていたのですが、他ではあまり類を見ない筆タッチの特徴的なイラストや、ドット絵、それから華やかなドット絵のアニメーションに魅せられてしまい……。すっかり式姫Projectのファンになりました。今も変わらず大好きで大切な作品です。

アピリッツに入社して、式姫Projectのチームに配属されました。大好きな式姫とお仕事で関わることができたのは、とても幸せな体験でした。今開発中の新作も、いちファンとしてドキドキしながら楽しみに待っています。

ーー 女性管理職が増えてきていますよね。アピリッツのゲーム開発の現場は働きやすい環境だと感じますか?

働きやすいです。とくにデザイナー職の方は温厚で優しい人がとても多いなと思います。

新卒からずーっとアピリッツにいるので「他社と比べてココがいい!」っていう特徴は、私からはちょっと言えないんですが、フレックスタイム制を活用すると通院もしやすいですし、育児休業や産休制度を取得している人を多く見かけます。男性の育児休業も最近は増えていますし、いい環境だなと感じます。

性別によって働き方や仕事内容に差を感じたこともないので、私にとって働きやすい会社です。

―― 入社してすぐの頃と現在とを比べて、何か変化はありますか?

入社したばかりの頃は、自分が新人だったこともあって、先輩に声をかけるのに勇気がいりました。社内の雰囲気もすこし緊張感があったような気がします。

今は、社内は程よく柔らかい雰囲気になったかなと思いますし、自分でも積極的に動くようになりました。

―― 積極的に動くようになったきっかけは?

デザイン業務の管理を任されるようになったからです。デザイン制作の最後のゴーサインを出すのが私の役目になりました。もともと社員にチャレンジをさせてどんどん任せる社風ですし、任されたからには、もうやるしかなかった(笑) 最初は不安でたまらなかったです。

「雑な仕事」はユーザーに必ず伝わる

―― 「最終判断を自分で出さないといけない」ことにプレッシャーを感じる人も少なからずいますよね

いますね。ただ、私は自分で責任を負って最終判断を下すこと自体は、しんどくなかったんです。大学生のとき、フリーランスのイラストレーターとして活動していたので「自分の制作物がユーザーの目に触れる」ことに慣れていたのもあるのかもしれません。

それに、ユーザーがゲームに没入できるよう、粗のないグラフィックを制作することはデザイナーにとって大切なことだと思っています。だから、そこは責任持ってちゃんとやろう、って思って動いていました。雑な仕事はユーザーに必ず伝わってしまうものですし、あってはいけないことなので……。

―― デザインの管理をしながら自分でもプレイヤーとしてデザインの仕事をしていますよね。最初から両立はできましたか?

最初は難しかったです。チェックだけをずっと続けていたら1日が終わってしまって「自分が作業する時間が取れない……!」って焦ったこともありました。この時期は精神的にしんどかったです。絵をチェックするスキルや「デザインを見る目」が成長している実感はあったけれど、じゃあ自分の絵の技術はどうなんだろう、上がったかな、ちゃんと自分でも作れるのかなって不安でした。

アピリッツの広報キャラクター「山田アイコ」は山田がデザインしました(だからアイコの名字も山田なのかも?)

―― その「管理職兼デザイナー」としての不安や葛藤はどうやって克服したのでしょう?

毎日デザインの管理業務をやっていくうちに、少しずつ慣れて、効率化できるようになりました。作業を少しずつメンバーに振り分けて、自分でもデザインをしてみたり。

それに、人のアウトプットを見るのは、基本的にとても好きなんです。「そのアプローチは思いつかなかったな」など、日々刺激を受けています。

あと、社会人になってからもプライベートでの制作はずっと続けてきました。これも精神衛生上、すごく効果的だったと思います。社会人になると、個人で制作する人は減っちゃうんですが、趣味の制作は続けたほうがいいです。とくにデザインを仕事にする人にはオススメします。

そしてなにより、私が今こうしてがんばれているのは、いいメンバーに恵まれて励まされてきたことも大きいです。私が別のプロジェクトに異動するときに、私の仕事を引き継いでくれた新卒デザイナーの鈴木もすごく頑張ってくれたと思います。

デザイナー同士でどんな話をする?

ーー 山田さんのマネージャーとしての面について、教えてください。アピリッツでは1on1の文化がありますよね、どんなことを伝えていますか?

まずは、どんな対話の場でも「私はあなたの味方だ」とわかってもらえるように努めています。これは私が実際に本心から思っていることなので、伝わっているといいなといつも思います。

私自身、怒られたりキツい態度をとられるのが昔からすごく苦手なんです(笑) だからこそ自分が伝える側になった今は、やわらかな物腰を心がけています。

最近の1on1では、将来のキャリアプランや、それを実現するためにどうすればいいかといった目標の話をすることが多いです。私はアピリッツでの勤続年数が長いですし、今までの経験がメンバーと話をする上で役に立っていますね。

―― 2Dデザイナー出身の管理職として、どんな話をしていますか?

2Dデザイナーに求められていることは、今も昔も変化はあまりないかもしれません。正社員であれば、アセットの品質管理やディレクション能力は必要です。そしてエフェクトやモーションなど、イラスト以外で強みになるスキルを持つことが求められています。

たとえば、UI/UXができる2Dデザイナーは市場価値が高いです。とはいえ、2Dデザイナーになりたい人のモチベーションって、最初は「イラストがうまくなりたい!」だったりするんですよね。私もそうです。でも、絵だけを書いている社員はいません。イラスト以外の強みを持つ必要があります。だから好奇心強い人が生き残れる。

入社当時は、とにかくいろんな分野の業務を振ってもらいました。そこでスキルを身につけられてよかったなと思います。新しいことを覚えるのが大好きなんです。

―― 「正社員のデザイナーになるには?」といった相談も受けますか?

受けます。相談へのアドバイスとして、まずはプロジェクトへの貢献意欲や、いろんなソフトを扱えることが大切だよと伝えています。あとは、先程もお話ししたように、好奇心を持って仕事に取り組んでほしいです。

―― ゲームグロース部をどんなふうに引っ張っていきたいですか?

デザイナーに寄り添って、適切な評価や配置ができる管理職になりたいです。デザイナー出身の管理職は今はまだ少ないので、まずは私がそこを担いたいなと思います。

部長代行になってからは、現場でプレイヤーとして活躍しつつ、2Dデザイナーの育成に力を入れるようになりました。最近の1on1では、2Dデザイナーとじっくり話す機会がとても増えて、デザイナー同士で話すからこそできることについて考えるようになりました。

打ち明けてもらった悩みに耳を傾けて、力になれることがあると信じています。だから「私はあなたの味方だ」ってわかってもらうことは、私にとってとても大切なことなんです。

そうやってまずは内部の環境をよりよくすることに力を尽くしていきたいです。

―― ありがとうございました!

Looker Studio(旧:Googleデータポータル)で用いる図・グラフの特徴とポイント!

0

【はじめに】

デジタルエクスペリエンス部_GAチーム所属の富浦です!
デザイン制作チームから2022年の春にGAチームに異動してから、データに触れる機会が以前よりかなり多くなりました。特にLooker Studio(旧:Googleデータポータル)を用いてデータを図・グラフ化する機会が多いです。

今回はLooker Studioで用いる図・グラフの特徴と表示時のポイントについてご紹介していきます!

2022年10月11日に「Googleデータポータル」は「Looker Studio」に改称されました。
参考:https://cloud.google.com/blog/ja/products/data-analytics/looker-next-evolution-business-intelligence-data-studio

【本題】

1. 棒グラフ

■特徴
項目毎の数値を棒の長さで表したグラフ。項目毎の量を把握できます。

■表示時のポイント
①表示順
デフォルトは指標順となっているため値が大きい項目が左、小さい項目が右の降順に設定されています。例えば年齢別の場合は、若年層から昇順で配置した方が各年齢層の数値を分析しやすいため、その場合は並び替えの項目を「年齢」に変更し、「降順」から「昇順」に変更する必要があります。

②棒の数
デフォルトは「10」に設定されているため、項目が11以上の場合は設定を変更しないと表示されません。反対にTOP5を表示させたい場合は、棒の数を「5」に変更すると上位5つのみ表示されます。

③データラベル
「データラベル」を表示しておくと直感的に数値を確認することができます。

2. 折れ線グラフ

■特徴
項目毎の数値を線で繋いだグラフ。件数などの推移・変化の度合いなどを把握できます。

■表示時のポイント
①ポイントを表示
折れ線グラフはデータラベルを表示させると数値が重なって見えにくいです。Looker Studioはグラフをホバーすることで数値を確認することができるため、どこにホバーすれば良いか分かるように「ポイント」を表示しておくと親切です。

②色
各項目が近い色相やトーンだと見えづらいです。例えば性別毎の折れ線グラフであればイメージカラーに沿って青系統と赤系統にすると直感的に把握しやすくなります。

3. 円グラフ

■特徴
項目毎の占める割合を円盤状に表したグラフ。項目毎の割合を把握できます。

■表示時のポイント
①凡例
デフォルトは円グラフの右側に凡例が表示されています。スタイルの凡例から位置を「下」に変更することで、左右の余白をコンパクトに納めることができます。

②スライス数
表示される項目数が多いと割合が分かりにくくなるため、スライス数は「5個」程度にすると見やすいです。加えて色も境界線が分かりやすいように配色すると割合を把握しやすいです。

4. 帯グラフ

■特徴
帯状の中に項目毎の占める量を示したグラフ。項目毎の構成比の相違を把握できます。

■表示時のポイント
①データラベルの表示形式
表示するデータラベルを「数値」から「割合」に変更することで、より各項目の割合が直感的に分かるようになります。

5. 散布図

■特徴
2つの要素を縦軸と横軸にとり各データをプロットしたもの。データの分布状態や要素間の相関関係を把握できます。

■表示時のポイント
①データラベル
散布図はバブル数の量によって表示/非表示を選択する必要があります。大体10〜15程度でデータラベルが重なり見えにくくなるため、その場合は非表示がおすすめです。

②トレンドライン
トレンドラインを引くとデータの相関関係がより分かりやすくなります。

【まとめ】

◎各グラフのまとめ

No.図・グラフ特徴分析手法
1棒グラフ項目毎の数値を棒の長さで表したグラフ集計分析・対比分析
2折れ線グラフ項目毎の数値を線で繋いだグラフトレンド分析・対比分析
3円グラフ項目毎の占める割合を円盤状に表したグラフ構成分析
4帯グラフ帯状の中に項目毎の占める量を示したグラフ構成分析・対比分析
5散布図2つの要素を縦軸と横軸にとり各データをプロットしたもの集計分析・トレンド分析

◎各データ分析のまとめ

No.分析手法特徴
1集計分析データの分布状況や、平均値・ 中央値を集計し、分析する方法
2トレンド分析データを時系列に並べ、推移状況などを把 握し、分析する方法
3対比分析複数のデータを比較し、 その差異を把握し、分析する方法
4構成分析全体の中での構成要素の割合を 把握し、分析する方法

図・グラフは他にもヒストグラム、レーダーチャート、パレート図など様々あります。今回は良く使用する基本の図・グラフを紹介しましたが、データの性質や分析内容によって適切に使い分けることが重要です。今回ご紹介したポイントを押さえてデータ分析に役立てていただければと思います!

アピリッツでは、GA4導入をイチから支援するだけでなく、今回のようなGA4とのツール連携やABテストの運用、ECを含むWEB制作など幅広くサポートしています。WEBサービスでお困りの方や、ご興味のある方は遠慮なくご相談ください。

【GA4】経路データ探索を活用してCVに貢献したページを調べる方法

0

GA4を使い始めて「コンバージョン(CV)したユーザーが閲覧したページ(コンテンツ)を知りたい」
そう思ったことはありませんか。
おそらくそのように思われた方は「CVしないユーザーにそのページのコンテンツを接触させればCVするのではないか」という仮説があるのでしょう。
そのような方に朗報です!GA4の経路データ探索でそれを簡単に実現できるようになりました!

あ、どうも申し遅れましたyサイトーです。最近はGA4導入やWEBマーケティング支援をしております。
つい先日、GA4の経路データ探索の機能がアップデートされ、冒頭に挙げたようなことが簡単にできるようになったので、今回はその方法をご紹介していきたいと思います。

本題に入る前に簡単に経路データ探索について説明しておきます。

経路データ探索とは

経路データ探索とはGA4のデータ探索レポートのテンプレートの1つで、ユーザーの行動をツリーグラフで可視化するレポートです。
Universal Analytics(UA)を利用されている方でしたら、行動フローと似たようなものと思ってもらえればイメージしやすいと思います。

UAの行動フロー

経路データ探索自体は今までもGA4にあったのですが、ディメンションのラインナップが3つ「ページタイトルとスクリーンクラス」「ページタイトルとスクリーンクラス」「イベント名」しかなかったのです。
今回それに「ページパスとスクリーンクラス」が加わったことで、CVしたユーザーが閲覧したページを調べやすくなりました。
それではCVユーザーの閲覧したページを調べてみましょう。

CVユーザーが閲覧したページを調べる6つのステップ

  1. データ探索を開き、空白を選択
  2. 手法を経路データ探索に変更
  3. 最初からやり直すをクリック
  4. 終点を「ページパスとスクリーンクラス」にする
  5. CVページのパスを設定
  6. ステップを追加

1. データ探索を開き、空白を選択

まずはGA4の左メニューの探索をクリックして、データ探索のテンプレートを「空白」を選択してください。
※この時点で経路データ探索を選択しても良いのですが、不要なセグメントやディメンションがデフォルトで入ってしまいます。

データ探索のテンプレート一覧

2. 手法を経路データ探索に変更

自由形式のレポートが表示されたら、手法を経路データ探索に変更します。

3. 最初からやり直すをクリック

UAの時の行動フローのような図がデフォルトで出てくるかと思いますが、CVからの行動を追っていきたいので、画面右上にある「最初からやり直す」をクリックしてください。

4. 終点を「ページパスとスクリーンクラス」にする

終点と表示された部分をクリックして「ページパスとスクリーンクラス」を選択してください。

5. CVページのパスを設定

画面右の方に虫眼鏡のボタンをクリックして、出てきた検索欄にCV(完了)ページのURLに入る文字列を入れて、ページパスを検索してください。
多くの場合、CV(完了)ページのURLにはcompleteやthanksといった文字列が入るので、それらで検索して、出てきた候補リストからページパスを選択してください。

6. ステップを追加

CVのステップを選択すると、その1つ前のステップが出てきます。
その1つ前のページを知りたいページパスをクリックすると、その1つの前のステップがまた出てきます。
このようにして、CVしたユーザーがページを見ていたかCVから逆に遡って追うことができます。

まとめ

経路データ探索を実際に設定して気付いた方もいらっしゃるかもしれませんが、実はCVしたユーザーの行動をCVから遡ることは以前から可能でした。但し、CVしたユーザーを計測する為のイベントを設定したり、ページタイトルから遡る必要がありました。
とりあえずGA4のタグは入れてあるという方でも、今回の方法なら分析は容易ですね。

今回のように「GA4導入は済ませたものの使い方がわからないからセミナーを開催してほしい」

代理店の方で「お客様のGA4導入をサポートしてほしい」

など、幅広いお問い合わせに柔軟に対応しております。GA4に関するお困りごとがございしましたら、まずはお気軽にご相談ください。

Looker Studio(旧:Googleデータポータル)をより見やすくする7つのポイント!

0

【はじめに】

デジタルエクスペリエンス部_GAチーム所属の富浦です!
2021年にデザイナーとして入社し、主にデザイン案件のディレクターを1年間勤めました。その後当時在籍していたデザイン制作チームから2022年の春にGAチームに異動して半年が経ちました!
同期や先輩方に助けられながら、業務にも少しずつ慣れてきたかなと思います。

今回はGoogle Analyticsなどで計測したデータを簡単にグラフや表にして視覚化するBIツール、Looker Studio(旧:Googleデータポータル)をご紹介していきます!

2022年10月11日に「Googleデータポータル」は「Looker Studio」に改称されました。 
参考:https://cloud.google.com/blog/ja/products/data-analytics/looker-next-evolution-business-intelligence-data-studio

Looker Studioは定量分析用のレポートを作成する上でとても便利なツールではありますが、UIについてはまだまだ発展途上のツールだと感じています。だからこそ、いくつかのポイントを抑えてから使用することで作業しやすくなるだけではなく、簡単に見やすく使いやすいレポートを作成することができます!

今回はLooker Studioでより見やすく使いやすいレポートを作成する上で事前に知っておきたい7つのポイントをご紹介していきます!

【本題】

1. グリッド表示

Looker Studioでデータを視覚化しても、バラバラに配置されていては見にくいです。そんな時にはグリッドを使って整えることがおすすめです。

▼設定方法
テーマとレイアウト内のレイアウトタブから配属先を「グリッド」に変更し、グリッドのサイズを「50」から「10」に変更します。次に全体共通タブの「表示」から「グリッドを表示」にチェックを入れることでレポート上に10px単位のグリッドが表示されます。

2. タブ表示

レポートの全体が見えるように作成するためにはスペースを少しでも広く確保する必要があります。ページ切替のタブを上部に配置することで無駄なスペースを軽減することができます。

▼設定方法
テーマとレイアウトからナビゲーションの種類を「左」から「タブ」に変更すると、上部にタブが配置されます。

3. 背景色

各グラフは基本的に白背景がベストですが、レポート全体の背景色が白のままだと背景が同化してしまいます。そこで背景色に薄いグレーを引くことでグラフがくっきりと見えます。

▼設定方法
テーマとレイアウトからカスタマイズを選択し、レポートの背景を右上の白から一つ隣の「薄いグレー」を選択することで、レポートに薄いグレーの背景色が適用されます。

4. パディング

テキストには自動で左右と上部に8pxのパディングが設定されています。デフォルトのパディング設定のままだと、上下左右を揃えて配置することが難しいため適宜調整する必要があります。

▼設定方法
テキストを選択し、テキストのプロパティ内にあるパディングから「左、右、上の数値を調整」します。下記の図では、テキスト下のスコアカードと左を揃えるために左のパティングを「0px」にしています。また、テキスト横のプルダウンリストと中心を揃えるために上のパディングを「4px」に設定しています。

5. シャドウ

背景色と明度差を付けると各グラフがくっきり見えますが、シャドウを設定するとさらに各グラフをくっきりと見せることができます。

▼設定方法
各グラフのスタイル内にある背景と枠線から「枠線に影を付ける」を選択することで、グラフにシャドウが付与されます。

6. 円グラフ

円グラフは指標の項目名を表示させることができないため、そのまま配置すると何の割合なのか分かりづらいです。
そこで見出しを付ける必要があります。ドーナツ型の円グラフにして中央にテキストを配置することでスペースを有効活用できます。

▼設定方法
円グラフのスタイル内にあるドーナツ型のイラストから「穴のサイズ」を調整します。そして空けた「穴の中にテキスト」を配置します。その際は全体共通タブの「配置」から「中央揃え」などを選択すると簡単に揃えることができます。

7. 表

表は複数のディメンションと指標を設定できるため利用シーンも多いです。背景色とシャドウの設定に加えて、ヘッダーと行に背景色を付けることでさらにデータが見やすくなります。

▼設定方法
グラフを選択し、スタイル内の「表の色」を変更します。ヘッダーの色を任意のメインカラーに設定し、偶数行の色をレポート背景色と同じ「薄いグレー」に設定することで表に反映されます。

【まとめ】

Looker Studioを導入することで、定期的な集計データの分析が効率よく行えます!レポートを使いやすくすることでより効率良く定量分析が行えますので、是非今回ご紹介した7つのポイントを取り入れてレポートを作成いただければと思います!

アピリッツでは、GA4導入をイチから支援するだけでなく、今回のようなGA4とのツール連携やABテストの運用、ECを含むWEB制作など幅広くサポートしています。WEBサービスでお困りの方や、ご興味のある方は遠慮なくご相談ください。

最近人気な記事