JSTQB FLに受かった。ソフトウェアエンジニアの視座を高める

www.jstqb.jp

 ソフトウェアテスト技術者資格です。国際的なものにISTQBがあり、互換性があります。

 私が受けたのはFoundation Levelで基本的な知識を問われます

Foundation Level資格は、ソフトウェアテストに関与するあらゆる人々を対象にする。Foundation Level 資格の対象者には、テスト担当者、テストアナリスト、テストエンジニア、テストコンサルタント、テ ストマネージャー、ソフトウェア開発担当者と開発チームなどが含まれる。このFoundation Level資格 は、ソフトウェアテストについて基本的な理解を望む方、例えば、プロダクトオーナー、プロジェクト マネージャー、品質マネージャー、ソフトウェア開発マネージャー、ビジネスアナリスト、IT部門長、 経営コンサルタントのような人にも適切である。

JSTQB シラバスより

 私はもともと、自動テストってどうやって書くのが良いんだろう?という観点からソフトウェアテスト技法ドリルを読んでいたりしていてもともと薄く知識がありました。なので、8時間程度の勉強で合格できました。ソフトウェアエンジニアであれば、既知の事項も多いですし、合格ラインが65%なのもあって比較的簡単に合格できると思います。

 どっちかというと22000円の受験料の方が痛いですね。早く2万円をなんとも思わないレベルのエンジニアになりたい(今どき受験料くらいは会社から出るのが普通だとは思いますが)

www.juse-p.co.jp

 やった勉強は、公式が出している教科書と、「テス友」というアプリがあるのでそれで用語の整理をつけました。知識が薄いところは個別で記事をみたりしました。逆に言うとこれ以上の教材であんまりドンピシャなものがないのがネックかもしれません。

www.shoeisha.co.jp www.qbook.jp

 王道の勉強法はシラバスを読むことですが、シラバスがあんまり読みやすいものじゃないです。所詮シラバスですからね。

学べる事

 ひとつに用語です。「欠陥と故障の違いって何?」といったところや、ソフトウェア開発の文脈だと微妙に出てこない用語を押さえることができます。

 このツイートが「お前スモークテストも知らないのかよ?」とかなり引用で批判されていますが、もしJSTQB FLを受けていれば………

 ともかくとして、テストの実行が完全に別部隊だったり雰囲気で自動テスト回してたりすると、本来は常識であるべきなのに知らないまんま今に至るということはよくあるので、そういった隙間を埋めるのにちょうどよいと思います。

 あとは、広いスコープからテストをとらえなおすことができるというのも利点だと思います。それがこの試験の対象者に「ビジネスアナリスト」が含まれている由縁です。一介の開発者にとってテストというのは精々「作ったものの動作確認」程度のものですが、プロジェクトリスクやプロダクトリスクからテストをとらえなおすということができます。そのソフトウェアの不具合によってどのようなリスクがあるか、そのリスクが発生しないことをある程度担保するためにどのようなテストを実施するべきかという観点を学ぶことは新鮮でした。





 CBTでいつでも受けられるし、合否もすこしかかりますが1週間くらいで出るし、難易度もたかすぎない。強いて言えば受験料くらいでしょうか。それ以外は特にデメリットがないのでお勧めです。  

GitHubで複数のPR Templateを使う時の妥協案

GitHubってテンプレート機能というものがあり、issuseやPRを作ったときに決まったテンプレートが記載された状態で記入できる仕組みがある。このテンプレートを複数作ったときに、issueはどのテンプレートを利用できるか選ぶ仕組みがあるのだが、

PRにはない。PRはプロジェクトのルートか.github/にpull_request_template.mdというファイルを置いたらそれを読みに行くだけである。

複数のテンプレートを設定することはできて.github/PULL_REQUEST_TEMPLATE/ の下にいくつか作っておいておくことができる

docs.github.com

ただし、issueのような選択画面が出てくるわけでもなく、作るには自分でクエリパラメーターをURLに追加してからPRを作る必要がある。たとえば ?template=bug.md のようなものを追加してからPR作成ボタンを押す

docs.github.com

これは流石に不便である。GitHub CLIでは対話的にどのテンプレートを利用するか聞かれるので良いが、GitHub CLIを使わない人には困りものである。

そこでデフォルトのPRテンプレートに以下のようなリンクを仕込んでおく

<a href="?template=bug.md">bug templateに切り替える</a>

