ホーム ブログ ページ 7

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

0

2022年4月1日にアピリッツは入社式を行いました。今年は45名入社します。去年より15名多い!会場にみんな入るのか!? ということで、即日レポートです。(2022年4月 取材)

慣習だからやるわけじゃない

今年も会場はオフィスのカフェスペースです。社長の和田が「慣習だからやるわけではなくて、一生に一度の瞬間なんだから、思い出に残るような会がいいよね」と言っていたのが印象的でした。

入社式前日の様子はこちら。

人事企画部のメンバーが設営やかざりつけを行います。密をさけつつ間隔を工夫して椅子をならべています。今年も風船がいる!

始まりました。

去年と会場のレイアウトがちがいます

本質的なことを考えて仕事をする

まずは社長の和田から新入社員のみなさんにご挨拶です。

写真右側にならんで座っているのが役員です

今年の挨拶では、和田からは時事ニュースや今後の社会の流れ、そして自身が社会人になったばかりの頃をふまえつつ「敷かれたレールの上に乗っていれば上手くいく時代は終わった。だから、言われたことをやるのではなく、本質的なところを考えるために”なんで”と常に自問して動いてほしい。”何を解決しないといけないのか”を考え、本質的に自分がすべきことを考えてこの社会で生き残ってほしい」とメッセージを伝えました。

そして、それぞれの役員からも「夢中になれるものを見つけてほしい」「普通はこうすべきという常識にしばられないで」「仕事のおもしろさを見つけてほしい」「役員紹介の動画を自作したので見てほしい」など、めいめい新入社員にエールを送っていました。

ということで、入社式をつつがなく執り行った4月1日でした。明日から研修を行います!

 【ゴエクロデザインについて語ろう】その3 :これで最終回!? プロの作業環境とメイキング動画を公開します!(時界震天ラジエル)

0

アピリッツのオンラインゲーム『ゴエティアクロス(ゴエクロ)』のデザインをもっと知ってもらいたい!ということで始まったゴエクロデザイン連載。第2回ではイラストレーターの作業環境やメイキング動画を紹介しました。これが大好評だったので、第3回もメイキング行っちゃいます! 今回は「時界震天ラジエル」のデザインを担当したイラストレーター”蒼武”氏に話を聞きました。(取材 2022年3月)

第一回はこちら!【ゴエクロデザインについて語ろう】その1:ゴエティアクロス「第3回 衣装デザインコンテスト」開催中

第二回はこちら!【ゴエクロデザインについて語ろう】その2:プロの作業環境とメイキング動画を公開します!

作業環境はこんな感じ!

まずは今使っているPCとディスプレイをご紹介しますね。

◆PC:raytrek-V ZT(Core i7-8700/32GBDDR4/NVIDIA GeForce GTX1060 6GB)
◆ディスプレイ:Iiyama/23.8型/IPS方式ノングレア

発色も良くコスパの良いディスプレイだと思います。こちらをデュアルモニターにしています。

◆ペンタブレット:Wacom Intuos Pro Medium PTH-660

ずっとWacomの板タブを使っています。首と目が疲れないので板タブ派です。
ファンクションキーが便利ですが、タッチ入力は切っています。

「時界震天ラジエル」メイキング

蒼武氏による「時界震天ラジエル」のメイキング動画も公開します! 蒼武氏が制作中に考えていることなどをTIPSとして表示しています! 是非ご覧ください!(ラジエル様も一緒です♬)

蒼武氏いわく、デザイン画は自分が見やすいように配置しているものだそうです。

フェティッシュな「時界震天ラジエル」

今回はキャラクターの性格や行動原理などの最も基盤となる設定の決定にも関わらせて頂いております。
ゴエクロのストーリーが大好きなので、魅力的かつ劇的なキャラにできたら、という想いを込めて設定とデザインを担当させて頂きました!

見た目だけじゃなく性格もあわせてデザインされたんですね。

キャラクター設定のコンセプトは「神に仕えるダウナー系強者」でしたので、それを連想できる要素を入れています。過去に登場している天使のデザインの一部を踏襲しつつ、一線を画すデザインになるように詰めていきました。

あとは、3周年の時に出ている「叛逆神書エル」を連想できる要素をわざと入れているのですが……ちらほら気付いてくれている人がいて嬉しいですね!
このあたりは設定から関わらせて頂いているから出せたデザインではないかと思います。

全体のイメージは「美しい」とか「緻密で豪華」とかよりも「キャラクター性」が出るようにシンプルなデザインでまとめています。シルエットだけでも十分彼女だと判断できるのではないでしょうか!

時界震天ラジエルは、よくユーザーのみなさんから「顔がいい!」と言っていただいていると聞きました。

神に仕えるダウナー系強者! とにかく顔がいい!

そうなんですよ、嬉しいです!
顔はキャラクター性をしっかり伝えられるようにこだわり抜いたところだったのと、自分の好きな造形を突き詰めたので、そうやって込めた気持ちがユーザーに届いたのかなと思うととっても嬉しいです。
ただ、当初は「このデザインで本当に大丈夫?」というプランナーさんからの声もあったんですよね。

えっ! 「大丈夫?」というのは……?

最初に黒髪のデザインを出したときに、プランナーさんから「黒髪で大丈夫?(ゴエクロの人気キャラに前例が少ないけど)」と聞かれたんです。でも、私自身は黒髪の要素が大好きで、黒髪の魅力を最大限引き出せたら嬉しいと思っていました。
なので「誰かのフェチにするつもりで描きます!」と言ったら、黒髪で描かせてもらえることになりました笑
結果的に、彼女の性格のイメージともぴったりのキャラを作れたのではないかと思います。

全3回のイラスト企画、いかがでしたか?

ゴエティアクロスのイラスト連載は今回で一区切り! ……ということで、ゴエクロのデザインリーダーの飯山からユーザーのみなさんにメッセージです!

ゴエティアクロスのデザインリーダー・飯山です。

全3回の「ゴエクロデザインについて語ろう」はいかがでしたでしょうか?
皆さんの目に届くまでに、デザインは様々な工程を経ています。
どんなデザインであろうとも、作り手は考えや想いを詰め込んでいます。
皆さんに「素敵な体験だ!」と思ってもらえるように、今後もゴエクロデザイナーチーム、ひいてはゴエクロ運営チームは頑張っていきたいと思いますので、応援をよろしくお願いいたします!

また、今後も不定期で「ゴエクロデザインについて語ろう」を掲載できたらと考えていますので、楽しみにしていてくださいね!

アピリッツのAWS認定フル取得社員に聞く「もっててよかったAWS認定」その3 :浅田大輔

0

アピリッツではサービス品質の向上と社員の成長を促すことを目的に、2021年6月に「APN表彰手当」を定めました。平たく言うと、「認定資格の全制覇とAWSの技術を広めることをより一層推進したい!」という気持ちで作った制度です。こちらが功を奏したのか、今年はAWS認定をすべて取得したエンジニアが続々と登場しました(過去2年間は1名のみでしたが、今年は3名!)。コンプリートしたエンジニアがアピには3名もいるので、「AWS認定のどこが役に立った?」「純粋に面白いなと感じたのはどんなところ?」「後輩におすすめする?」といったAWSにまつわるあれこれを、思い思いに、ざっくばらんに語ってもらうことにしました。

最終回となる第3回は、2020年と2021年に「APN AWS Top Engineers」に選出されたアピリッツのAWS番長ことAIエンジニア・浅田大輔の「もっててよかったAWS認定ばなし」です。浅田が考えるAWSの面白さ、必読です。(2022年3月取材)

関連:アピリッツが報奨金総額120万円以上の「APN表彰手当」を始めた理由

関連するプレスリリース:アピリッツ、DX時代におけるAWS活用の推進とデジタル人材育成、ならびに福利厚生の拡充を目的に、社内制度『APN表彰手当』を制定。AWSエンジニアに報奨金を年間最大121万5千円支給

「AWSの定石」を学べる

資格試験を取ったこと自身というよりも、資格を取るにあたって勉強した際に、色々な観点を学べたことが良かったと思います。

コスト、耐障害性、運用、拡張性、セキュリティなどの観点は、サービスを展開するうえで重要なことですが、それらをAWS上でどのように実現していくのか、というエッセンスを学べました。言ってみれば定石、ベストプラクティスということですね。

AWSを活用する案件においては、それが受託であれ、自社サービスであれ、大体何かしら解決したい問題があります。アクセスが大量に来ても耐えるようにしたい、運用を楽にしたい、コストを削減したい、短期でサービスローンチまでもっていきたい、大規模災害に備えたい、分析環境を整えたい、etc.。それらの解決の拠り所となるような考え方を学べたのが良かったと思います。

もちろん、試験で学べることで全てが解決できたわけではありません。試験で想定されるケースはある種限定的な状況が想定されますが、現実のケースはそこまで単純ではないことの方が多いですから、試験の知識だけでは不十分とさえ感じます。ですが、基本的な定石を抑えているからこそ、応用も効くと思いますし、自信をもって取り組めていると思います。

刻一刻と進化し続けるAWSのすごさ

必要なものを、必要な場所に、必要なタイミングで、必要な量だけ調達できる。しかもリーズナブルな価格かつ品質の保証されたものを。これって、すごく便利ですよね。小規模なスタートアップはもちろん、大規模なエンタープライズでも、すごく戦略的な価値があると思ってます。

加えて、刻一刻と進化し続けているところは、素直にすごいなと思います。今日の常識は、下手すると明日には陳腐化しているかもしれません。

例えばAWSを代表するサービスの一つであるS3(Simple Storage Service)では、「効率よく検索するためにランダムなプレフィックスをつける」、「結果整合性なのでデータを更新した直後に読みこんだ場合に古い状態のままということが起こりえるので、確実に更新後のデータが欲しければ新しいファイル(キー)を作成してそれを読みこむ」などのプラクティスがかつては行われていました。

ですが、今やランダムなプレフィックスに何のタクティカルアドバンテージもなく、デフォルトで強い整合性がサポートされるようになっています。

このように、AWSは日々進化するので、知識をアップデートし続ける大変さはあるのですが、その分便利に使えるようになっていくので、RPGで新たなアイテムを手に入れて苦戦していた強敵を楽に倒せるようになるような感覚に近い楽しさを感じます

ゲームといえば、オンラインゲーム感覚でクラウドを学べるコンテンツが出たそうです。他にも強化学習エンジニアの育成の一環でDeepRacerを展開したり、SageMakerを教育目的で無料で利用できるSageMaker Labなどを展開するなど、次代の教育に力を入れているのも素晴らしいと思います。

AWSの専門家として認知されること

ある意味では、実務で役に立ったということになるのかもしれないですが、まずAWSの専門家であると認知してもらえるということは大きなメリットでした。

もちろん実力が伴っていないと話にならないですし、資格をもってないからといって業務に支障があるわけではない(むしろ、資格はなくても、知識、経験ともに十分備えている方はたくさんいると思います)のですが、一つの分かりやすい看板にはなるのかなと思います。

少なくとも、自発的であれ、やむを得ずであれ、AWSの知識吸収に対して積極的に時間を割いている、という証明にはなるはずです。そうしたときに、言動への説得力に多少なりとも良い影響を与えるはずです。

また、何かAWSのことでわからないことがあれば、この人に聞いてみようみたいな流れができやすくなります

そうすると、期待に応えるために、よりAWSのことに詳しくならなきゃというモチベーションや、自負、矜持なども生まれてくるでしょう。そこからさらに、「またこの人に聞いてみよう」、「答えられるように、もっと勉強しとかなきゃ」みたいな良いスパイラル、フライホイールになっていくのかと思います。

少しづつ学んでいけば、合格にたどりつける

「宜しく先ず一事より一日より始むべし」 という言葉もあります。もし、AWSについてもっと知りたいと思ったら、AWS認定資格の取得を目指してみるのは如何でしょうか。思い立ったが吉日だと思います。

最初は遠い道に思えても、少しづつ学んでいけば、合格にたどりつけると思います。 大切なのは『合格に向かおうとする意志』だと思います。 向かおうとする意志さえあれば、たとえ一時的に不合格になったとしても、いつかはたどり着きます。向かっているわけですから。

アピリッツのAWS認定フル取得社員に聞く「もっててよかったAWS認定」その2 :中村翔吾

0

アピリッツではサービス品質の向上と社員の成長を促すことを目的に、2021年6月に「APN表彰手当」を定めました。平たく言うと、「認定資格の全制覇とAWSの技術を広めることをより一層推進したい!」という気持ちで作った制度です。こちらが功を奏したのか、今年はAWS認定をすべて取得したエンジニアが続々と登場しました(過去2年間は1名のみでしたが、今年は3名!)。コンプリートしたエンジニアがアピには3名もいるので、「AWS認定のどこが役に立った?」「純粋に面白いなと感じたのはどんなところ?」「後輩におすすめする?」といったAWSにまつわるあれこれを、思い思いに、ざっくばらんに語ってもらいます。

第2回は、オンラインゲーム事業のクライアントエンジニア・中村翔吾の考える「もっててよかったAWS認定ばなし」です。ちなみに、中村は約7ヶ月で一気にAWS認定コンプリートまで駆け抜け、並行してAWS認定の社内勉強会を主催するアジリティの高い人物です。(2022年3月取材)

関連:アピリッツが報奨金総額120万円以上の「APN表彰手当」を始めた理由

関連するプレスリリース:アピリッツ、DX時代におけるAWS活用の推進とデジタル人材育成、ならびに福利厚生の拡充を目的に、社内制度『APN表彰手当』を制定。AWSエンジニアに報奨金を年間最大121万5千円支給

ゲーム部門で活きるAWSの技術

AWS Certified Solutions Architect – Professional

新規開発のゲーム案件にインフラ構築として参加する際に、要件を聞いただけで構成をイメージできるようになります。そこからCloudFormationへ落とし込むスピードが上がったので、勉強してよかったですね。

AWS Certified Machine Learning – Specialty

こちらは、実務でわかりやすく役に立ったシーンはまだないのですが、取ってよかったなと思います。3年前挑戦&挫折したkaggleのタイタニック問題を今ならクリアできそうな気がします。

