底辺過ぎてちょっとビビる

26歳からIT業界にいるエンジニアが、まったく成長できてないことを確認するブログ。備忘録的に使いたいとも考えています。

去年の夏から見た映画羅列

去年(2018年)の夏頃から週末は映画をレンタルしてきて観ることが自分の金曜日の過ごし方のデフォルトになってきた。それまで映画のレンタルはあまりしてなくて、たまに借りるくらいだったけど、「金曜日は映画を観る日」と決めてから毎週末が楽しみになってきた。

 

以下、観て来た映画を羅列してみる。覚えていたら感想も。

  • 観た映画
    • インスペクション(SF) 映像表現がよかった
    • ジョン・ウィック2(アクション) 愛犬の復讐という目的がある分、1の方がよかった
    • エリジウム(SF) 世界観の設定がよかった
    • シン・ゴジラ(SF) 映画館で見て、テレビ放送見て、やっぱりまた借りてみた。面白い。
    • 独裁者と小さな孫(ドラマ) よかった
    • 狼たちの処刑台(アクション) 期待した割に面白くなかった
    • ニンジャアサシン(アクション) アクションはよかった
    • ルーシー(SF) 脳の性能を100%発揮したら、というIFが面白かった
    • ザ・ウォーカー(SF) 面白かった。
    • ワンダーウーマン(SF) 期待以上に面白かった
    • Ghost in the Shell(SF) タケシだけ日本語喋ってるの違和感あった
    • グランドイリュージョン(ドラマ) まぁまぁ
    • PIXELS(SF) SFコメディとして面白かった
    • アンドリューNDR114(SF) 哲学的なドラマ。よかった
    • キングスマン2ゴールデンサークル(アクション) 面白かった
    • スーパーの女(ドラマ) 爽快な展開。伊丹監督はやっぱすごい
    • madmax(アクション) まぁまぁ
    • madmax2(アクション) まぁまぁ
    • カリオストロの城(アニメ) 面白い!!最高!
    • madmax thunderdome(アクション) まぁまぁ
    • madmax furyroad(アクション) 面白い!
    • ジュラシックワールド炎の王国(SF) 面白い!ラプトル可愛い!
    • メッセージ(SF) 難解な要素もあるけど、面白い。
    • リベリオン(SF) 演出に不備はあるものの、ガン=カタ最高!

    アクションとSFを中心に、たまーにドラマ系とアニメも借りてみた感じ。 観初めて思ったのは、「結構みてない映画たくさんあるなぁ〜〜〜」ということ。

    結局劇場で見たのは、「イコライザー2」と「ブレードランナー2049」だけ。 たくさんいい映画があるので、今後も「週末は映画」というスタイルは続けていきたいな。

Web APIのテストを通して学んだこと(現在進行形)

現在、あるWeb APIのテスト業務に携わっている。「Web API」と書いたが、実はWebAPIとは何か?という部分が実ははっきりとよくわかっているわけではない。漠然とWebアプリケーションと同義と捉えていたけれども、厳密には違うような気もしている。

 

クライアントサイドとサーバサイドでHTTPでリクエストとレスポンスがあると、WebAPIという仕組みになると理解しているのだけど、合っているだろうか...静的なサイト(Webページは)WebAPIではない、という理解で合っているだろうか...

今回のエントリーではその部分(WebAPIの詳細)については、無関係ではないが書きたい部分では無いので、省略します。

今までやってきたWebAPIのテストは導入に過ぎなかった

これまで3つのWebAPIのプロジェクトに関わってきて、結合テスト(含む単体テスト)をメインに経験を積んできた。 それまで非Webの業務系アプリケーションのみの経験しかない自分にとっては、「これがWebAPIのテストというものか!」と 非常に勉強になったし、この先テストエンジニアとして成長したいと思わせるものだった。

問題は「無知ゆえの万能感」だったのかも知れないが、3つのプロジェクトを経験したことで「これでどこのプロジェクトに参加しても大丈夫」と 高を括ったことだろうと思う。

今のWebAPIプロジェクトに参加してわかったが、これまでの2つのプロジェクトは使うツールにしても非常に限定的で 現在のWeb界隈でいえば何も使ってないに等しい状態だったのでは?と今では思う。

「★」印をつけた箇所が新しく知ったり使うことになったツール類なのだけども、数えたら9つもあった。

幸い、「使ったことないんですか?w」というようなこちらの無知を笑うような人がいないので助かっているが、 知らない・使ったことのないものが多過ぎて正直しんどい。