そうするとPreviewでリンクをクリックしたらクエリパラメータが追加されるので、再度PR作成をすると欲しいテンプレートを読み込むことができる

もっといいやり方あったら教えて

AWS SAPに受かった

よく考えると半年くらい技術的なアウトプットをしていないなと思い、なにかしら記事に書かなくてはと思った次第。

合格したのは4/6で二か月以上前なのだが思い出しながら書く

aws.amazon.com

合格したのはこの試験。予約を入れた後業務が忙しくなり合格点750点の752点でした。ギリギリすぎる

受験前のステータス

  • 下位資格のSAAは取得済み(3年前)
  • AWSは昔は業務で使っていたが、今は全く使っていない
  • そもそもクライアントエンジニアでサーバーに関する業務すらしていない
  • SAAが切れるので、再受験か上位のSAPをとるかをする必要があるので、上位のSAPをとってしまえと思った

やった勉強法

ひたすらテキストを読む

www.sbcr.jp

 まずひたすら頭に叩き込むフェーズ。細部はいったんおいておいて、たくさんあるサービスの概要を片っ端から頭に叩き込んでいく。SAAの方は基本要素(EC2 S3 lambda)をおさえつつ、追加でいくつか覚えておけばよいので、出てくるサービスも大体業務で触ったことがあったりするのだが、SAPはそうではない。オンプレ関係のサービスは全く知らないし、AWSの管理者・運用者目線のサービスや仕組みもアプリケーション開発者はほとんど意識しないので、まず概要をつかむところから

本番形式の問題を一回解く

 AWS Skill builderに本番想定の問題があるのでそれを解く。課金が必要なのがムカつくが、いったん課金して本番の出題のされかたや傾向を押さえる

やってて思ったのは

  • すごい細かいことまで聞かれる。「S3のこの設定を変えるとき、バケット作り直す必要ある?」みたいな問題も出る。しらんがな
  • 試験範囲が広い。オンプレとか
  • 試験時間が長い(180分)
  • 文章も長い。だから眠くなる
  • SAPはアーキテクチャ的に妥当なものを選べばよいが、SAPは要件に満たしているかをちゃんと確認する必要がある。RPO RTOとかメンテナンスコストとか

ひたすら演習する

 あとは問題を解く。本をやったりweb問題集をやったり。web問題集には手を付けられなかったが、手を付けていればもう少し余裕をもって合格できたと思う

AWS認定ソリューションアーキテクト-プロフェッショナル 第2版 ~試験特性から導き出した演習問題と詳細解説~www.maruzenjunkudo.co.jp

aws-exam.net

実際にサービスを触る

 設定の手順も含めてどれが正しいか問われる問題は、触ってみないとわからないので触ってみるのがよい。私は不真面目なのでクラスメソッドのやってみた記事を眺めてごまかした。

感想

 SAAは割と楽しかったので、そのノリでSAPを受けたのだが、思ってたのと違った。SAAではクラウドアーキテクチャについて理解度をあげる試験でSQSの使いどころを学んだときは楽しかったが、SAPはどちらかというと管理者むけの情報だったり、オンプレ移行の話だったり、アプリケーション開発者的には退屈なトピックが多かった。もちろんSAAよりも深堀しているトピックもたくさんあるので勉強する意義はあったが、試験の合格を目標にすると苦行になるかもしれない。

sbi証券で口座が表示されずに出金できないことがある

ブラウザのキャッシュの問題なのかよくわからないが、出金口座を指定しても出金できないことがある TOP画面から「出金」を押すと口座情報が出て出金できるようになる

意味不明

ゲーム開発者が「BlenderリアルタイムCGキャラクター制作入門」をやってみた

 読書感想文ブログになりつつある今。意外とブログに残しておいて後から参照しなおすことはまあまぁあるので、記録を残しておく。

 ちなみに私はBlenderは初心者ではない。なんども入門に成功している(つまりほどほどやって諦めている)。なのでモデリングの基本操作(ループ/カット/押し出し)は抑えているという感じ。

モデリングはじめ

素体

bone

衣装

テクスチャペイント

などなど。

良かったところ

 「メッシュの流れをどういう意識でモデリングするか」というところの解説が手厚かったのがよかった。方法論的なところはインターネットで情報が出てくるが、真似してやってみても「なんか違う......」となりがちだった。そういう経験のある人にはオススメ。この本では意識するラインが図示されていて、ある程度モデリングした後の調整パートも章として解説があるので、そのあたりを参考にするとだいぶ見通しが良くなった。

 また、VRChatで動かすまでを一気通貫でやるので、3DCGのキャラクター制作についてかなり見通しが良くなった。結果的にはUnity力も上がったと思う。