また、機械学習は巷でも話題になっていますよね。ですから、知識があることの1つの指標として取得しておくと良いアピールになるはずです。勉強しましょう。

AWS Certified Data Analytics – Specialty

ゲーム開発部門としては、売り上げだけを見るのではなく、ユーザーの動向を分析し、常にトレンドを追いかけていくことが今後さらに必要となるでしょう。こういったトレンドのなかで「どのデータをどのように可視化すべきか」という話題を論じることかできるようになったのは、大きな変化だと思います。

「こんな機能あったらいいのにな」が全部ある

AWSの技術のおもしろいところは「こんな機能あったら便利なんだけどなー」とこちらが思うと、大体あるところですね。AWS認定の勉強中に出合うことが多かったです。

おもしろいとはいえ、AWS認定11種をコンプリートすることは非常に長い道のりです。まずは1つ取得してみることから始めるといいと思います。

中村の書いたAWS認定の勉強会にまつわる記事はこちら

明日の「もっててよかったAWS認定」は、アピリッツのAWS番長・APN AWS TOP ENGINEERの浅田です!

アピリッツのAWS認定フル取得社員に聞く「もっててよかったAWS認定」その1 :串田匠彌

0

アピリッツではサービス品質の向上と社員の成長を促すことを目的に、2021年6月に「APN表彰手当」を定めました。平たく言うと、「認定資格の全制覇とAWSの技術を広めることをより一層推進したい!」という気持ちで作った制度です。こちらが功を奏したのか、今年はAWS認定をすべて取得したエンジニアが続々と登場しました(過去2年間は1名のみでしたが、今年は3名!)。コンプリートしたエンジニアがアピには3名もいるので、「AWS認定のどこが役に立った?」「純粋に面白いなと感じたのはどんなところ?」「後輩におすすめする?」といったAWSにまつわるあれこれを、思い思いに、ざっくばらんに語ってもらいます。
第1回は、21新卒のエンジニア・串田匠彌の「もっててよかったAWS認定ばなし」です。(2022年3月取材)

関連:アピリッツが報奨金総額120万円以上の「APN表彰手当」を始めた理由

関連するプレスリリース:アピリッツ、DX時代におけるAWS活用の推進とデジタル人材育成、ならびに福利厚生の拡充を目的に、社内制度『APN表彰手当』を制定。AWSエンジニアに報奨金を年間最大121万5千円支給

「認定資格とっててよかった!」と思う局面は沢山あった

AWS Certified Cloud Practitioner

AWS認定のうち、これは「最初の一歩」でした。実務で……というわけではないのですが、採用面接でアピリッツの執行役員の西脇さんとの会話のネタとして活躍してくれました。

AWS Certified Solutions Architect – Associate

CloudFormationでリソースを作成する際に、ymlファイル内の各セクションに何を記載すべきかを事前に理解することができました。

AWS Certified Solutions Architect – Professional

CWAlarmやCWLogsを用いての監視設定で、概要についてはすでに試験対策で勉強していたので、スムーズに開発に取り組めました。

また、「サービス自体の機能はわかるけど、どうやってやりたいことを実現したいかわからない」というお客様に対し、実用的なサービスの組み合わせをご提案できるようになりました。

AWS Certified Machine Learning – Specialty

機械学習は、そろそろ市場に馴染んできた技術だと思います。なので、そのうち「教養として機械学習の知識はあるよね? 機械学習を用いての実装できるよね?」という状況がスタンダードになっていくのではと考えます。そんな日に備えて、勉強しておいて損はないです。

そして、実際に勉強して「おもしろいなあ」と感じた点もありました。Rekognition・Forecast等は、機械学習にあまり馴染みのない人でも恩恵を受けられるようなサービスです。ユーザが「使えそう!」と思ったサービスならなんでも出してくれそうと思いました。これからが楽しみですね。

AWS Certified Security – Specialty

暗号化されていないS3、EBSの暗号化の仕組みは理解できたので、今後使えそうです(まだ実際にやっていないのでなんとも……ではありますが)。

Envelop暗号化について仕組みを詳しく知ることができたこともよかったです。特に、マスターキーを削除したらどれぐらいマズいのか、そして間違って即時削除されないようにAWSがどういった対策を取っているのかが印象的でした。

こういったユーザが意図せずやってしまうであろうインシデントに対して、AWSが予見的に対策を取っているところに「このフォロー考えた人、頭いいなぁ」と思いました(CloudTrailのログ取得とかKMSの削除保護期間とか)。

全部の資格に当てはまる「よかったこと」「おもしろいこと」

とにかくドキュメントを理解するのが早くなります。言うまでもなく、これは仕事をする上でとても助かります。

勉強を続けて「おもしろいなあ」と感じることもたくさんありました。たとえば、RDSのフェイルオーバーやConfigでの構成管理といった「開発に必要だけど面倒なステップ」をAWS側が担ってくれているところに、AWSの技術の凄さや利便性を感じます。

そして、開発の現場以外でもメリットは大きかったです。たとえば、以前ならばお客さまとの会話で上司や他のメンバーに確認してからご回答していたことを、持ち帰らずにその場でお話できるようになりました。そうすると、私個人がお客さまからも頼られるようになるんですよね。

みんな取ろうよAWS認定!

前提として、自分はエンジニアという業界を「頑張れば頑張った分だけ差が顕著に表れる」と考えています。ですから、新卒でエンジニアとなる方々には、日々勉強する習慣をつけてもらって、より強いエンジニアになってほしいと考えています。

ただ「頑張ってすごいエンジニアになる!」みたいな長期的な目標だと、自分がそれに近づいている実感が湧いてこない気がします。自分も社会人1年目の頃にそういった経験がありました。「自分は今エンジニアとしてどのレベル層にいて、これから何を学習すべきで、それにはどの学習リソースが必要か」ということを把握できておらず「実は迷走しているんじゃないか」と考えていた時期は、なかなかに辛かったです……。

そうならないよう、まずは短期的な目標を設定し、それを達成し続けることで楽しく学習を進めてもらいたいです。そして自分自身がレベルアップしていく手応えを楽しんでほしいです。実務に役立つし、報奨金も出るのでみんな受けましょう(笑)

明日の「もっててよかったAWS認定」は、オンライゲームセグメントのクライアントエンジニア・中村さんが語ります!

CDKでさくっとECSサービスとCapacity Providerを設定する

0

はじめに

デジタルイノベーション部の浅田です。

AWSをはじめとしたクラウドがオンプレミスに対してもつ優位性の一つに、インフラストラクチャーをコードとして管理できることがあります。いわゆる、Infrastucture As a Codeというわけですが、そのためにAWSではCloudFormationを利用することが一般的です。

CloudFormationも十分に強力な機能ですが、それをさらに強化するものとして、AWS Cloud Development Kit(以下、CDK)があります。

そこで、今回はCDK(on TypeScript)を使ってECS上のサービスを作成することで、いかに簡単にCDKでAWSのインフラを作成できるかをご紹介したいと思います。なお、動作確認済みのCDKバージョンは執筆時点で最新の2.15.0となります。また、CDKの初期設定などは紙面の都合上省略致します(参考:CDK初期設定)。

今回、作成するAWSの構成

今回はECS上のサービスとして、ALBで負荷分散された、EC2起動タイプのNginxのサービスを立てるということをやっていきたいと思います。そこにさらに、ECSのキャパシティプロバイダーを使うことによって、サービスに必要なEC2リソースをAutoScalingで動的に起動させる設定を入れ込みたいと思います。

構成図としては、以下となります。

キャパシティプロバイダーって?

参考:Amazon ECS キャパシティープロバイダー

キャパシティプロバイダーを簡単に説明すると、ECSのタスクコンテナが必要とするCPU/メモリなどに応じて、ホストされるEC2のリソースをAutoScalingさせる機能です。

マイクロサービスを多数動かすコンテナ利用では、個々のコンテナごとにEC2が用意されるわけではなく、ひとつのEC2の中に複数のコンテナが稼働するのが当たり前になります。そうしたときにEC2自体のCPU使用状況などをもとにAutoScalingさせるような旧来の運用だと、どれぐらい足りないのか判断がつきません。

大きなリソースを要求するようなコンテナのタスクを増やす必要があれば、大きなインスタンスが必要となるでしょうし、小さなリソースを要求するコンテナのタスクを増やすのであれば、小さなインスタンスのほうが効率が良くなります。

そこで、タスク側が「コンテナを××台建てたいから、必要なリソースを用意して」と要求した際に、ECS側が他のコンテナとの兼ね合いを含めて必要なリソースを満たせるようにEC2の台数を調整する、というのがキャパシティプロバイダーの機能になります。

個々のタスクやサービス側がコンテナのCPU/メモリ使用量であったり、リクエスト量、処理データ量、スケジュールによるバッチ処理などのイベントなどに応じてタスクの数をコントロールし、それに必要なリソースをECS側がコントロールすることによって、担当する範囲が明確化され疎結合になるというのもキャパシティプロバイダーを利用するメリットの一つだと思います。

ECSのサービスを作るうえで必要となるAWSの要素

上記のような設定をAWSで構築しようとすると、作成する必要がある要素は意外と多くなります。

ざっとあげるだけでも以下のようになります。

  1. VPC、サブネット、インターネットゲートウェイ、ルートテーブル、セキュリティグループなどのネットワーク関連リソース
  2. ECSクラスター、クラスターを構成するEC2インスタンス、起動設定、AutoScaling設定などのECSクラスター関連リソース
  3. ALB、リスナールール、ターゲットグループの設定などのALB関連リソース
  4. タスク定義、サービス起動設定などのECS上のサービス関連リソース

これをCloudFormationで定義しようとすると、数百行の定義を書くことになります。

L1コンストラクタとL2コンストラクタ

CDKには、AWSのリソースを簡単に定義するためにコンストラクタが用意されています。その中でも、L1コンストラクタ、L2コンストラクタがあります。

L1コンストラクタはほぼCloudFormationと同じ要素を同じようにコントロールできる柔軟性を持っていますが、その分設定しなきゃいけない要素が多くなります。

L2コンストラクタは簡単にAWSリソースを定義できるように用意された機能です。細かいコントロールはL1コンストラクタ程できませんが、その分圧倒的に簡単にリソースの定義ができます。以下ではL2コンストラクタを中心に扱います。

クラスター側のスタック作成

まず、サービスを動かすための基盤を作成するスタックを作ります。使っているモジュールは以下です。

import * as ec2 from 'aws-cdk-lib/aws-ec2';
import * as ecs from "aws-cdk-lib/aws-ecs";
import * as autoscaling from "aws-cdk-lib/aws-autoscaling";

VPCの作成

まずはVPCです。

const vpc = new ec2.Vpc(this, "VPC", {
    vpcName: `Vpc`,
    cidr: "10.0.0.0/16",
    natGateways: 0,
    maxAzs: 99,
    subnetConfiguration: [
        {
            cidrMask: 24,
            name: "public",
            subnetType: ec2.SubnetType.PUBLIC,
        },
    ],
});

これだけの記述で、サブネットやルートテーブル、インターネットゲートウェイなどの諸々を作ってくれます。

今回はNatGatewayを使わないのでnatGatewaysを0に設定していますが、これを指定してあげればNatGateway、およびそのルートテーブルなども作成してくれます。

また、maxAzsを指定することで、サブネットを作るアベイラビリティゾーンの数の指定ができますが、大きな値を指定することで、そのリージョンに存在するアベイラビリティゾーン分サブネットを作ってくれます。東京リージョンとバージニアリージョンなど、アベイラビリティゾーンの個数が異なるリージョンに適用するさいに、意識せずに済むようになります。

AutoScalingの作成

続いてECSクラスターを構成するEC2のAutoScaling設定です。

const ec2SecurityGroup = new ec2.SecurityGroup(this, "Ec2SecurityGroup", {
    vpc,
});
ec2SecurityGroup.addIngressRule(
    ec2.Peer.ipv4("10.0.0.0/16"),
    ec2.Port.tcpRange(32768, 65535)
);
const autoScalingGroup = new autoscaling.AutoScalingGroup(this, "ASG", {
    vpc,
    instanceType: new ec2.InstanceType("t3.small"),
    machineImage: ecs.EcsOptimizedImage.amazonLinux2(),
    vpcSubnets: {
        subnetType: ec2.SubnetType.PUBLIC,
    },
    minCapacity: 0,
    maxCapacity: 10,
    securityGroup: ec2SecurityGroup,
});

ここでは、AutoScalingで起動されたEC2で許容するセキュリティグループを作っています。ポートはALBの動的ポートの範囲を指定してます。また、AutoScalingで起動されるEC2のスペックや、サブネット、最大起動数なをの設定を入れています。

ECSをEC2で運用する際には、EC2上のECSエージェント設定ファイルにクラスター名を書き込む設定をEC2起動時にユーザデータで設定する、などを定型的に行いますが、上記のAutoScaling設定を後続のECSクラスター設定と組み合わせることで、ユーザデータによるクラスター名設定もCDKが自動でやってくれます。また、ECS運用で必要となる権限である、ECRからのイメージ取得権限のIAMロールなども自動作成してくれます。便利ですね。

クラスターの作成

続いて、ECSクラスターの設定です。

readonly cluster: ecs.Cluster;
readonly capacityProvider: ecs.AsgCapacityProvider;

...(省略)
this.capacityProvider = new ecs.AsgCapacityProvider(this, "CapacityProvider", {
    capacityProviderName: "CapacityForT3Small",
    autoScalingGroup,
});
this.cluster = new ecs.Cluster(this, "Cluster", {
    vpc,
    clusterName: `AppCluster`,
});
this.cluster.addAsgCapacityProvider(this.capacityProvider);

やっていることは3点です。

  1. キャパシティプロバイダーを作成します。といっても、前節で作成したAutoScalingグループの設定を紐づけて作成しています。
  2. クラスターを作成します。作成済みのvpcを指定して名前を付けています。
  3. 1で作成したキャパシティプロバイダーを2のクラスターと紐づけています。