GoogleDriveについては私用で利用していたけど、業務的に利用していたわけじゃなかったので、 「こうやって使うと共有してドキュメントが見られるのか」と初めて知ることになっている状態。

XAMPPについては業務利用の経験はなかったが、PHPの勉強を個人的にしていたおかげで、XAMPPそのものについては 知っていたのでよかった。

AWSについては、利用はしているがサーバにアクセスしているだけなので、本質的な意味では何も知らないまま。

テストのやり方に違いはあるか

復習の意味も含めて、これまでのWebAPIテストのやり方を振り返ってみよう。

これまで
⓪. テストソースに更新があればSVNのUPDATEで最新化
①. テストケースに沿って、入力値をブラウザの各項目に入力
②. 登録・更新形であれば、DBを参照しINSERTされているかUPDATEされているかを確認
③. 参照系であれば、事前にDBを参照し参照先のテーブルの値が表示されているかを確認 

そして、現在のテストのやり方はどうだろうか。

現在
⓪. テストソースに更新があれば、SVNかGitにて最新化
①. Dockerに入り、RDBを起動
②. テストケースに沿って、入力値をブラウザの各項目に入力。場合によってはPOSTMAN経由でJSON入力
③. 登録・更新形であれば、DBを参照しINSERTされているかUPDATEされているかを確認
④. リクエストが通っているか、レスポンス結果は想定通りであるかをF12(ブラウザの開発者モード)で確認
⑤. 参照系であれば、事前にDBを参照し参照先のテーブルの値が表示されているかを確認  
⑥. ④と同じ



眺めてみると基本の部分は変わらないことがわかる。JSON入力のためにPOSTMANを利用したり、 ソースファイルの最新化にSVNと並行してGitを利用している。 リクエストとレスポンスの確認としてブラウザの開発者モードを利用しているのは大きな違いと言えるかも知れない。

実は、「JSON」について現在のプロジェクトで初めて知った。 これまで入力といえば、数値か文字列かくらいで JSONのようなひとまとまりのデータ形式というのは意外なデータ形式だった。 C言語でいえば、構造体のような。

どんな形式かというのはわかったが、受け取り側はこれをどのように処理しているのかまではまだわかってない。 今後の課題である。

WebAPIのテストを通して学んだこと、は何か

ただ現在使っているツールを並べただけのエントリーになってしまった感があるが、 何より「今までテストしたことは方向性として間違っていたわけではないが、ツールの知識がなさ過ぎた」 ということを現在のプロジェクトで痛いほど思い知った。それが学んだことかも知れない。


はっきりいって、今のソフトウェア開発においてツールを知らないということは 開発環境を知らないということと同じだと思う。 C言語の開発環境では、UNIXとエディタ・DB(とDBをみるためのクライアントツール)を知っていればよかったけど Web業界は毎年新しい環境が生まれて利用されているので、せめて標準とされているものくらい 知っておかないといけない。


何よりその知識がないと、「テストができない」ことがよくわかった。


わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Git使い方入門

わかばちゃんと学ぶ Webサイト制作の基本

わかばちゃんと学ぶ Webサイト制作の基本

ポストマン (ハヤカワ文庫SF)

ポストマン (ハヤカワ文庫SF)

Docker/Kubernetes 実践コンテナ開発入門

Docker/Kubernetes 実践コンテナ開発入門

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで

【テスト設計】テスト仕様書を考えるのってこんなに難しかったのか

テスト設計してます!と面談では答えた。経歴上にも確かにテスト仕様書書いたり、テスト計画書書いたり、シナリオ書いたりしてたので、嘘は言ってないつもりだった。

 

今のプロジェクトで、「テスト仕様書のフォーマットを考えてほしい」という要望にも応えられるつもりだったのだけど、いざフォーマットを作り出すと「?」となることが多くて、「今までテスト設計したつもりになってたけど、実はテスト設計なんてしてなかったんじゃ」と不安になってきた。

 

テストを設計するというと、自分の場合「どんなテストケースを作ればいいか」を重点に考えるけど総合的に設計するとなると「どんなテストケースを作ればいいか」は枝葉と言ってもいいかもしれない。何が幹になるの?というのはまだわかってない。

 

そもそもフォーマットを作る、となると

と外側部分で決めておかなくてはいけないことがあることがわかった。なぜこういう部分に意識がいかなかったかといえばそれはだいたい決められていたから、ということに他ならない。

 

だいたいこういうテスト仕様というかドキュメント管理部分を外注に決めさせるようなSIerはないから。大手なら尚のことだ。

 