学んだことなど

モデリング

 モデリングはだいぶ慣れてきた。この本では目から作るスタイルなのだが、これは結構良い。断面図から拡張したり、四角から作ったりいろいろ派閥はあるようだが、このやり方はかなりしっくり来た。以前ネットに落ちている記事を参考に作ったときは断面図から横に広げていく作り方で挑戦したのだが、目元口元あたりのメッシュをどうするかずいぶん悩んでしまったことがある。なので、悩む目元から作るというのはかなりやりやすかった。

頂点ウェイト

 この本ではウェイトペイントではなく頂点に直接パラメーターを指定する形でウェイトを付けていく。ローポリならではのやり方なのかなぁと思った。最終的にはウェイトペイントに落ち着きそうだが、このやり方はboneを動かしておかしいなと思ったときに原因を見つけて修正しやすいので、「ウェイトとは何か?」を体感的に理解する上では良いアプローチだと思った。

Unity Humanoid

 名前は知っていたが使ったことがなかった。これはかなり便利である。キャラクターのリギングは、「関節をどの範囲で曲げるか」といったことを逐一設定しなければならず、大変な作業なのだが、Unity Humanoidではその作業を省略できる。Unity Humanoidは「人間の体ってみんな作りおんなじだから、汎用のリグをこっちで用意すればよくね?」という思想のフレームワークで、boneの命名をそろえるだけでいい感じにキャラクターを動かすことができる。Unity Humanoid対応のアニメーションであれば自分の作ったアバターにそのまま適用できるので、とても便利。もちろんクオリティ的に今一つ物足りない部分もなくはないのだが、個人製作レベルではこれ一択と言っても良いのではないかと思った。

Unity Humanoidの表現力を拡張する話としてはこの記事を参照 technote.qualiarts.jp

UV展開

 ムズイ。モデリングと違って初めてということもあってかなり難しかった。エンタクというYoutubeの動画を見ながら、今後は以下の方式でやっていくのがいいかなと思った。 www.youtube.com

  • 基本Substance Painterみたいな3Dテクスチャリングツールを使う。そうするとUV展開を頑張らなくても大丈夫になる。今はもうそれで大体大丈夫らしい
  • 衣服だけは頑張ってUV展開する。Seam(縫い目)の入れ方は現実の衣装の型紙を参考にする。実際の衣服も型紙通りに布を切り取ってそれを縫い合わせて作るので、3DCGでのUV展開と型紙は一致する

AO(アンビエントオクルージョン)

 今回読んだ本ではAOを直接テクスチャに焼きこむという不思議な工程をやっていた。不思議というのはAOというのは今のご時世ゲームエンジン側でやるもので焼きこむ話なんて聞いたことがないからだ。調べてみるとVR環境のAOは非常に不安定で不具合のもとになるので、AOについては機能を切ってることがほとんどらしい。だからテクスチャに別途焼きこむことで質感を落とさないようにしているという話

まとめ

 キャラクターモデラーになるわけではないのでいろいろスキップしながらやっていった。フローをするだけでもいろいろと勉強になった。実際にUnityで動かす段階になったときはエンジニアが面倒を見る場面も出てくると思うので良い勉強になった

 

 

Blenderのナイフツールはショートカットキーとボタン操作で性能が違う

ショートカットキーで押したときは頂点/線分に対してSnapしてくれますが、ボタン操作ではしてくれません。

公式ドキュメントにも書いていないのですが、なぜこんな違いがあるんでしょう?

docs.blender.org

URPのサンプルで「Missing URP Asset」と出るとき

エラーのスクショ画面

こんなのが出るときの対応策です

The URP Package samples require a specific pipeline asset to be assigned to the Quality Level in use.

Please assign "PackageSamplesURPAsset" to the Pipeline Asset property in Edit/Project Settings under the Quality tab

というエラーメッセージが出てきます。

指示通りProject SettingsのQuality Tabを開いて

Add Quality Levelを追加。

Render Pipeline Assetの項目があるので、URP Package Samples/SharedAssets/SettingsにあるPackage Samples URP Assetをドラッグアンドドロップ

これで動作します