ポイントとして、次節で説明するサービス用のスタックで使用するため、コンストラクタのプロパティとしてcluster, capacityProvider変数を使用しているので、thisのプロパティに代入しています。こうすることで、複数のスタック感で意識せずに内容を連携できます。

実際には、裏でCloudFormationのExport Value/Import Valueを使って連携されています。そこらへんを細かく意識しなくてもいいのは楽ですね。

サービス側のスタック作成

続いて、サービスのスタックを作成します。使用しているモジュールは以下です。

import * as ec2 from "aws-cdk-lib/aws-ec2";
import * as ecs from "aws-cdk-lib/aws-ecs";
import * as ecsPatterns from "aws-cdk-lib/aws-ecs-patterns";

サービスの作成

つづいてECSのサービスです。

const securityGroup = new ec2.SecurityGroup(this, "ALBSecurityGroup", {
    vpc: cluster.vpc,
});
securityGroup.addEgressRule(ec2.Peer.anyIpv4(), ec2.Port.allTraffic());
const loadBalancedEcsService =
    new ecsPatterns.ApplicationLoadBalancedEc2Service(this, "NginxService", {
        cluster,
        cpu: 256,
        memoryLimitMiB: 256,
        taskImageOptions: {
            image: ecs.ContainerImage.fromRegistry("nginx:latest"),
        },
        listenerPort: 80,
        publicLoadBalancer: true,
        desiredCount: 1,
    });
loadBalancedEcsService.loadBalancer.addSecurityGroup(securityGroup);

まず、ALBで使用するセキュリティグループを作成します。後続の処理で自動でセキュリティグループが作成されるのですが、EgressのルールがALBの動的ポートの設定が通らないようになっているので、Egressルールを追加しています。

続いてALBとサービスの設定です。CDKの標準モジュールとしてecs-patternsというものがあります。これは、ECSのサービス設定としてよくあるパターンをモジュール化したもので、ただでさえ簡略化されているCDKによるリソース作成がさらに簡単になっています。

上記の十数行のコードで、ALB、リスナールール、ターゲットグループなどのALB関連リソースを作ってくれるだけでなく、ECSのタスク定義、サービスの作成、ALBとの紐づけなどを作成してくれます。

ここでは設定していませんが、証明書の設定、HTTPからHTTPSへのリダイレクト、ドメイン名の設定なども指定できます。また、ログルーターの設定、環境変数の設定なども上記のコンストラクタのパラメータとして指定できる柔軟性も持っています。素晴らしいですね!

キャパシティプロバイダーの設定

といった具合に、便利なecs-patternsモジュールなのですが、EC2上のALBで負荷分散されたサービス(コンストラクタ名としてはApplicationLoadBalancedEc2Service)を作る際に、キャパシティプロバイダーの設定ができません。ecs-patternsではないecsモジュールを使用してサービスを作成すればもちろん設定可能ですが、ecs-patternsの便利さを利用できなくなります。

そこで、以下のように追加の設定を行うことで、キャパシティプロバイダーを利用することができます。

const service = loadBalancedEcsService.service.node
    .defaultChild as ecs.CfnService;
service.launchType = undefined;
service.capacityProviderStrategy = [
    {
        weight: 1,
        capacityProvider: capacityProvider.capacityProviderName,
    },
];

やっていることは3点です。

  1. 前節で作成したloadBalancedEcsServiceのサービスリソース(service)をL1コンストラクタのCfnServiceにキャストして取り出します。
  2. serviceのlaunchTypeがEC2に設定されているので、undefinedに設定することでリセットします。
  3. そして、キャパシティプロバイダーとしてクラスター側の設定で作成したcapacityProviderを使用するように設定します。

上記の設定を追加することにより、作成したキャパシティプロバイダーを使用して、サービスを起動するように設定できます。

終わりに

いかがでしたでしょうか。CDKを利用することで、すごく簡単にECSのサービスを立ち上げられることがご理解いただけたのではないでしょうか。

CDKには、ほかにもいろいろと便利なコンストラクタが標準で用意されていますし、サードパーティのCDKコンストラクタも存在します。それらを利用することで、より最小限の労力でAWSのリソースを定義することができます。積極的に活用することでハッピーなAWSライフを送りましょう!

ゲームパッドを左手デバイスに

0

アピリッツのエンパワーメントサービス部に所属しております3Dデザイナーの杉山です。
デジタルイラストなどの作業において左手デバイスというものを使用している方は結構いるのではないかと思いますが、自分はその左手デバイスとしてゲームパッドを使用しているので今回はその使用感やメリット・デメリットなどについてまとめてみました。

使用しているゲームパッド

まず始めに簡単ではありますがこちらが普段自分が使用しているゲームパッドのスペックになります。

製品PC用ゲームパッド(高耐久モデル)
形状一般的な両手持ちタイプ(アナログスティックあり)
接続無線
ボタン数13ボタン
価格約2500円(2022年3月時点)
電源単3形電池 2本
その他キー割り当て対応

選ぶ際のポイントとしてはまずキーの割り当てに対応していることが今回の場合絶対条件ですが、他にも使い勝手の良さなどを考えると無線接続高耐久仕様ボダン数の多さなどもかなり重要なポイントだと思います。
その他大きさ、重さ、価格など色々と検討する項目はありますが、それらに関しては個人の感覚によるところが大きいので実際に店頭で触って自分に合ったものを探すのが一番だと思います。

左手デバイスとしての利用手順

ここからは実際にゲームパッドを左手デバイスとして利用するための手順について簡単に紹介致します。
また普段使用している環境の都合上、併用するアプリケーションはClipStudioPaintを想定させて頂きます。

1.ゲームパッドのキーマッピング

まずはゲームパッド側のキーマッピングを行っていきます。
あとでClipStudioPaint側でもショートカットのカスタマイズを行うので基本的にここでのキーの割り当ては適当でいいのですが、使用頻度の高いデフォルトのショートカットとの干渉をなるべく回避するため自分は数字キーなどを割り当てるようにしています。
また、作業時に常に使用するボタンは片手で扱える半分のみなので基本的にはその範囲にだけ割り当てを行っておけば問題ありません。逆側のもう半分のボタンについてはデフォルトの複数同時推しショートカットなどをワンクリックで行えるのように割り当てておくとより効率的になるかと思います。

参考:エレコムゲームパッドアシスタント(画像は筆者の設定)

2.ClipStudioPaint側のショートカットカスタマイズ

次に先程行ったゲームパッドのキーマッピングを基準にClipStudioPaint側でショートカットのカスタマイズを行います。
カスタマイズを行う際は後々混乱しないようになるべくデフォルトのショートカットを崩さないように新規追加する形でキーの割り当てを行っています。

参考:ClipStudioPaint ショートカットキー設定(画像は筆者の設定)

3.最終的な動作確認

ゲームパッドのキーマッピングとClipStudioPaint側のショートカットカスタマイズが終わったあとは実際に使用して正常に動作するかを確認をして頂き、問題がなければすべての作業は完了です。

以下今回の手順を元に自分が普段ClipStudioPaintでの作業時に使用しているゲームパッドの割り当て表をまとめましたので参考にして頂ければと思います。
ワンポイントとして、片手で扱えるゲームパッドのボタン数は約10個程度と少ないですが、Ctrlキーを割り当てたL1ボタンとの同時入力も含めて検討することで少ないボタン数でもより多くの処理を割り当てることが可能になります。

ゲームパッドのボタン割り当てた処理(通常)割り当てた処理(L1との同時押し)
L1Ctrlキー入力
L2Shiftキー入力
中心ボタン(左)キャンバス反転キャンバス表示リセット
十字ボタン(上)ベタブラシやり直し
十字ボタン(下)消しゴムブラシ元に戻す
十字ボタン(左)水彩ブラシ描画色と背景色入れ替え
十字ボタン(右)鉛筆ブラシ描画色と透明色入れ替え
左ステック(上)手のひらツールキャンバス表示拡大
左ステック(下)スポイトツールキャンバス表示縮小
左ステック(左)ブラシサイズ拡大キャンバス表示左回転
左ステック(右)ブラシサイズ縮小キャンバス表示右回転
左ステック(押し込み)レイヤー透明ピクセルロック

メリット

左利きの人でも同じ要領で利用できる

一般的に左手デバイスと呼ばれるようにこの手の補助デバイスは右利きを前提として設計されることが多いですが、今回の方法は左利きの人でも同じように利用することが可能です。

疲れにくい

個人的な感覚ですが、手を開いた状態で操作するキーボードタイプと比べると握った状態で操作できるゲームパッドの方が疲れにくい印象です。また、握ったとき手にフィットする形状なのも良いです。

無線なので自由にポジションを決められる

自分は疲れたときなどたまに膝上に乗せて使うこともあります。

比較的低コスト

大体5千円~1万円という左手デバイスの価格帯の中で自分が使用しているようなゲームパッドは現在約3千円程度と比較的安価に購入できます。

片手持ちでも同時押しが可能

同じような片手持ちデバイスの中に薄型軽量のリモコンタイプがありますが、そういったものは基本親指のみの操作で同時押しが不可能です。それに対しゲームパッドであればL1/L2ボタンを人差し指と中指で操作可能なためCtrl+Shiftといった入力も可能になってより多くの操作に対応することができます。

キーの位置を確認する必要がない

ボタン数の多いキーボードタイプだと押す際に目視で確認するといった手順が必要になる場合がありますが、ゲームパッドなら割り当てた操作を覚えてしまえば目視で確認せず直感的な使用が可能なので慣れるとかなり効率的です。

デメリット

使えるボタン数がキーボードタイプと比べると少ない

基本的に使えるボタンはスティックの4方向入力を含め約10個程度なので、ショートカットを割り当てる際には色々と組み合わせを考えながら配置する必要があります。

手が小さいと少し使いづらい

手が小さいと中央部分のボタンが押しづらかったり4方向のスティック入力の差別化が難しかったりするので不便かもしれないです。

小型のリモコンタイプと比べると大きくて重い

基本的にゲームパッドは両手で使うものなので専用のリモコンタイプと比べればやはり重量的にも体積的にも余分な部分が多いです。

最後に

今回ゲームパッドを左手デバイスとして利用している立場として色々と記載させて頂きました。
慣れると本当に直感的に操作できてストレスも少ないので興味のある方は是非試して頂ければと思います!

【ついにコンプリート】新卒1年目エンジニアAWS認定フルコンプを目指す5:Advanced Networking – Specialty

0

21新卒でアピリッツに入社したエンジニアの串田 匠彌です。せっかくだから新卒1年目のうちにAWS認定資格を全部取得してみることにして、業務の開発と並行して勉強と受験を続けています。順調に受験→合格を重ねて、残るはあとひとつ。2月に合格した「Advanced Networking – Specialty」についてご紹介します。

前回の記事はこちら → 新卒1年目エンジニアAWS認定フルコンプを目指す4:Data Analytics – Specialty , DevOps Engineer – Professional

高まる緊張感

実はMachine Learning – Specialtyの受験から結構緊張していて、常に胃が痛い状態でした……(今となってはいい思い出ですが笑)

合格していたといえばしていたのですが、当時は残り4つだった試験のうち1回でも不合格だと3月末までに間に合うか厳しいということもあり、「次落ちたらヤバい」というプレッシャーが常にあったので多分そのせいです。

11. AWS Certified Advanced Networking – Specialty (2022年2月)

難易度

★★★★★

そもそも「自分はネットワークの知識があまり足りていないかも」と考えていたので、まずは書籍で基礎を学習し、その後は問題演習を繰り返すというフローで進めました。

肝心の問題演習ですが、世に出回っている問題集が少ない&難易度が難しめということもあり「少なくともUdemyとkoiwaclubで聞かれたところは詳細に調べておこう」という意識で勉強し、同じ問題集を何周か解いていました。

(そして試験勉強が終わったタイミングで問題集が発売されました)

勉強方法と勉強時間

書籍とUdemyとkoiwaclubで試験対策をしました。
期間:下記を3週間ぐらい
平日:2時間
休日:5時間

オススメの書籍

マスタリングTCP/IP―入門編―(第6版)

・(Udemy)Practice Exam – AWS Certified Advanced Networking Specialty
・(koiwaclub)https://aws.koiwaclub.com/

以下は自分が受験後に発売されました(もっと早くに出ていれば…!)
・(書籍)要点整理から攻略する『AWS認定 高度なネットワーキング-専門知識』 (Compass Booksシリーズ)

試験についてのアドバイス

今回は書籍とkoiwaclubだけでもどうにかなりそうなレベル感でした。 Advancedと言うだけあって少し突っ込んだ知識が必要かと思いますが、正直なところ実務で使えるかは微妙な気がします…… 。(「Transit VPCって今使うのか?Transit Gatewayがあるからほとんどそっち使う気がする」とか諸々)

対策本も2月末に発売されたことや今年試験改訂が実施されることから、(特段の事情がない限りは)対策本→改訂後の試験を受験というパターンが合格しやすさ、実務での活用のし易さから考えて、ベターなルートなのかなと思います。

全部受験してみて

完走した感想(激うまギャグ)ですが、「早期にSolutions Architect – Professionalを取得したおかげで他の試験も合格できたなー」と感じた場面が多々ありました。特に専門資格の5つにおいてはの業界特有の単語が出題されたりするので、サービス問題(AWSのサービスの知識だけで正答を導けるという意味合い)をなるべく落とさないという精神で取り組むと、良いかもしれません。

難易度の高いものから3つ選ぶとすれば、

  1. Advanced Networking – Specialty
  2. Solutions Architect – Professional
  3. DevOps Engineer – Professional

な気はしています。あくまで個人の感想ですが、Solutions Architect – Professionalは対策本が2冊出版されていてどちらも優秀なのでProfessionalという名前の割には苦労しなかったこと、Advanced Networking – Specialtyの方が、そもそも問題が難しい&学習のリソースを探すのに時間がかかったという点で苦労したことが要因です。

あとは何より、目的を持って勉強することが肝要です。自分の場合、「仕事で悩む時間を減らしたい」という思いや、実務で先輩エンジニアに助けてもらい「自分もこうなるべきだ」と感じたことが学習への原動力となりました。どうしてもやる気が出ないときは参考にしてみてください。