今までは決まった規則に従ってドキュメント(テスト仕様書)を書いていたけど、今回はフォーマット作り、ということなので(作業が合ってるかは別として)考えておかなくていけなかった部分だった。もしかしたら、この辺りのドキュメント管理に関する仕様は決まっているかもしれなくて、余計なことをしてるのかもしれない。

 

で、ドキュメント管理に関する仕様が(未確認ながらも)完成しているので、実際にUTの仕様書のフォーマットを書いてみたけれど、結局何が「UT」に当たるのか「IT」に該当するのは何?ってなることが多いなと思った。

 

一旦、どんなことをテストケースに書かなくてはいけないかというのは置いておいて、テストケース(テスト仕様書)のフォーマットを決めておくことを優先作業とした。

 

f:id:starscream1999:20181216190637p:plain

UT仕様書のサンプルイメージ

テスト仕様書の各項目は以下のように定義した。過不足あるだろうが、ある程度は網羅出来ているのではないか? 

・No. 項番

分類 テスト分類

 初期表示なにも操作せずに表示された状態

 操作項目テスターが行う操作

 非操作項目操作系ではないものの確認すべき項目(データ格納等)

 その他

・テスト項目 テストする項目

・詳細項目 詳細

・対象 画面 | フォームであれば該当のフィールド名

テスト区分 正常 | 異常

テスト内容 テストの内容

