対戦型ロボットゲームで楽しくJavaプログラミング学習「Robocode」(その1:準備編)
かなり昔、Javaのプログラミング教材として「Robocode」というオープンソースソフトウェアが公開されました。(Wikipediaによると初版は2001年に公開されているとのこと。もう20年以上も前ですね) 一時期はほとんど更新が止まっていたのですが、最近になって最新版が公開されていることを発見しました。 つい懐かしくなってダウンロードして遊んでみました。 Robocode とは # Robocode は、対戦型のロボットシミュレーションゲームです...
記事を読むWSL2上にUbuntu-22.04LTSを導入し、Dockerをインストールしようとしたら、いろいろとハマった件
仕事で Ubuntu + Docker を使うシーンが出てきて環境を構築したので、備忘録を兼ねて環境構築方法を記録しておこうと思います。 これまで何度も Ubuntu + Docker 環境を作ってきましたが、Windowsの WSL(Windows Subsystem for Linux)で Ubuntu + Docker 環境を構築するのは初だったので思った以上にハマってしまいました。 WSLのバージョン、Ubuntuのバージョンによって難易度が左右されることを思い知らされました...
記事を読むJava用モック・フレームワーク「Mockito」を使ってみる(その3:テストケースをまとめる編)
前回は「Mockito」でvoid型メソッドをモック化する方法について解説しました。 今回は「複数のテストケースを1つのテストケースにまとめる」方法について解説したいと思います。 テストケース数が多くなりすぎた時 # これまで使用してきたサンプルプログラム「FooController」と「BarSensor」の仕様を再度確認します。 「BarSensor」の仕様: 対象物との距離を測定する「scan」メソッドを持つ。戻り値はInt型...
記事を読むJava用モック・フレームワーク「Mockito」を使ってみる(その2:void型メソッドのモック編)
前回は「Mockito」の基本的な使い方を解説しました。 今回は「void型メソッド」をモック化する方法を解説したいと思います。 「whenメソッド」と「doメソッド」 # void型メソッドのモック化について解説する前に、モックの動作定義について再度説明したいと思います。 前回はモックの動作を定義するとき「whenメソッド(when/thenReturn)」を使用しました...
記事を読むJava用モック・フレームワーク「Mockito」を使ってみる(その1:基本編)
「Mockito」とは # Mockito は、Java でユニットテストを行う際に使用されるモック・フレームワーク(mocking framework)です。 Mockito を使用すると、実際のオブジェクトの代わりに「モック(仮の実装)」を作成し、テストケース内で特定の振る舞いを模倣できます。 外部依存の他のクラスが完成していない状態でも、独立してテストを実行することができます。 Mockito は、テスト駆動開発(TDD)と相性が良く、コードの品質を向上させるのに役立つツールです...
記事を読む品質保証者の憂鬱「そこのあなた、無闇にメトリクスを増やしていませんか?」
この記事は夏のリレー連載2023第9日目の記事です。 いやぁ、本当に毎日暑いですね。 なので今回はちょっとゾッとする(肝が冷えるかどうかは別ですが)話をしたいと思います。 「エビデンスを見せろ」と詰められる # 前回はトム・デマルコ氏による「計測できないものは制御できない」について筆者の思うところを語りました。 筆者はソフトウェア開発現場で長い期間にわたり品質管理・品質保証の仕事に従事してまいりました...
記事を読む品質保証者の憂鬱「計測できないものは制御できないは本当か?」
前回の投稿から1か月以上も期間があいてしまいました。 少し時間が取れるようになってきたので、今回もソフトウェア品質について少し語っていきたいと思います。 「計測できないものは制御できない」 # ソフトウェア開発業界に限らず、何らかの開発作業に従事している人であれば次の言葉を聞いたことがあるのではないでしょうか。 計測できないものは制御できない この言葉は1982年にトム・デマルコ氏によって語られました...
記事を読む品質保証者の憂鬱「鉄釘から始まる人間論」
4月、5月はプライベートがかなり忙しく、前回の投稿から1か月ほど期間があいてしまいました。 今回は少し軽いお話(テーマは重い)をしたいと思います。 デスマーチでリタイヤ者続出 # 私は長くソフトウェア開発の仕事をしてきましたが、製品・サービスを納期通りにリリースできたプロジェクトの数は片手で数えても余ります。 納期通りに製品・サービスをリリースできなかった原因は様々です。 そもそも見積もりが甘い。 技術要素を詰めきれていない。 人材が足りない。 そもそもスキルがない...
記事を読む品質保証者の憂鬱「あなたを見込んでご相談したいのです」
前回は「制限事項」と「注意事項」の違いについて考えてみました。 今回は理屈ではうまく説明できない”感情”についてのお話をしたいと思います。 犬猿の仲とはよく言ったもので # 筆者は長い間、開発部門と品質保証部門に在籍していました。 私が仕事で関係した人たちの間では、開発部門と品質保証部門の関係を「犬猿の仲」と揶揄することが多くありました。 誰も望んで「犬猿の仲」なっているわけではないと思うのですが、両者の関係が拗れると、それを元の関係に修復するのはかなり難しいです...
記事を読むChatGPT先生に教わりながら「Transformerの肝」である「注意機構(Attention機構)」を可視化する
前回と前々回では機械学習アーキテクチャ「Transformer」を使って簡単な文章生成に挑戦しました。 ちょっと前までは、プログラミングで調べたいことがあるときは「Google先生」にお伺いを立てていたのですが、最近は「ChatGPT先生」にお伺いを立てることが増えました。 (ここでは ChatGPT に対して敬意を込めて「ChatGPT先生」と呼称しています...
記事を読む