知識をどう活かすか、伝えるか

ひとまず試験を終えて、今後大事になってくるのは「今まで得た知見を、ここからどれだけアウトプットできるか」だと考えています。

なので無論、実務で結果を出すということは引き続きシビアに取り組みますが、それに加えて後輩に技術を伝えていくこともやっていきたいです。上の世代から技術を教わり、それを今度は自分が下の世代に伝えていくって、何か面白さを感じませんか?

それを実現するためにも、純粋な技術力だけでなく人に伝える力のような人間力も養っていきたいです。

スコア(参考程度に)

下記の通りです。

試験名スコア
AWS Certified Cloud Practitioner(AWS-CLF)874
AWS Certified Solutions Architect – Associate(AWS-SAA)725
AWS Certified Developer – Associate(AWS-DVA)905
AWS Certified SysOps Administrator – Associate(AWS-SOA)801
AWS Certified Solutions Architect – Professional(AWS-SAP)824
AWS Certified DevOps Engineer – Professional(AWS-DOP)894
AWS Certified Security – Specialty(AWS-SCS)798
AWS Certified Database – Specialty(AWS-DBS)794
AWS Certified Machine Learning – Specialty(AWS-MLS)903
AWS Certified Data Analytics – Specialty(AWS-DAS)819
AWS Certified Advanced Networking – Specialty(AWS-ANS)876

新卒1年目エンジニアAWS認定フルコンプを目指す4:Data Analytics – Specialty , DevOps Engineer – Professional

0

21新卒でアピリッツに入社したエンジニアの串田 匠彌です。せっかくだから新卒1年目のうちにAWS認定資格を全部取得してみることにして、業務の開発と並行して勉強と受験を続けています。フルコンプまでのゴールが徐々に見えてきました。今回は12月に合格した「Data Analytics – Specialty」と22年1月に合格した「DevOps Engineer – Professional」についてご紹介します。

前回の記事はこちら → 新卒1年目エンジニアAWS認定フルコンプを目指す3:Database – Specialty , Machine Learning – Specialty

残りはあと3つ(ここで少しペースダウン)

目標とするAWS認定はあと3つ、「Data Analytics – Specialty」「Advanced Network – Specialty」「DevOps Engineer – Professional」です。

前回の合格が2021年の10月以降、残りの3つをどの順番で受験しようか決めかねていました。Udemyに問題集があるとはいえ、それ以外の具体的な学習のロードマップが自分には考えつかなかったのです。

趣味が再燃したり、自分の体力に見合っていない学習ペースが続いたりで、少し気分が乗らなくなっていったのも正直なところです。

ただ、フルスタックサービス部の鈴木さんから「頼むぜホントに~」と強く励まされていましたし、ここでやめるのもな、と考えなおしました。

また、自分が高校受験の時にお世話になった塾講師の「それだけのことだった」という言葉を思い出してやる気を出しました

「それだけのことだった」というのは、ざっくりいうと「何かと何かを比較して、選ばれなかった方は選んだ方よりもどうでも良い」という意味です。今回のAWS認定を全部取ることについては「あと4,5ヶ月踏ん張って悔いなく受賞発表の時期を迎える」あるいは「また来年に目標を再設定してゆっくりやるか」の2つを比較してみました。で、前者を選んだというわけです。

9. AWS Certified Data Analytics – Specialty(2021年12月)

難易度

★★★★

なかなか難しい分野でしたが、各種サービスのユースケースを把握することが肝要だと思います。
Redshift SpectrumとAthenaとS3 Selectとか。

勉強方法と勉強時間

書籍とUdemyとBlackBeltで試験対策をしました。
期間:下記を1ヶ月
平日:2時間
休日:5時間

オススメの書籍

ビッグデータを支える技術

→ こちらの本は、既に「Data Analytics – Specialty」に合格していた浅田さんのオススメされました。一通りの基礎知識はこれだけで学習できそうだったので、書籍での勉強はこの本だけに絞って、あとは問題を解きまくる方針にしました。
・(Udemy)AWS Certified Data Analytics Specialty Practice Exams
・(BlackbBelt)「Analytics」カテゴリーのPDF

試験についてのアドバイス

「EMRとかHadoopとか、聞いたことはある」という状態から学習を始めました。 機械学習の受験勉強と同様に「まずは一般的なビッグデータの処理及び活用の手法を知り、それからAWSのサービスを知る」という順序でよいと思います。また、問題を解く経験値を積むことも重要です。

10.AWS Certified DevOps Engineer – Professional(2022年1月)

他の方の合格体験記や浅田さんの感想では「DOPはSAPよりは簡単」といったニュアンスでしたが、僕からしたらSAPと同レベルぐらいでしたそもそも「2年以上の経験を持つ個人を対象とするもの」って公式に書いてあるやんけ

この頃から案件が忙しくなってきており、なかなか勉強時間が確保できなかったのですが、3月末までに全資格を制覇するとなると、ここら(1月末)で受けるしかないのかなーと渋々受験しました。

難易度

★★★★ (4.5かも)

勉強方法と勉強時間

期間:下記を1日ずつ
平日:1時間
休日:5時間

オススメの書籍

AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト – プロフェッショナル
・(Udemy)AWS Certified DevOps Engineer Professional Practice Exams

試験についてのアドバイス

今回はUdemyにかなり助けられました。問題のレベル感も実際の試験と大きく変わらないのでおすすめです。ありがとうUdemy。

不合格のことは不合格になってから考えればいい

「DevOps Engineer – Professional」の受験時は「あと2つで全制覇」という状況だったので、ひたすら「合格したらどんな気分だろう」とイメージしてモチベを維持していました。不合格だったときの心境は不合格になってから考えれば良いので……

ということで、残るはいよいよあと1つ。「Advanced Networking – Specialty」です。

AWS RDS ProxyとLambdaを連携してみた

0

姿勢矯正ベルトで背筋を伸ばしながら書いています。ゲームデザイン(GD)部クライアントエンジニアの中村です。

最近、個人的にAPI Gateway+Lambdaを利用したサーバーレス環境でのサービス展開を模索する中で「LambdaとRDSは相性が悪い」という記事をよく見かけ、「なんだそうなのかー。仕方ないからDynamoDB使おう」程度に軽く考えていました。しかしながら、最近 AWS Certified Database – Specialty 取得のための学習を行っていたところ RDS Proxy というサービスに気づきました。これを利用することでLambda+RDSが利用できるようになるとのことだったので、そもそもの相性の悪さとその解決策まで、実際に利用して体験しました。

LambdaとRDSの相性の悪さ

LambdaとRDSの相性の悪さはデータベースコネクション数の最大値にあります。Lambdaはその特性上、リクエストに応じて大量にコンテナが実行されます。このとき起動されるコンテナの数を制御できないため、大量のコンテナからデータベースへのコネクションが発生すると上限を超えてしまう事態が発生するようです。

単純にデータベースコネクションの最大数を上げれば解決できそうですが、データベースが受け入れるコネクション数を増やすとそれに応じて使用メモリも増えていきます。そのため、AWS RDSではすでにチューニングされたデフォルト値が用意されています。この数値を変更することは推奨されておらず、コネクション数を増やすのであればインスタンススペックを上げる必要があります。

RubyOnRailsやLaravelなどのフレームワークではデータベースコネクションをプーリングして使いまわすことができるように設計されていますが、Lambdaでは実行コンテナごとに処理が独立しているためそれが行えません。大規模なリクエストに対して発生するデータベースコネクションをコントロールできないため、データベースインスタンスのスペックを上げても対応しきれない可能性があります。

今回はこの問題を体験するに当たって、以下のような構成を作成しました。

  • Pythonで記述したシンプルなSELECTコード
  • IAMロールでのDB認証
  • RDSからdb.t2.microインスタンスにMySQLを起動
  • menusテーブルにダミーデータとして定食屋のメニューが含まれる(このデータをSELECTする)
  • locustから100ユーザによる合計10,000のアクセスを生成する
session = boto3.Session()
client = session.client('rds')
token = client.generate_db_auth_token(DBHostname=ENDPOINT, Port=PORT, DBUsername=USER, Region=REGION)

def lambda_handler(event, context):
        statusCode = 200
        connection = None
        try:
            connection = pymysql.connect(
                host=ENDPOINT,
                user=USER,
                passwd=token,
                port=PORT,
                database=DB_NAME,
                charset='utf8mb4',
                ssl={'ca': CA_FILE, 'check_hostname': False}
            )
            with connection.cursor() as cursor:
                cursor.execute("SELECT * FROM menus")
                query_results=cursor.fetchall()
        except Exception as e:
            print(e)
            statusCode = 500
        finally:
            if connection is not None:
                connection.close()
idnamepriceimage_prefixtakeout
1目玉焼き定食500menu_med0
2唐揚げ定食750menu_kar0
ダミーデータ

from locust import task, SequentialTaskSet

class LocustTask(SequentialTaskSet):
    def on_start(self):
        self.user.reset()
    @task
    def simple_get(self):
        request_params = {
        }
        self.client.get(
            url="/",
            params=request_params,
            headers=self.user.request_headers(),
            name=f"simple_get [GET /] "
        )
    @task
    def end_task(self):
        self.interrupt()

RDS Proxyを利用しない場合

直接データベースにコネクションを生成するのでコネクションに関する問題が発生する可能性があります。

今回使用しているデータベースインスタンスdb.t2.microは最大コネクション数が65 (推奨値 DBInstanceClassMemory/12,582,880)となっているため、65以上のコネクションを生成した際に問題が発生します。

mysql> show variables like 'max_connections';
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 65    |
+-----------------+-------+

これを確認するためにlocustから100ユーザーによる同時リクエストを行いました。

その結果、locust上では10,000件のリクエストの内3,500件のエラーが発生しました。 lambda_handler 内でtry-catchした際のstatusCode=500 を応答しているため、コネクション生成時かクエリ実行時にエラーが出ていることがわかります。

locust実行結果-RDS Proxyなし

実際にCloudWatchには以下のようなToo many connectionsエラーが確認でき、コネクションの生成数が多すぎることが分かります。

2022-02-24T13:59:25.286+09:00	START RequestId: a17a17d2-1a12-4ce9-a5ce-ae7f7bb7eca4 Version: $LATEST
2022-02-24T13:59:25.740+09:00	(1040, 'Too many connections')

また、CloudWatchメトリクスでデータベースコネクション数を確認すると、上限の65を超えて75に達しているようです。

データベースコネクション数-RDS Proxyなし

以上の結果から、LambdaとRDSに対するデータベースコネクションの相性の悪さが確認できました。

次にRDS Proxyを利用していきます。

RDS Proxyを利用する場合

RDS Proxyを利用する場合は以下のような構成図になります。

RDS Proxy作成

まずはRDS Proxyを作成します。RDSページのメニューから[プロキシ]を選択して作成メニューを表示します。

RDS Proxyは基本的にはデフォルト設定で、IAM認証を利用するためTLSが必要となります。

RDS Proxy プロキシ設定

プロキシのターゲットは事前に作成しておいたproxy-targetデータベースです。接続プールの最大接続数は70%にしておきます。これでこのプロキシを経由するとproxy-targetデータベースにはコネクション最大数の70%までしか接続されないことになります。残りの30%は別のシステムからアクセスされる可能性を考慮しておきます。

プロキシからデータベースへの接続にはUser/Password認証を利用します。このときの認証情報はPlainTextではなくSecrectsManagerで保護されている必要があります。今回はキーローテーションなしでSecretsManagerを利用しています。さらにクライアントからプロキシへの認証はIAM認証を必須としています。

以上でプロキシの作成は完了です。プロキシが作成されると以下のような「プロキシエンドポイント」が利用できるようになります。

experiment-db-proxy.proxy-xxxxxxxxxxxx.us-east-1.rds.amazonaws.com

LambdaにRDS Proxyを導入

LambdaからRDS Proxyへの接続についてはデータベースエンドポイント用の環境変数ENDPOINTをプロキシエンドポイントに切り替え、pymysqlが利用するssl認証ファイルの環境変数CA_FILEをRDS Proxy用のものへ変更します。もともとIAM認証を導入しているシステムであればプロキシを利用するように簡単に切り替えることができます。

環境変数を切り替えてLambdaを実行したところデータベースから定食屋のメニューのレスポンスがあったので問題なく接続できているようです。

START RequestId: fcc8ae58-e350-4d84-b641-32e91760ab24 Version: $LATEST
Response
{
  "statusCode": 200,
  "body": [
    [ 1, "目玉焼き定食", 500, "menu_med", 0 ],
    [ 2, "唐揚げ定食", 750, "menu_kar", 0 ],
    [ 3, "カツ丼", 650, "menu_kat", 1 ],
    [ 4, "ラーメン", 600, "menu_ram", 1 ],
    [ 5, "チャーハン", 400, "menu_cha", 1 ],
    [ 6, "生姜焼き定食", 800, "menu_sho", 1 ],
    [ 7, "うどん", 300, "menu_udo", 1 ],
    [ 8, "牛丼", 380, "menu_gyu", 1 ],
    [ 9, "カレーライス", 450, "menu_cur", 1 ]
  ]
}

それではこの状態でlocustから100ユーザーによる同時リクエストを実行します。その結果、10,000リクエスト中にエラーは発生しませんでした。代わりに若干平均応答時間が遅くなっているようです。

locust実行結果-RDS Proxyあり

Lambdaの実行ログでもエラーは一切確認できませんでした。

2022-02-24T14:37:11.269+09:00	START RequestId: 273371cb-aa3e-4e31-a5f2-e8e1412e0c49 Version: $LATEST
2022-02-24T14:37:11.272+09:00	lambda_handler
2022-02-24T14:37:11.879+09:00	END Requ2022-02-24T14:37:11.269+09:00

CloudWatchメトリクスからデータベースコネクションを確認すると、RDS Proxyに対するコネクションは65に対して、データベースに対するコネクションはわずか8となりました。Too many Connections が発生するほどのコネクションをRDS Proxyが吸収し、コネクションを使いまわしている状況を確認することができました。