再現方法( テストを実行するための方法

期待結果 テストで得られる期待値

参考資料 仕様書などを別紙で確認する必要がある場合は記載(入力規則など)

エビデンス テスト実施後提出するエビデンスの種類。場合によっては具体的に

テスト結果 OK | NG

実施日 実施した日時

担当 実施した作業者名

結果コメント テスターからのコメント欄

エラー発生時は、日付とエラー内容を入力

追記の場合は上書きではなく、下の行に追加していく。

備考 テスト設計者からのコメント欄

チケット 該当チケットのURL(チケット登録後、テストリーダーが入力)

Web  null | 〇 ウェブシステムかどうか

アプリ null | 〇 ネイティブアプリかどうか

実際にテストケースを書く上で必要な土台作りは出来たので、あとはテストの観点がまとまれば問題ないと思う。IT仕様書もほぼ同じ作りで、上記項目の中から「対象」の項目を削除した。結合テストの観点から考えると、ピンポイントで画面項目名が必要とは考えられなかったからだ。

 

また、上記のようなテストケースではなく、マトリクスを作って一覧的に確認する方法もあると思う。画面項目の活性非活性制御や状態遷移の確認などに有効な気がするが、画面内の項目が多くなるとものすごく大きなマトリクスになってしまい、時間もかかる。いいか悪いかは別として、そういう手段もある。とにかくドキュメントがあると安心するようなSierなんかの場合、「自分が実際にテストする立場じゃなければ」あれば喜ばれるかも知らん。

 

しかし、いざテストケースのフォーマットと言われても最初の一歩で困惑するのはいまだにテストエンジニアとして全く経験が足りてないことの証左だな〜と改めて自分の今後に不安を覚える次第であります。

 

 

 

季刊S(エス) 2019年 01 月号 [雑誌]

季刊S(エス) 2019年 01 月号 [雑誌]

 
テスト駆動で作る!初めてのAzureアプリ (技術書典シリーズ(NextPublishing))

テスト駆動で作る!初めてのAzureアプリ (技術書典シリーズ(NextPublishing))

 
Pepper最新事例に学ぶロボアプリ開発 ?豊かなUser Experienceを生むロボットユースケースデザインとフィールドテストによる現場改革編?

Pepper最新事例に学ぶロボアプリ開発 ?豊かなUser Experienceを生むロボットユースケースデザインとフィールドテストによる現場改革編?

 

【ゲーム感想】探偵神宮寺三郎 プリズム・オブ・アイズをプレイしました

たまたま寄ったゲームショップで「神宮寺三郎」の文字を見かけて、まさか新作がPS4で出てるなんて知らなかったのでびっくりしましたが、すぐに購入しました。

 

f:id:starscream1999:20181118155353j:plain

探偵 神宮寺三郎 プリズム・オブ・アイズ | ARC SYSTEM WORKS

 

自分と神宮寺三郎との出会いは割と古くて、ファミコンの「横浜港連続殺人事件」が最初でした。アドベンチャーゲーム自体に触れることは多くなかったのですが、神宮寺三郎シリーズを始め、オホーツクに消ゆなどの「現実の世界を舞台にしたゲーム」というのはリアリティがあって妙に興奮したのを覚えています。神宮寺三郎シリーズをきっかけにアドベンチャーゲームって面白いなぁという認識になっていたと思います。

 

f:id:starscream1999:20181118160324j:plain

パッケージからしてハードボイルド小説みたいで素晴らしい

しかし、当時のファミコンのアドベンチャーはコマンド総当たりシステム(すべてのコマンドをとりあえず試さないとだめ)かつフラグ立てが難しくて、結局「横浜港~」は未クリアだったんですね。

 

クリアできなかったものの、「ハードボイルドな神宮寺の雰囲気」「御苑洋子の大人のムード」そして「タバコ」というパーツは子供心に強烈な印象を残していました。その後いくつか神宮寺シリーズは出ましたが、開発元のデータイーストの倒産などあり色々なデベロッパーから発売されることになりました。

 

クロス探偵物語」で有名なワークジャムワークジャムが倒産したあとは「アークシステムワークス」で、今作の「プリズムオブアイズ」はアークシステムワークスからの発売です。

 

プリズムオブアイズとは?

今作は実は一本のソフトではないです。買ってから気づいたのですが、過去に発売された携帯アプリゲームから10作と新作3作、次回作「ダイダロス:ジ・アウェイクニング・オブ・ゴールデンジャズ(タイトルなげ~)」の体験版が入ってるのです。

 

※が新作

  1. 時の過ぎゆくままに…
  2. 6枚の犯行
  3. 亡煙を捜せ!
  4. アオイメノリュウ
  5. イヌと呼ばれた男
  6. ふた色の少女
  7. 託された指輪
  8. 椿のゆくえ
  9. 果断の一手
  10. 連鎖する呪い
  11. 虚飾ノ夜※
  12. 死者に捧げる石※
  13. 魔鏡の真実※
  14. 新作の体験版※

自分自身では「神宮寺三郎シリーズのファン」を自負していましたが、上記のアプリはひとつもプレイしてなかったです。「時の過ぎゆくままに...」は元々ファミコンで発売されていたようですが、それすら知らなかったです。ははは...

 

プレイした感想

過去作のリメイク10作、ということですがひとつもプレイしてないので単純に新作13作を遊べるということですごいボリュームです。一つ一つの話はおそらく2~3時間程度で終わるような感じなのですが。難易度自体も非常に低くて、適当に選択していれば解決できてしまう感じです。というのも事件現場を調査するようなシーンでも、自由に調査するような仕組みではなくてオブジェクトを選択するだけなので、「見落とし」となるようなことがないからです。

 

なので、ゲームと言うよりはノベルにちょっと寄ってる感じでしょうか。あまりプレイヤーが捜査に入り込むようなポイントはない感じです。途中で思考パズル的なものもいくつかありますが、それも回答は選択式なので、考えなくても解けるようになっています。元のアプリゲー自体のボリュームやシステムを知らないのでリメイクに際してどの程度の移植度なのかがわからないのですが、難易度はもうちょっとなんとかならなかったかな?という感じです。

  

ただ、シナリオ自体は非常に洗練されていて、キャラクター性もまったく損なわれておらず、またBGMも素晴らしくゲームとしての難易度は低いかもしれませんが、全体として「神宮寺三郎シリーズ」を久々にプレイした自分からすると満足できる内容でした。

 

今のところ4作ほどプレイしましたが、切ない話が多くてとてもいいです。

 

ちなみに最初は画面カーソルを合わせてもコマンドの色が変わらずに、どこを選択してるのかよくわからなかったのですが、その後のアプデで色が変わるようになったのは良かったです。

 

今後このような形で過去作をリメイクしてくれるととても嬉しいですね。というのもDSや携帯アプリなどで発売された過去作はまったくプレイできていないので。

 

 

探偵 神宮寺三郎 新宿の亡霊 上

探偵 神宮寺三郎 新宿の亡霊 上

 
探偵 神宮寺三郎 新宿の亡霊 下

探偵 神宮寺三郎 新宿の亡霊 下

 

【反省会】はじめてリーダーになって思ったこと

7月から大手電機メーカーのSIer部門でプロジェクトに参画して、はじめてテストチームのリーダーとして業務に携わった。テストチームといっても小規模で、自分の配下には2名のテスターがいるだけ。総勢3名なので大したことないのだけども、経験したことを振り返ろうと思う。

 

関わったテストというのは「機能の起動状況管理」というもので、全体の結合テストで実施される各フェーズ(例:性能テスト)において、すべての機能(ここでは更に分割されたプログラムと言ってもいい)が実行されているかどうかをチェックする、というもの。

 

なので、自分のテストチーム単体ではなにかテストをするというわけではなく、他のテストチームから受け取ったテストログをもとに「正常起動している」「起動はしているが、正常かどうか判別つかない」「起動しているが、エラーを吐いている」「起動していない」をチェックする。正直、存在意義がよくわからないが「二重チェック」という意味で必要だったのだろう。他のテストチームも「あそこはなにやってんだ?」という感じだったと思う。

 

①テスト計画書の読み込みが甘かった

最初はプロジェクト全体の概要を知るために「テスト計画書」を提示された。これを読むことで、どんなテストをいつまでに、どのようにテストをするかを把握できる。テスト計画書を読み、ある程度頭に入っていたものの、細かい部分まで認識出来ていなかった。そのため、手戻りが発生してしまったことがあった。

 

②管理の抜けや漏れが多く、全体的に甘かった

2名のテスターの日々の進捗を管理表をもとに管理していた。管理表のベースはすでに作成されていたもので、手を入れることはなかった。管理表はテスト仕様書と同じもので、いわゆるWBSは作成していなかった(必要がなかった)。

 

当初、というかテスト実施から2ヶ月経過した時点までは管理表ベースの管理でも問題なかった。日々の進捗は割と順調で曲線はほぼ右肩上がりを描いており、このまま順調に進むものと考えられた。しかし、ある日を境にまったく消化が進まない事態に陥ってしまった。これの原因はテストチームから受け取るテストログで確認できる機能(プログラム)が既存のものばかりになってきたせいだった。

 

WBSくらいはせめて作っておくべきだった。

 

③管理表の数字に対する甘さ

これは日々の進捗報告であまり詰められることがなかったことで、シビアに管理してなかったことも原因だが、複数存在するテスト仕様書の管理上の数字(消化件数など)が一致していなかったり、そもそもの管理上の数字を「どのように算出したか」がフワフワしていたのは、何考えて管理してたのだろう?と自問自答している。

 

④状況把握がきちんと出来ていなかった

テストの消化状況が鈍化してくるにあたって、どのように解決すべきかの方法がよくわからなかった。あくまでこちらはテストログを受け取って、その内容を評価するだけに過ぎないので「この機能が確認できないので、テストを実施してください」とテストチームに進言していいのかすらわからなかった。そもそもテストチームはシナリオに従ってテストを進めているわけで、全部の機能を網羅できているかどうかこちらでは判断つかなかったわけだが。

 

問題は、機能がすべて評価対象になるわけではなく、そのうちのある程度の機能が「使われていない機能だった」ということ。つまり何度テストログを評価しても使われていない機能は「ログ」に出てこない。

 

この件については、うちのテストチームで管理が甘かったせいというわけではないが、テスト消化が鈍化してきた段階で「アラーム」を上げる必要があっただろう。その段階というのは「いつ」だったか。

 

⑤対象機能に関連性を見出す、もしくは資料の精度を上げることをしてなかった。

テストログを検証していて「いつまでたっても検出できない機能」はなにかしら規則性があったはずだが、近視眼的にテスト消化を管理していたので、まったくそのあたりの意識が薄く、「いつか確認できるだろう」と高をくくっていた。

 

なにかアクションをする際は、自分からではなくプロパーの社員(自分の上にいて、総合的に管理してくれていた)から「状況を○○さんに確認してみてください」というような指示があった。彼からの指示がなければ何も出来なかった。

 

進捗状況を管理する、という基本的な認識があれば管理のために必要なドキュメントの整理も出来たはず。また、関連部署と人が「どんな部署か」「何をやってる人なのか」をきちんと把握できていれば、少なくとも協力を仰ぐことももっと早く出来たのではないか。いつまでもガキの使いのように言われたことをやるだけではダメだった...

 

上記のことを振り返ると、リーダーとしてなにか成せたのか?と思うことばかりだ。テスターからの進捗管理は別にリーダーでないと出来ない類の仕事ではない。与えられた立場に浮ついて、やるべきことを認識できていなかった。

 

一応経歴上、メンバーとかサブリーダーではなく、リーダーとして仕事をしたことにはなるが「もっと早くリーダー、というか管理系の仕事をすべきだった」と思わずにはいられない。何をするにもビビりが最初に入り、できっこないとやる前から失敗ばかり考えていたからな...

 

体系的にプロジェクトマネジメントを学ぶ必要があると思った次第です。

 

中間管理録トネガワ(1) (ヤングマガジンコミックス)

中間管理録トネガワ(1) (ヤングマガジンコミックス)

 
オレたちバブル入行組

オレたちバブル入行組

 
まんがでわかるLinux シス管系女子(日経BP Next ICT選書)

まんがでわかるLinux シス管系女子(日経BP Next ICT選書)