データベースコネクション数-RDS Proxyあり

まとめ

今回はLambdaからRDSを利用する際の問題点を確認しました。実際にToo many connectionsが表示され、データベースのコネクション問題を見ることができました。さらにその解決策としてRDS Proxyを利用してデータベースコネクションが使い回されている状況を見ることができました。

サーバーレスアプリケーションでLambdaを利用することがあり、その環境でRDSが必要となるならばRDS Proxyも必須となるでしょう。プロジェクトにもぜひ利用していきたいと思います。

新卒1年目エンジニアAWS認定フルコンプを目指す3:Database – Specialty , Machine Learning – Specialty

0

21新卒でアピリッツに入社したエンジニアの串田 匠彌です。せっかくだから新卒1年目のうちにAWS認定資格を全部取得してみることにして、勉強と受験を続けています。2022年2月に最後の試験「AWS Certified Advanced Networking – Specialty」を控えています。今までの試験について振り返る記事の第三弾は、7月に合格した「Database – Specialty」と10月に合格した「Machine Learning – Specialty」についてです。

前回の記事はこちら → 新卒1年目エンジニアAWS認定フルコンプを目指す その2: Security – Specialty 、Developer – Associate 、SysOps Administrator – Associate 編

先人にすがれ!

アピリッツの社内Slackには「#aws試験対策本部」というオープンチャンネルがあり、AWS関連の雑談や勉強法についての情報交換を行っています。ここで質問すればおそらく多くの先人達が返事をくれます(自分の場合は、疑問点は自分でちょっと調べたらほぼほぼ解決してしまったので、ここで相談することはありませんでしたが、勉強法や対策本について参考にしていました)

社内に相談できる人がいるとはいえ、「3月末までに11個のAWS認定に合格する」という目標を自分で立てた以上、毎回必ず一発合格していかないと3月末までに間に合わないかもと焦っていました。なので手当で増えた給与明細の10の桁を見直してみたり、些細なことでもいいので自分の中でやる気を奮い起こそうとしていました。

また、ちょうどこの時期に関わった案件でガッツリとAWSを触ることになりました。今まで自分が学んできたことが役に立つチャンスが来たんです。勉強を続けてきたおかげで自信が持てました。

7.AWS Certified Database – Specialty (2021年7月)

難易度

★★★★(3.5かも)

これを取ったら資格数的には折り返し地点だったので、モチベーションは比較的高かったです。 このあたりから無理やりにでもやる気を出そうと頑張ってました。「次取ったら専門知識の資格内だったら折り返し!」といったふうに細かくマイルストーンをイメージして乗り越えていきました。

また、前々回に取得したセキュリティにも言えることなのですが、受験対策用の書籍が出ています。これを何周かすればどうにかなります。

勉強方法と勉強時間

書籍のみで試験対策をしました。
期間:下記を10日間程度
平日:3時間
休日:5時間

オススメの書籍

要点整理から攻略する『AWS認定 データベース-専門知識』

試験についてのアドバイス

RDS、Elasticacheなどのよく使用するものはもちろん、普段使わないようなDBサービスも出題範囲なので、細かい仕様の違いを把握するのに苦心しました。SQL ServerとOracleが特殊すぎるんじゃぁ〜

ただ、よく使うDBエンジンだったり、モニタリングなどの周辺知識があれば、合格は(他に比べれば)難しくなかったです。

8.AWS Certified Machine Learning – Specialty(2021年10月)

AWSの試験ではあるのですが、広範な機械学習の知識が多く問われるので別のテスト受けてる感覚がありました(笑)。
自分は機械学習に関して全くの素人だったので、アルゴリズムや各種用語を覚えるのが大変でした……

こちらは、自分が受験した時点ではDatabase – Specialtyのような受験対策用の書籍は出ていませんでした。なので、その分野に関わる基礎知識をUdemyやBlackbeltなどを活用して学習しました。

難易度

★★★★

勉強方法と勉強時間

期間:下記を1ヶ月半
平日:1時間
休日:5時間

オススメの書籍

エンジニアなら知っておきたいAIのキホン
↑ これはAWSトップエンジニアの浅田さん推薦の一冊です。ストーリー仕立てで「機械学習とはなんぞや」ということをまとめてあります。漫画感覚で読めました。

見て試してわかる機械学習アルゴリズムの仕組み 機械学習図鑑
↑ 図解で分かりやすい、各アルゴリズムの特徴を2~3行でまとめてあるので読みやすかったです。

機械学習&ディープラーニングのしくみと技術がこれ1冊でしっかりわかる教科書
↑ 機械学習図鑑よりも範囲は絞られていますが、詳細かつ分かりやすい説明だったので書店で立ち読みして購入しました。

・(Udemy)AWS Certified Machine Learning Specialty Practice Exams
・(Udemy)AWS Certified Machine Learning Specialty Full Practice Exam
・(Udemy)AWS Certified Machine Learning Specialty: 3 PRACTICE EXAMS

試験についてのアドバイス

受験後に感じたことではありますが、まずは市販の書籍1冊を2~3周してある程度基礎を学んで、残りの時間は全て問題集に費やすのが良い勉強法なのかなと思いました。 書籍だと知識は増えるのですが、問題を解く力はあまり鍛えられないからです。 この分野の経験者であれば、比較的簡単なのかなと思います。

「次は何を受けるのー?」

11のAWS認定のうち8に合格すると、「串田=AWS認定を勉強しまくってる者」という確固たるポジションが社内に出来上がっていました。なので、社内mtgで「来週の月曜日有給取ります」と自分が発言すると、クラウドインテグレーション部の剣持さんからすかさず「次は何を受けるのー?」などと声がかかるようになりました。(なお、そのときは試験は関係なく思いっきり私用でした)

残るはあと3つ。「Data Analytics – Specialty」、「DevOps Engineer – Professional」、「AdvancedData Analytics – Specialty」です!

新卒1年目エンジニアAWS認定フルコンプを目指す その2: Security – Specialty 、Developer – Associate 、SysOps Administrator – Associate 編

0

21新卒でアピリッツに入社したエンジニアの串田 匠彌です。せっかくだから新卒1年目のうちにAWS認定資格を全部取得してみることにして、勉強と受験を続けています。2022年2月に最後の試験「AWS Certified Advanced Networking – Specialty」を控えています。今までの試験について振り返る記事の第二弾では、2021年6月に受けた3つについてご紹介します。

前回の記事はこちら → 新卒1年目エンジニアAWS認定フルコンプを目指す その1:Cloud Practitioner 、Solutions Architect – Associate 、Solutions Architect – Professional編

「頼むぜホントに~」と部長が応援してくる

6月に入ると、業務もかなり忙しくなってきました。アピリッツは1年目から裁量の大きな仕事を任されます。「一人前のエンジニアになる階段が100段あったとして、アピリッツはかなり早く登りきれそうだなー」と思いました。

それはそれとして、一年目のあいだにAWS認定をコンプリートしたかったので、勉強も続けます。6月は3つのAWS認定を取りました。

この時期は「自分はどこまで無理をしようか」「どうやって成長しようか」と考えることが多かったです。無理をしすぎるとよくないけれど、どこかで負荷をかけないと成長しませんし、他人と差をつけることはできません。どうやって自分を成長させていくかというロードマップを引くのに苦心していました。

ただ、そうやって苦労しながら仕事のあとや休日に勉強したり、その結果資格に合格していくと、まわりはちゃんと見てくれます。鈴木部長との面談ではアドバイスをもらえましたし、「頑張れよ~」「頼むぜホントに~」と後押ししてくれました。自分の成長を考えてくれているんだなあ、と感じました。

4.AWS Certified Security – Specialty (2021年6月)

難易度

★★★★ (3.5~4ぐらい)

SAPの次はセキュリティを受けようと決めていました。理由は、対策本がすでに世に出ていたこともありますが、なによりセキュリティは必修の分野だと考えたからです。 プロジェクトにおいて「機能を開発できなかった」は少しマイナス程度で済みますが、「セキュリティリスクを抱えた実装」はとんでもないマイナス(損失)になりえます。甚大な被害を出さずに仕事を進めるには、まずセキュリティを学ぶのが一番効率的だと考えました。

ということで、SAAの受験等で最低限のセキュリティは学習できますが、より安全な実装のために早めの受験をおすすめします

勉強方法と勉強時間

書籍のみで試験対策をしました。

期間:1ヶ月
平日:1時間
休日:2時間

オススメの書籍

要点整理から攻略する『AWS認定 セキュリティ-専門知識』

(図解が多く理解しやすいのですが、それ以上に誤字脱字が多いのが気になりました……)

試験についてのアドバイス

学習の段階で、エンべロープ暗号化、フォレンジックサーバ等あまり聞いたことのない単語が出てきます。 加えて、暗号化の仕組みやAWSの各種セキュリティサービスの違いを理解するのに苦労しました。

ただ、勉強中に「IAM(権限管理のサービス)の書き方と他のセキュリティサービスの概要を知っていれば合格できそう」と感じたので試験ではそんなに緊張しませんでした。

5.AWS Certified Developer – Associate(2021年6月)

SAP合格後に受験したため、あまり困るようなことは起きませんでした。使用した書籍は穴埋め程度に使用しました。

難易度

★★

勉強方法と勉強時間

書籍のみで試験対策をしました。
期間:2週間
平日:30分
休日:1時間

オススメの書籍

ポケットスタディ AWS認定 デベロッパーアソシエイト
(これからDVAを受ける人にとっては、合格に必要な知識が満遍なく学習できるため、おすすめです。)

試験についてのアドバイス

SAA(Solutions Architect – Associate)と求められる知識・レベルはほとんど変わらないので、SAAに合格し、少しでも実務経験を積めば、こちらも少ない労力で合格可能かと思います。

6.SysOps Administrator – Associate (2021年6月)

DVAの2日後に受験予定だったため勉強時間が確保できなかった、有効な教材がなかった、という要因でほぼノー勉で受験し、痛い目を見ました。(一発合格でしたが、つまづく問題が多々あって試験中かなり焦りました)

難易度

★★★

勉強方法と勉強時間

なし

オススメの書籍

特にありません

試験についてのアドバイス

SAAと求められる知識・レベルはほとんど変わらないのですが、「クラウドオペレーションのロールを持つシステム管理者を対象に技術スキルの検定を行うことを目的としています」と公式にある通り、普通のエンジニアだと経験が積めないような分野です。先日の試験改訂で実技が入ったみたいなので、どうしても実技が嫌な人はSAPを受けましょう(笑)

給与明細の十万の桁を変えたい

6月のAWS認定を全部取ると、会社から資格手当などで10万円ぐらい振り込まれます。なので「給与明細で十万の桁の数字が違う気分を味わってみたい」という目標を立てて勉強していました。また、ここで3つ合格したら6つ取得したことになるので、折り返し地点まで頑張ろうという意味でも6月は重要な月でした。

続きます!

新卒1年目エンジニアAWS認定フルコンプを目指す その1:Cloud Practitioner 、Solutions Architect – Associate 、Solutions Architect – Professional編

0

21新卒でアピリッツに入社したエンジニアの串田 匠彌です。入社してまもなくの2021/4/10に、AWS認定 Solutions Architect-Professional(以下、AWS-SAP)に合格しました。社内の後押しもあって、せっかくだから新卒1年目のうちにAWS認定資格を全部取得してみることにしました。
11ある認定資格のうち、2022/2/1現在10に合格し、残りあと一つです。それぞれの試験の勉強方法や難易度、そしてどんな試験であったかについて、何回かに分けてお伝えできればと思います。

全制覇を目指したキッカケ

アピリッツに入社してすぐにAWS-SAPに合格しました。ここで勢いがついたのと、CDXOの西脇さんとメンターの鈴木利夫さん(フルスタックサービス部部長)に「やってみれば?」と応援してもらったのきっかけに、さらに勉強を続けることにしました。また、自分がAWS-SAPに合格したのと同じタイミングでアピリッツの社内でもAPN表彰手当という制度が決まり、うまくいけば100万円以上の手当がもらえるようになりました。この制度も、自分が勉強するうえでの良い目標になったと思います。

次項からはそれぞれの試験の難易度(自分の体感で5段階)と、オススメの書籍について紹介します。

1.AWS Certified Cloud Practitioner (2020年2月)

難易度

これは入社前(大学生)にすでに合格していました。人によってレベルは違うかと思いますが、エンジニアではない人やIT未経験の人間でも十分に合格可能です。

勉強方法と勉強時間

書籍のみで試験対策をしました。

期間:3日間
平日:3時間
休日:5時間

オススメの書籍

AWS認定資格試験テキスト AWS認定 クラウドプラクティショナー

試験についてのアドバイス

AWS認定の試験難易度については、個人的には

  • クラウドプラクティショナー:単語テスト
  • アソシエイト3種:単語並べ替えて文章作る問題
  • プロフェッショナル2種:長文読解

という表現が近いのかなと思っています。つまり、アソシエイトレベルまでは各種サービスの概要を理解していれば合格可能なので、「知らないサービスの、概要を知る」という勉強が近道なのかなと。

2.AWS Certified Solutions Architect – Associate (2020年10月)

難易度

★★★

直前の試験のバージョンアップというアクシデントがありましたが、合格できてよかったです。前バージョンの試験を受験していないのですが、問われる内容・レベル共に大きな差異はないのかなと思います。

勉強方法と勉強時間

下記を1ヶ月
平日:60分
休日:120分

オススメの書籍

AWS認定アソシエイト3資格対策~ソリューションアーキテクト、デベロッパー、SysOpsアドミニストレーター

一夜漬け AWS認定ソリューションアーキテクト アソシエイト(の前バージョンの書籍)

試験についてのアドバイス

自分が使用した書籍は前バージョンのものですので、今から受ける人は使用しない方がよさそうです。ただ3資格対策と謳うだけあって読破すれば結構な知識がつきます。

SAAの対策本が多いことからも、人気の資格であることはなんとなく理解していたので、「これに合格したらすごいことだ」とやる気を引き立てて勉強してました。

3.AWS Certified Solutions Architect – Professional (2021年4月)

難易度

★★★★★

他の方の合格体験記を読んでみると「1,2回落ちるのが前提」のような雰囲気だったので、試しにたたき台として受けたらサクッと取れてしまったというのが実情です。 「とんでもなく」が付くほど大変というわけでもありませんでしたが、振り返ってみると出題サービスが多い、問題文が非常に長いといった点から一番難しい試験だったのかなと思います。

「落ちたところで結局たたき台で受けたのだから、お金が減るだけ。どうということはない」という吹っ切れ精神が、試験にリラックスして臨めた要因だったかもしれません。 加えて、試験を受ける以上「実力を出せた出せなかったに関わらず、受験費用は取られる」と考えると集中できました(笑)

勉強方法と勉強時間

書籍とオンライン学習プラットフォームのUdemyを使って勉強しました。

期間:約2ヶ月(2/1~4/10)
平日:通勤の1時間、家での自習1時間
休日:カフェ(9割ドトール)で4~5時間

オススメの書籍

AWS認定ソリューションアーキテクト-プロフェッショナル ~試験特性から導き出した演習問題と詳細解説
・(Udemy)AWS 認定ソリューションアーキテクト プロフェッショナル模擬試験問題集(全5回分375問)

試験についてのアドバイス

紹介した書籍での勉強がおすすめです。ちゃんとした日本語(Udemyのようなぎこちない日本語の教材ではないという意味)で、実際に出題される問題のレベルが近いので。

合格後にはなりますが、最近出版された「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト – プロフェッショナル」を、次のDevOpsプロフェッショナル対策の意味合いで読んでみました。こっちは試験範囲を網羅する点では優秀でしたが、合格するためには問題を解く経験値を積む必要があるので、今回紹介した書籍との併用が良いかと思います。

AWS-SAPを取れたのなら、全部勉強してみようか、となった

AWS-SAPを入社してすぐに取ったことで、メンターの鈴木さんと西脇CDXOから「え! もうとったの? 早! よし、じゃあ全部とろうか!」と何度もはげまされることになりました。CFOの永山さんも「いいね~!」と陽気に盛り上げてくれます。社長の和田さんにも名前をすぐに覚えてもらいました。こんなにみなさんに応援していただけるし、会社からの手当も沢山もらえる。このグルーヴ感に乗るしかないな……と決めて、次はセキュリティを勉強することにしました。次回の記事でお話しますが、セキュリティは率先してやるべきだと感じたのです。そして対策本がすでに出版されていたので挑戦しやすかった。

以上、入社前~入社直後の話です。次回は、Security – SpecialtyとDeveloper – Associate、SysOps Administrator – Associate編です!

資料共有のおかげでスムーズに業務開始できた話

0

アピリッツのオンラインゲーム事業で活用中のデータベース「CREATORSナレッジベース」からのおすそ分け記事です。今回はクライアントエンジニアとして活躍中のIさんが開発現場で感じた資料共有の大切さについてのお話です。(2022年1月 取材・作成)

このナレッジを書いた人
Iさん
2019年に新卒でアピリッツに入社。
現在はUnity C#で主にクライアント側を担当中。
とくにUnityでアウトゲームを作るのが得意。
漫画「BLEACH」が大好き。
どこにいっても「IといったらBLEACH」という印象になる。

ES部のIです。

今回は常駐開始したばっかの自分が、プロジェクト内で細かく資料が共有されているおかげでスムーズに業務に取り掛かることができたという話をしたいと思います。

今まで自分のいたプロジェクトでもビルドや更新、環境構築などの「手順」については資料にまとめられていました。新しいプロジェクトでも同様に資料共有がありましたが「なるほど」と思う新鮮な部分もいくつかありました。ということで、今までのプロジェクトの資料共有の違い、感じたことをまとめました。

入ったばっかりのプロジェクトで、実装時にあると助かる情報

たとえば、汎用的に使用するクラスなどの使い方が共有されていると、

プロジェクトに入ったばっかでもスムーズに作業に取り掛かることができます。

キャラクターを表示するにはどのクラスをどう使えばいいんだろう
フェードを表示するには?
データベースの追加は?
シーンの構成は?
サウンド再生は?


などなど皆が使用するであろうクラスの使い方などがまとまっていると、後からそのプロジェクトに入るメンバーは非常に助かるはずです。

気軽に共有できる大切さ

とくにいいなと思ったのは、誰でもメモレベルで情報共有のための記事を社内向けに投稿できるところです。

記事を書かないといけないというルールがある訳では無く、皆が当たり前のように情報を共有しているんです。

  • 例えば何か実装の調べものをしている際にたまたま見つけた良い記事を共有するとか
  • 自分が何かを実装する際のメモ帳変わりに使ってたりとか

情報共有ツールを使ったとしても、結局投稿する人がいなければ意味がありません。

情報共有を活発におこなうためには、情報共有のハードルを下げて、投稿する人をふやすいうのは非常に重要な点だと感じました。

一か所にまとまってるのが楽

情報共有された内容を社内全体で共有できるとさらに便利です。

つまり、プロジェクト内での共有場所と、社内全体での共有場所が同じというのがポイントだと思います。(一か所にまとまってるのが楽)

他のプロジェクトで使用している技術や、その人の持っている知見、メモなどが社内全体に気軽に自由に共有されていることで色んな情報が飛び交う良い文化だと思いました。

まとめ  

  • 情報共有を習慣化するには気軽さが大事だと感じた(メモなど)
  • 気軽さがある上で社内全体にも共有できると色んな技術や知見が飛び交う
  • 実装面の資料(汎用的なクラスの使い方、構成など)があるとスムーズに作業に入れる

応用

ここからは「こんな使い方もいいんじゃないかな?」と思った点などを書いていきます。

・自分が担当した画面の実装をまとめる。

汎用的なクラスの共有だけではなく自分一人で完結している画面などもまとめて共有してもいいかもと思いました。

  • それぞれのクラスの役割
  • それぞれのメソッドでどのような処理を行っているか簡単なメモ
  • 処理のフローはどうなっているか

など、自分で資料にまとめることでまず自分の中で実装を整理することができます。

結果的にその資料が引継ぎ資料にもなりますし、実装に取り掛かる前にメモレベルで実装方法を整理して共有しておけばエンジニアリーダーなどに見てもらいその実装の想定で問題ないかなど意見をもらうこともできます。

それが社内で共有できれば似たような画面を実装する際に参考にできるしいいなと思いました。

おまけ:ツールの紹介「DocBase」

自分はよくDocBaseという情報共有ツールを使用しています。

DocBaseでは

  • グループを作成して公開範囲の設定
  • グループ、タグ、メンバーから検索できる記事の探しやすさ
  • 議事作成の気軽さ

これらが強みなのかなと思います。

「グッズは出る?」「まだ続くよね……?」 ゴエティアクロス、ユーザーから頂いたご質問に開発チームが答えます!

0

アピリッツのオンラインゲーム『ゴエティアクロス(ゴエクロ)』は、もうすぐ3.5周年を迎えます。もっともっと盛り上げて末永く愛されるコンテンツにしたい……ということで、ユーザーの皆さまから寄せられた質問に、プロジェクトリーダーの黒川が正直にバンバンお答えします!(2022年1月 取材)

ゴエクロの設定資料集やグッズみたいなものを出す予定はありますか?

皆さまからのご要望が多ければ、検討はしていきたいですね! 一般的な販売というより「完全生産受注」とかなら可能そうですね!

そろそろ前作で出てきたキャラクターが終わりそうですが、この先はあるのでしょうか?

そうですね。外伝で新キャラクターをどんどん実装したり、ゴエクロのメインストーリーで出てくるキャラクターを実装したりなど色々検討していますので、まだまだ先はあります!

コラボとか最近ないですが、予定とかありますか?

アピリッツのオリジナルタイトル(例えば式姫など)とコラボできたらいいなと思います。それとは別に外部のゲームやアニメのコラボも現在検討中です。お楽しみに!

アプリが重すぎてまともにゲームができないことがあります! 改善して……?

ゴエクロは様々なプラットフォームで展開しており、原因特定にかなり時間を要しています…。ユーザーの皆さまからご指摘をいただいていることは重々承知しております。

現在も原因調査を1つずつ行い、原因特定を急いでおります。進展あり次第ご報告させていただきます。

※現在は「読み込みが重いため落ちてるのでは?」と仮説を立て「手始めにエフェクトチップから、グラフィックリソース周り少しずつ軽量化模索中」になります。

盤想戦などのコンテンツのテコ入れはありますか?

テコ入れの予定はあります! 盤想戦でのテコ入れについては、出現するエネミーを更新したり、盤想戦イベントのようなものを開催する予定です。また、その他のコンテンツも順次テコ入れをしていく予定です!

声がついていない魔神に、今後ボイスがつくことはありますか?

現在ボイスがついていないRやNの魔神達には順次つけていくことが確定しております! ただ、コロナ渦で収録もなかなかできないため、時間はかかるかなとは思います。
どの魔神からボイスがつくかはお楽しみということで!

露店や交換所などのアイテムのリニューアル予定はありますか?

3.5周年のタイミングや、他のキャンペーン時に、アイテムや価格の見直しをして整えていきたいと思います
また、ユーザーの声でご希望が多い「金の転輪」に関しても、ラインナップや交換できるUR魔神の供物の対象魔神の更新等も行う予定です。

去年はロードマップがあったけど、今年はロードマップないの?

ロードマップに関しては、3.5周年付近と4周年付近で公開いたします。
年2回は更新していきたいと考えています。

ゴエクロってまだ続きますよね……?

はい! まだまだ続きます! メインストーリーの天界との戦いは佳境を迎えつつあります。しかし、その後も新しい形でゴエクロの世界が続くように協議しております。
また、運営一同も元気いっぱいなのでご心配無用です!

今後もこんな感じでQ&Aを公開していきます。これからもゴエティアクロスをよろしくお願いいたします!

コロナ中でも社員同士のつながりを大事にしたい

0

コロナが少し落ち着き始めていた2021年の後半。アピリッツでは社内懇親会を始めました。この懇親会は、プロジェクトをまたいで社員同士のつながりを育むことを目的としていました。プレゼント企画をやったり、いろいろ楽しかったんですよ。現在は残念ながら再び感染症のリスクが高まってきたので懇親会やカフェの運営は休止しています。仕方のないことですが、やっぱりさみしい! ということで、社長の和田発案のもと、お菓子を配ってます。(2022年1月取材)

オフィスに無数のお菓子たちがやってくる

せっかく配るのならば社員みんなにキッチリ配りたい! という懇親会運営チームの確固たる意志によって、シュークリームやエクレアといったみんなが好きそうなお菓子が発注されました。その数およそ数百。社員全員に行き渡らせるにはそのくらい必要です。が、時を同じくして、感染症対策のために原則リモートワーク中心に勤務体制が切り替わったところでした。全員が一斉に出社する日はありません。じゃあ、あのお菓子たちは一体どうなっちゃうんだろう……と密かに胸を痛めていたアピ社員は大勢いたはず。

幸いなことに賞味期限に余裕のあるお菓子もあったため、数日に分けて配ることになりました。

お菓子のチカラは偉大

配り方も工夫しています。社内のSlackで「この時間帯にフロアのXXに置いてます。本日はシュークリーム・どらやき・エクレア・バームクーヘンです。ご自由にお持ちください!」とアナウンスがなされたあと、その日に出社している社員たちが密を避けつつお菓子をピックアップしていきます。ちなみに、今回のお菓子のセレクションは、アピリッツのスイーツ番長ことクラウドインテグレーション部部長・剣持が監修しました。

ある日のかわいいお菓子たち。一箇所に集まりすぎないように、社内の数カ所に置いてます。

お菓子って人を笑顔にするパワーがあるんですよね。会話はしづらい状況ですが、エンジニアやデザイナーたちがニコニコしながらどらやきやチーズケーキを抱えているのを見るだけで幸せな気持ちになります。「やってよかったな~」と運営チームもホッコリしているそうです。

コミュニケーションをどう取っていくか、社員同士のつながりをどう大切にしていくか、悩ましい日々が続きますが、試行錯誤を続けていきます。

「バリューを一緒に作っていきたい」ムービングクルー代表・五島正道インタビュー

0

2022年1月から株式会社ムービングクルーがアピリッツのグループ会社になりました。ムービングクルー代表の五島に、アピリッツにジョインを決めた理由やこれからアピリッツで挑戦したいことを聞きました。(2022年1月取材。聞き手・アピリッツCDXO西脇)

相談できる相手ができた

西脇:ムービングクルーの皆さんがアピリッツに参画してもうすぐ一ヶ月たちます。机を並べて仕事をしたり、打ち合わせに同席したり、共に過ごす時間が増えていますが、アピリッツってどんなふうに見えますか?

五島:ジョインする前からの和田さんや経営陣のみなさんとの対話でも感じていたことですが、若い勢いに満ちているなと思います。志やモチベーションを持ってやっている人は若いな、と。ものを作り出していく場面で必要とされる若さだと思います。

西脇:ゼロから作り出すフェーズって、上手に運営をまわしていくフェーズとは違ったものが求められますよね。

五島:アピリッツと一緒になろうと決める後押しにもなりました。M&Aに向けて対話を重ねるたびに「私達と同じ香りがするな、感覚が近いな」と思うことがたくさんあって、私自身がふつうの感覚で話せましたし、ムービングクルーの社員がステップアップして、組織を大きくしていくことを考えると、アピリッツへのジョインはもうこれしかないっていうチョイスでした。

西脇:Web周りのフィールドであったり、受託開発をしていること、いろんなお客様と一緒にビジネスをしてきたこと、そのあたりの経験で重なるところが沢山あるなと私も感じています。

五島:ムービングクルーを設立して16年、アピリッツに加わることで相談できる仲間ができたなと感じています。心強いです。

実は、知り合いからは「M&Aで自分の会社を譲渡するとマリッジブルーみたいな気持ちになるよ」と言われていたんですよ。でも、アピリッツにジョインすると決めたあと、ぜんせんそんな気持ちにはなりませんでした。「ぜひ一緒になりたい!」と思って動きました

西脇:それはよかった。僕自身もかつて事業売却してアピリッツに参加しました。そのときいっしょにジョインした仲間は、今も全員アピリッツでそれぞれ活躍しています。その様子を見ていると「あのときの自分の選択はやっぱり正解だったんだな」と思える。ですから、五島さんがそういったことを実感するまでにはもう少し時間が必要かもしれませんが、まずはよかったなと思います。

調印後、代表和田と五島氏で握手

ファンサイトの開発・運営への本質的な理解にバリューを出したい

西脇:さっき五島さんが「私達は同じ匂いがする」と言ってくれましたが、同じ匂いがしつつも、ムービングクルーの事業はアピリッツにはない領域で、それがいいなと思っています。

五島:エンタメ系のファンクラブビジネスに関連する事業が多いです。

西脇:エンタメ系のビジネスって動きがすごく速い印象ですが……

五島:独特のスピード感がありますね。ずっと開発を続けてきたので、お客様からのご相談を伺ったら、持ち帰らずにその場ですぐに「つまり、こういう設計ですね」と話を進められます。

西脇:その知見って一朝一夕じゃ身につかないですよね。しかもファンクラブビジネス以外の開発もずっとやっていますよね。

五島:はい、大手メーカーさまの研究開発など、エンタメとは違った分野の開発も行ってきました。エンタメだけじゃないというのも、うちの強みです。

西脇:そういったムービングクルーが持つ特性や、ファンサイト開発と運営の本質的な理解って実はなかなか手に入らないものなんです。だから、今回のアピリッツとのM&Aによって、さらにバリューを出してほしいです。

業務的な経験値ってなかなか明文化しづらいものですが、「アピリッツに任せると運営がよくなった」とお客様に実感して頂けるような、そういったトータルでの強みがバリューだと考えています。

五島:まさにそういうことができると思ってM&Aに踏み切りました。

自分の得意なことに固執しない人

西脇:五島さんはどんな人と一緒に働きたいですか?

五島:踏み出す勇気のある人がいいなと思います。一歩踏み出して、もし壁にぶち当たっても「10年後20年後こうなりたい」と考えて自分で突破できる人です。なので、たとえば「この言語を使えます」というアピールを受けても、そこはあまり重視しません。

西脇:わかります、「複数言語使えます」って、ちょっと乱暴に言うとどうでもいい話なんですよ。

五島:プログラミング言語って誰かが作ったものです。その言語の上でやっているだけだと思いますし、技術の世界ではゲームチェンジが多い。ですから、自分の得意なことに固執しない人のほうが強いなと感じます。

西脇:五島さん自身はプログラミングが好き?

五島:好きですね。今でも家で仕事と関係ないことをちまちま書いていたりします。クラウドが出てからエンジニアの世界はがらっと変わったと思いますが、それはそれで面白いです。無数のサービスが出ているので、それらを見るのも楽しい。

話を戻しますと、言語や技術の世界は変化の流れが速いです。だからこそ、その人がどういうことを考えて、どういう仕事をしてきたかを知るのは大切だと思います。

なので、採用面接で変に取り繕うくらいなら「お金がほしいから」って正直に言ってもらったほうが「ああ、そうなんだね!」って受け止めて先の話ができる(笑) メッキってどんなに頑張ってもやがて剥がれてしまうものなので。

3年後5年後に、他社に転職できて、大きなことに挑戦できる可能性のある人がいいですね。

西脇:うん。で、3年後5年後にアピリッツももっと大きくなっているから、そのエンジニアがステップアップを考えたときに「あれ、アピリッツにいたままでも大きなことに挑戦できるな」って思ってもらえますからね。

五島:一緒にやっていきましょう!

Excel関数:XLOOKUPについて (アピリッツCREATORSナレッジベース)

0

アピリッツのオンラインゲーム事業でクリエイター派遣を担っている「エンパワーメントサービス部(ES部)」。このES部を中心としたデータベース「CREATORSナレッジベース」からのおすそ分け記事です。今回はプランナーとしてマスターデータの管理を担当している毛塚 孝さんのナレッジです。(2022年1月 取材・作成)

今回のナレッジベースの作者
” 毛塚 孝 ”さん
プランナー。
ゲームサウンド、シナリオ、ゲームデータ作成を経験後、アピリッツに参加。
得意分野はExcelなど使ったマスターの最適化やデータ作成。
好きなゲームはボードゲーム。

XLOOKUP とは

XLOOKUP関数は、「VLOOKUP」や「HLOOKUP」の上位に当たる関数です。

「VLOOKUP」や「HLOOKUP」と同じ検索結果を求めることができ、さらに「VLOOKUP」ではできなかった、検索値より左のセルの値をとることも簡単にできます。

同様に、「HLOOKUP」ではできなかった検索値より上のセルの値をとることもできます。
設定項目も増え、工夫次第で色々な使い方ができます。
ここでは、基本的な使い方、各項目の設定のやり方やちょっとした応用を書いていきたいと思います。

ちなみに「XLOOKUP」はoffice365のサブスク版、office2021(買い切り)で使えます。
それ以前のExcelでは使用できないので、XLOOKUPを使う際は自分以外のExcelのバージョンに注意が必要です。

XLOOKUPの書き方

XLOOKUPでは6つの項目を設定します。後半3つは省略可能です。

=XLOOKUP(検索値,検索範囲,戻り範囲,見つからない場合[省略可],一致モード[省略可],検索モード[省略可])
  • 検索値:どんな内容で検索するか。
  • 検索範囲:「検索値」のある範囲を指定。「VLOOKUP」のように「A1:E10」のような範囲で指定せず、「A1:A10」や「A:A」のように列(まはた行)で指定する。
  • 戻り範囲:取り出したい内容のある範囲を指定。
    •  「検索範囲」と同じ幅を指定する。例えば検索範囲を「A1:A10」とした場合に「C」列に取り出したい値があるなら、「C1:C10」という形で指定する。
    •  「A:A」ならば「C:C」と指定する。
    • ※「検索範囲」と「戻り範囲」は実際の数式では場所を固定するために、以下のように「$」を入れて指定箇所を固定すると数式をコピーしたときにずれなくなるので、入れましょう。手打ちで入れるほか、範囲指定時に「F4」を押すと固定できます。
$A$1:$A$10
  • 見つからない場合[省略可]:「検索値」で検索した内容が見つからない場合の処理を指定。「”検索内容がみつかりません”」というように「”」で括った文章の指定や、数式を入れて見つからなかった場合の処理を入れられる。
  • 一致モード[省略可]:以下の数値を設定することで、「検索値」に対しての検索のルールを指定できる。
    • 0:「検索値」と完全に同じ内容で検索。「検索値」が見つからない場合は「#N/A」エラーになる。「一致モード」を省略した場合は、この設定になる。
    • -1:「検索値」と「検索範囲」が数値の場合に有効。「検索値」が見つからない場合に、「検索範囲」にある値で「検索値」の次に小さい値を「検索値」として検索する。
    • 1:「検索値」と「検索範囲」が数値の場合に有効。「検索値」が見つからない場合に、「検索範囲」にある値で「検索値」の次に大きい値を「検索値」として検索する。
    • 2:「検索値」で「*」や「?」などのワイルドカードを使って検索できるようにする。この指定をしないとワイルドカードが使えない。
    • ▼ワイルドカードを使った指定の方法:ここでは「*」と「?」を説明
      • *:検索値に「”*A”」、「”A*”」、「”*A*”」といった形で指定することで、「A」の前後の「*」のある方向にいずれかの内容があっても、その内容を検索する。
      • 「”*A”」なら「123A」、「あいA」などの任意の内容の後ろにAがつくものを「検索値」としてを検索する。
      • 「”A*”」なら「A456」、「Aかき」などのAの後ろに任意の内容があるものを「検索値」として検索する。
      • 「”*A*”」なら「あいうA123」のように「A」を含む内容を「検索値」として検索する。
      • ?:任意の値として指定する。「”A?C”」、「”AB??E”」などの形で指定し、「?」1つにつき1文字分を任意の内容があるものとして検索する。
      • 「”A?C”」なら「ABC」、「AあC」などを検索し、「”AB??E”」なら「ABCDE」、「ABかきE」などを検索する。
      • 「?」の文字数が合わない場合はエラーになる。
  • 検索モード[省略可]:以下の数値を設定することで、「検索範囲」の検索の方向を指定できる。
    • 1:「検索範囲」を上から、または左から検索する。
    • -1:「検索範囲」を下から、または右から検索する。
    • 2:「検索範囲」がすべて数値で、それが昇順である場合、検索の速度が速い計算をしてくれる。データ量が相当多い場合に有効な設定。「検索範囲」が数値でないとエラーになる。
    • -2:「検索範囲」がすべて数値で、それが降順である場合、検索の速度が速い計算をしてくれる。データ量が相当多い場合に有効な設定。「検索範囲」が数値でないとエラーになる。
    • ※省略可能箇所で、一部を省略してその後ろを有効にしたい場合、例えば、「見つからない場合」と「一致モード」を省略して「検索モード」で下から検索する設定にしたい場合は以下の様に指定する。
=XLOOKUP(A1,A1:A10,C1:C10,,,-1)

XLOOKUP書き方色々

■縦方向に指定した「戻り範囲($B$2:$B$6)」の、「検索値」のある行の内容とる場合

=XLOOKUP(H3,$A$2:$A$6,$B$2:$B$6)

■ 横方向に指定した「戻り範囲($B$4:$F$4)」の、「検索値」のある列の内容とる場合

=XLOOKUP(H3,$B$1:$F$1,$B$4:$F$4)

■ 「検索値1」で指定した縦の「検索範囲」に対して「検索値2」で指定した横の「検索範囲」の交わる箇所を求める

=XLOOKUP(H3,$A$2:$A$6,XLOOKUP(I3,$B$1:$F$1,$B$2:$F$6))

「XLOOKUP」を2重に使用することで、列と行の内容を指定して表の位置を求めることができます。

後半の「XLOOKUP」の書き方が、上記までの書き方と少し違います。

XLOOKUP(I3,$B$1:$F$1,$B$2:$F$6)

後半では「検索値:C」で「C」の列を指定し、以下のように表の範囲を指定すると、この数式は「D2:D6」の範囲を持ちます。

検索範囲:$B$2:$F$6
XLOOKUP(I3,$B$1:$F$1,$B$2:$F$6)

を独立してセルに入れると、上記画像のようにCの範囲が表示されます。
ちなみに数式は「D9」のセルに入れていますが、その下のセルに自動で値が入ります。

■ 「見つからない場合[省略可]」の使い方

・エラーの場合に文字列を返す:A列に「検索値」が無い場合に「対象の値は存在しません。」と表示する。

=XLOOKUP(H3,$A$2:$A$6,$B$2:$B$6,"対象の値は存在しません。")

・エラーの場合に数式を返す:「IF」関数を用いて、A列に「検索値」が無い場合に、5より大きい値の時は「入力の数値を5以下にしてください」を、1より小さい時に「入力の数値を1以上にしてください」を表示する。

=XLOOKUP(H3,$A$2:$A$6,$B$2:$B$6,IF(H3>5,"入力の数値を5以下にしてください","入力の数値を1以上にしてください"))

※上記数式では「1より小さい場合」を記載していないが、そもそも前の式で検索値1~5が引っ掛かり、IFで5より大きい数値の場合を指定しているので、1~5と5より大きい値ではない場合が1より小さい値になるので、記載がなくても求められる。

■ 「一致モード[省略可]」の使い方:「検索範囲」が数値の場合に有効

・「検索値」が見つからない場合に次に小さい箇所を求める。

下記の場合、「3.5」が検索範囲に無いので次に小さい「3」の箇所を求めている。

=XLOOKUP(H3,$A$2:$A$6,$B$2:$B$6,,-1)

「検索値」が見つからない場合に次に大きい箇所を求める。

下記の場合、「4.5」が検索範囲に無いので次に大きい「5」の箇所を求めている。

=XLOOKUP(H3,$A$2:$A$6,$B$2:$B$6,,1)

■ 「一致モード[省略可]」で「2」を指定した場合のワイルドカードの書き方

「検索値」で「”*き*”」と指定して「検索範囲」に「き」が含まれる箇所を求める。

=XLOOKUP("*き*",$A$2:$A$6,$B$2:$B$6,,2)

「検索値」を他のセルを指定し、「検索範囲」でそれが含まれる箇所を求める。

=XLOOKUP("*"&H3&"*",$A$2:$A$6,$B$2:$B$6,,2)

「検索値」で「”く?こ”」と指定して「検索範囲」に「く」と「こ」の間に任意の位置文字のある箇所を求める。

=XLOOKUP("く?こ",$A$2:$A$6,$B$2:$B$6,,2)

■ 「検索モード」の使い方

・「検索範囲」に同じ内容が含まれているとき、「検索モード」で「2」を指定することで、「検索範囲」を下から検索する。
 下記の場合は、「H3」のセルに指定した「2」を「検索値」として、「検索範囲」を下から検索しているので、「B5」セルの箇所が求められている。

=XLOOKUP(H3,$A$2:$A$6,$B$2:$B$6,,,-1)

・「検索範囲」に同じ内容が含まれているとき、「検索モード」で「-1」を指定することで、「検索範囲」を右から検索する。
 下記の場合は、「H3」のセルに指定した「B」を「検索値」として、「検索範囲」を右から検索しているので、「E1」セルの箇所が求められている。

=XLOOKUP(H3,$B$1:$F$1,$B$2:$F$2,,,-1))

違う列の内容を「検索値」としてそれぞれの列の内容を「検索値」として1つずつ指定してそれらがどちらもある「戻り範囲」の内容を求める方法

・「検索値」と「検索範囲」を「&」で繋いで設定することで、それらの「検索値」がすべてある「戻り範囲」の内容をとることができる。
以下の場合は「検索値1(4)」と「検索値2(う)」がどちらもある「戻り範囲」の「C5」セルの箇所が求められている。

=XLOOKUP(H3&I3,$A$2:$A$6&$B$2:$B$6,$C$2:$C$6)

・上記に加え、横の「検索範囲」も指定する場合

=XLOOKUP(H3&I3,$A$2:$A$6&$B$2:$B$6,XLOOKUP(J3,$C$1:$F$1,$C$2:$F$6))

・「検索値」2つ+横の「検索範囲」も指定する場合

=INDEX($C$2:$F$6,MATCH(H3&I3,$A$2:$A$6&$B$2:$B$6,0),MATCH(J3,$C$1:$F$1,0))

アピリッツCREATORSナレッジベースから:【初心に】文字間・行間・間隔の話を雑に簡潔に【帰ろう】

0

アピリッツのオンラインゲーム事業でクリエイター派遣を担う「エンパワーメントサービス部(ES部)」。このES部が中心となって作っている「CREATORSナレッジベース」というものがあります。仕事で身につけたことや感じたことを、アピリッツのゲームセグメントのメンバーで共有する秘密基地のようなスペースです。
「会社をどんどん成長させていくには、若手も中堅もベテランも、全員が協力する必要があります。そこで重要となるのは、情報共有のベースです!」というES部の村上の熱い熱い情熱によって2021年のある日に誕生しました。ほんと、いい内容がいっぱいあるんです。なので、ほんの少しだけ公開します。(2022年1月 取材・作成)

今回のナレッジベースの作者
” やつき ”さん
2Dイラスト・UI・UXデザイナー。
フリーのイラストレーターや印刷業界でDTPデザイナーとしても活躍したのち、アピリッツに参加。

概要

UIデザインをしていて避けて通れない、文字間・行間、
レイアウトを組んでいて項目のまとまりが悪い時など…のオブジェクトの間隔の話。

学校で学んだ人もいれば、業務を通して掴めてきた人もいれば、資料を読み漁って勉強した人もいたり、デザインをする上で必ず通る所ではあるけれど基礎的なものすぎてスルーしがち・されがちな知識。

UIデザイナーは少ないという話もありますが、その理由として「難しそう」「知識を教わる機会も少ない」というのが挙げられています。

そのため、今回は私自身が印刷業界にいたときに学んだことの一つで、また、当時の先輩から学んで、わかりやすいなぁ…とUIデザイナーになっても助かっている内容をご紹介します

迷ったら一回ためしてみると大体解決するなぐらいのナレッジです。難しく行くのではなく、雑にシンプルに行きたいと思います。

本題

1.「読ませたい方向の間隔を狭くする」

2.「画面全体の間隔を大・中・小とざっくり区切る」

意識することはこれだけです。
資料や教本を見ると、詳しく書かれていたり、「何ポイントでこの割合で」などありますが、正直この2点さえ抑えておけばなんとかなるな…ということと、
誰かに教えるときなど、とてもシンプルで役に立ってます。

下記は過去に、人に教えたときに作った図解です。

3.キリのいい数字にしておくと、自分もエンジニアさんも多分楽

Unity組み込みをデザイナーがすることもあると思いますが、共通とまではいかなくても
個人的なもので数値を大体一定のパターンルールにしておくと
誰かにお願いするときも、数値で指定でき設計も楽かもしれないなという
後々みんな楽で、幸せになるよね…きっと…という伝わらないかもしれないけれどほんの少しの思いやり、思いやり大事…。

個人的に役に立った雑学

◆身近なもので見てみよう漫画のコマ割り

漫画家さんや作家さんと話すことが多々あった私ですが、その中で聞いた話があり面白いと思った話があります。
作品や展開でもちろん変動しますが、大体の漫画のコマとコマの間隔は、縦と横で幅が違います
アナログ漫画の場合、作家によって横が大体何ミリで縦は何ミリと大体の数値を決めている作家さんも居ました。(例:縦8mm 横3mm…等)
横に連なっているコマの間隔は狭く、縦つまりは行(段)が変わるコマの幅は目線が下にいくため少し広くとっていたりします。

前述であげた内容と一致していたことでありUIデザインでよくあげられる内容として、目線誘導の「Zの形」があげられますが、漫画のコマ割りなどでも同じ話をよく耳することがあり UIだろうが漫画だろうが雑誌だろうが根本は「ユーザーが見やすいもの」「人間の共有意識」として設計されている共通ルールの一つみたいなものなんだろうな…というのが個人的な感想です。

あとがき

文字間・行間・間隔の話を誰かに教えるときなど、難しい資料や理屈よりも
身近なものや好きなものから読み取っていくのが、実の所一番頭に入ったり、興味を持ってもらいやすくなると思います。

とても基本的で、基礎的な話だからこそ、入口的なものは楽しんで学べたら良いとも思いますし、楽しんでいれば学習意欲も上がります。難しい理屈や知識は、後からでも付いてくるものだと個人的には思います。

とても個人的な内容が多くありますが、少しでも参考になったら嬉しいです。

AWS Snowball Edge を使ってみた! 全工程レポート

0

最初に AWS Snowball / Snowball Edge について

AWS Snowball をご存知でしょうか? あまり使う機会がないかもしれませんが、Snowball は巨大なデータを AWS に送る場合に利用できる物理デバイスをやり取りする仕組みです。これを使うとネットワーク経由で時間をかけて転送する必要はありません。
いまのところ、1台の最大容量は 100TB ですが、複数台使えばペタバイトクラスのデータを AWS に送ることもできます。

ちなみに Snowball Edge は Snowball の機能拡張版という位置づけだったのですが、オリジナルの Snowball は現在既に利用できなくなっているため、Snowball といえば Snowball Edge の事を指すことになります。この文章では単純に Snowball と記述しています。

さて、こんな Snowball ですが、実際の所あんまり使う機会がありません。Snowball が必要になるほど大きなデータというのはなかなかなくて、1T くらいまでなら数日かけて手元の回線から送ってしまった方が手軽だったりします (AWS へのアップロードは課金されませんしね)。

今回は、8T 強のデータを AWS に移行する要件に Snowball を利用してみました。このサイズだとネットワーク経由で送っても十分行ける範囲ですが、実際に Snowball がどんなものか試す意味も含めて実施することにしました。今回はその一部始終を実際の写真をたくさん使ってレポートします。 ※この記事はパートナー杉浦達樹の多分な協力によって執筆されています。

実際の利用の流れ

それでは、Snowball が どういうものか分かったところで、実際の利用の手順を見ていきましょう。

ものすごく大雑把に言うと、 Amazon から巨大な NAS が送られてきて、データを投入して送り返せば S3 にアップロードしてくれる……そんなイメージで大丈夫です。

具体的には、

  1. AWS Console 上から Snowball Edge の注文を行う
  2. デバイスが送られてきたら、ネットワークにつなぎアクティベートする
  3. AWS に転送したいデータを Snowball 内にコピーする
  4. 電源を切って返送する

といった手順になります。

Snowball を注文する

最初は受取先の住所指定から

一番最初にデバイスの送り先住所を聞かれます。通常はオンプレの IDC に送る事が多いと思われますが、今回は弊社オフィスを指定しました。下の方にありますが、3~7 日で届くようです。おそらく国によっては配送オプションが複数から選択できるのだろうと思うのですが、少なくともこの時点の日本では 3~7 日の1択しかありませんでした。

デバイスを選択する

Snowball Edge はストレージ容量に特化したデバイスの他に、ローカル環境で ML などの処理を行うために SSD を搭載し、CPU 処理能力に優れた Compute モデルがあります。今回は単純にファイル転送ができれば OK ですので、 Storage Optimized を選択します。また、この時点で返却した後にインポートする S3 のバケットを選択する必要があります。 必要であれば作っておきましょう。

セキュリティ、 SNS トピックの指定など

続いて IAM ロール、そして通知用の SNS トピックを指定します。最後に OpsHub の案内が表示されます(今回は利用しませんでした)。

注文が終わったら

現在の注文 job のステータスが確認できるようになります。またこの画面から Snowball のクライアントと、そのために使用する credential のファイルのダウンロードができますので取得しておきましょう。

デバイスの接続とアクティベート

到着と開封

というわけで少し待つと到着しました。これが Snowball Edge デバイスです!

開封の様子を……と思いきや、外箱はありません。運送箱を兼ねているので、本当にこのまま送られてきます。コネクタ類や、コントールパネル、ケーブルなどは蓋を開けるとあります。この蓋はスライド式に収納できるようになっています。

背面コネクタ部の蓋を開放するとこのような感じです。

ちょっとびっくりなのは、配送ラベルの表示用として paperwhite が。そして、制御用のコンソールとして Fire 7 Tablet が埋め込まれています。全力で Amazon product が使われていますね!

電源を入れてアクティベート

付属している電源ケーブルとネットワークケーブルを接続し、電源を投入すると、しばらくの間掃除機みたいな物凄い音でファンが回ります。オフィスで動かすときは周りに断っておいたほうが良さそうでした。
この状態でしばらく待つと、ファンがだいぶ静かになり、インストラクションが表示された画面をループして設定待ちになります。

ここまで来たら、Snowball Edge client でアクティベートを行います。先程ダウンロードしておいた manifest ファイルと、unlock code が必要です。

この状態でしばらくたつと、コンソールパネルが操作可能になります。が、まだデバイスはロックされているので解除してやりましょう。

ここまで来ると、コンソールの S3 Service の表示が LockedUnlockingReady と変わります。Ready になれば、このデバイス自身を S3 サーバとして利用することができます。

ファイルを転送しよう

実は、その前にもう1ステップ必要です。これでデバイスの準備が出来ていますが、 S3 クライアントの認証をするための鍵がありません。こちらも Snowball Edge Client から取得します。

これで Snowball のための AWS Access key と secret key が手に入りました。 普段と同じ様に ~/.aws 以下に設定を書いておきます。 
それでは実際にアクセスしてみましょう!endpoint として configure のときに表示された Snowball の IP アドレスを指定します。

$ aws s3 ls --endpoint http://192.168.11.154:8080 s3://2020-12-30 17:51:28 frs-archives

注文時に設定した bucket が自動的に作られていますね。ここにファイルを置けば良さそうです。
今回は隣のホストで tar を作りつつ、それを Snowball に転送するために例えば以下のようなコマンドを使いました。このあたりは実際に転送するファイルにより適切な方法は変わるかと思います。

ssh srchost "cd /path/to/src && tar c dir" |  pv -tabN "dir name xxx" | \  aws s3 cp --expected-size $[1]240*1024*1024*1024 --endpoint http://192.168.11.154:8080 -  s3://frs-archives/target.tar

返送して S3 にインポートされるのを待つ

ファイルの格納が終わったら、コンソールからデバイスの電源を落とします。

すると自動的に上面にある paperwhiteに返送用のラベルが表示されます。賢いですね!

蓋を全て閉じ、AWS console からリンクをたどって集荷の依頼をすれば、そのまま持っていってくれます。

数日後、コンソールを確認してみると、AWS 側に到着してインポートが始まっていました。インポート状況も AWS コンソールから確認できます。

あとはインポートステータスが 100% になるのを待つだけです!

ちょっと注意事項ですが、もし日本以外のバケットに移す予定の場合は、先に Cross Region Replication を設定しておくのを忘れないようにしましょう。
今回は最終的に US に送る予定だったのですが、先に Replication の設定をしていなかったため、結局手動でコピーする事になりました……。

Snowball を使ってみて

今回は本来そこまで必要のないサイズではありましたが、実際使ってみてかなり手軽だという印象を受けました。物理デバイスを扱ったり、配送を手配したりと言った手間はありますが、頻繁に更新されない大きなデータに対して非常に強力な転送手段になりますね。

実際に使う機会は結構限られているとは思うのですが、チャンスがあればみなさんも是非 Snowball を使ってみてください。

References

References
1 240*1024*1024*1024

アピリッツ 2021年振り返り!

0

2021年がそろそろ終わります。今年はアピリッツにとって新規上場の年。そして「よりよい会社をみんなで作っていきたい」という社長の和田の言葉通り、みんなでアピリッツを作っていく一年でした。会社の大きな動きを駆け足でご紹介します。(取材 2021年12月)

2月 東証JASDAQ(ジャスダック)スタンダードに新規上場

2021年2月25日に、東証JASDAQスタンダードに上場しました。

折しも新型コロナウイルス感染症で緊急事態宣言下であったので、よくある上場記念セレモニーは後日開催していただきました。また、2022年4月4日からの新市場区分は「スタンダード市場」です。

2月 オフィス増床(その1)

続々と増え続けるアピリッツの社員が、これからも安心してオフィスでコミュニケーションを取りながら働き、よいサービスを生み出せるように……とのことで、オフィスを増床しました。こちらは2020年に新卒採用で入社した社員3名が内装を考えました。

芝がきれいです

4月 入社式

2021年は30人の新卒社員を迎え、およそ2年ぶりに入社式を執り行いました。入社式の会場は、先程ご紹介した新オフィスです。

記念撮影のときだけマスクをはずしています

6月 年間最大121万5千円! 『APN手当』開始

福利厚生も拡充していきました。まず、全社員向けに「新型コロナワクチン接種休暇」を制定しました。そして、AWSエンジニアの育成強化を目的に社内制度『APN表彰手当』を制定しました。この制度により、条件を満たしたエンジニアには、最大で121万5千円の報奨金を支給されます。詳細はこちら この取り組みのあとから、ますます社内のエンジニアが学習や発表、メンバー育成を活発に進めています。

12月 オフィス増床(その2)

2月に増床をしたあとも、アピリッツの社員は毎月続々と増え続けています。ちゃんと安心してゆとりをもって働いてほしい……ということで、再び増床しました!

引っ越し前夜の様子。まだなにもないフロアで、ソファと木がスッと社員をまっていました
ある日突然現れた肩こり対策のマシン。みんなつかってくださいね!

今年もありがとうございました!

アピリッツは、これからもどんどん新しい変化があるはずです。来年も良い一年となるよう社員全員で努めていきます。

年末には社員同士の交流を応援するために、感染に気をつけつつではありますが懇親会も開催しました

おつかれさまでした! また来年!

最近人気な記事