SlideShare a Scribd company logo
1 of 28
Effective Java 輪読会 第5回
(項目35~37)
2014/1/29
開発部 野口
項目35
命名パターンよりアノテーションを選ぶ
命名パターン




何らかのプログラム要素がツールやフレーム
ワークによる特別な処理を要求していること
を示すためのテクニック
例)JUnit テストフレームワークのテストメ
ソッドは「test」で始まることが要求されてい
た
命名パターンの短所1


誤字に気づかない
 tsetSafetyOverride

と名付けてしまっても、JUnit

は何も言わない
 黙って、実行しないだけ


余談: CppUnit-x では(命名パターンとはちょっと違いま
すが)関数ポインタを TestSuite に登録するコードが必要
で、書き忘れると何も起こらなかったので、うっかりミ
スがないように、必ず最初はテストを fail させるようにし
ていました
命名パターンの短所2


適切なプログラム要素にだけそれらが使用さ
れることを保証する方法がない
 「testSafetyMechanisms

クラス」を定義したと
き、そのクラスのメソッドがテストとして実行さ
れるかな?と期待するかもしれないが、されない
命名パターンの短所3


プログラム要素にパラメータ値を関連付ける
良い方法を提供していない
 「特定の例外をスローした場合にだけ成功する種

類のテスト」をスマートに書けない
 たとえば

testThrowsException_throws_DataSpiderException()
のように命名規則を用いることもできるが、脆弱



他の型が適切な場所では、文字列を避ける(項目50)
実行時にしか間違いに気づけない
アノテーション


これらの問題をすべて上手く解決します!
// マーカーアノテーション型宣言
import java.lang.annotation.*;
/**
* このアノテーションが付けられたメソッドがテストメソッドである
ことを示す。
* パラメータなしの static のメソッドに対してだけ使用すること。
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Test {
}
解説(1/3)


@Retention / @Target
 メタアノテーション
 アノテーション型の宣言に対するアノテーション
解説(2/3)


@Retention(RetentionPolicy.RUNTIME)
 Test

アノテーションを実行時に保持すべきことを

示す
 このメタアノテーションがないと、Test アノテー
ションはテストツールから見えなくなる


@Target(ElementType.METHOD)
アノテーションがメソッド宣言に対してのみ
許されていることを示す
 クラス宣言、フィールド宣言、その他のプログラ
ム要素には @Test を適用できない
 Test
解説(3/3)


「パラメータなしの static のメソッドに対し
てだけ使用すること」
 これを強制する方法はない
 コードを書く人がこれを守らなかった場合、実行

時に失敗する
 JUnit

4 では、java.lang.Exception がスローされます

(動かしてみましょう)
パラメータを持つアノテーション
型(1/2)
import java.lang.annotation.*;
/**

* アノテーションが付けられたメソッドは、成功するには指定された例外
を
* スローしなければならないテストメソッドであることを示す。
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface ExceptionTest {
Class<? extends Exception> value();
}
パラメータを持つアノテーション
型(2/2)


パラメータ型は、Class<? extends Exception>
を拡張した何らかのクラスに対する
Class オブジェクト
 境界型トークンの使用例
 Exception

(サンプルコードを実際に動かしてみましょ
う)
まとめ


ソースファイルに情報を追加するためのプログラミ
ングを必要とするツールを書くのであれば、適切な
アノテーション型の集合を定義する




すべてのプログラマは Java プラットフォームが提
供している事前に定義されたアノテーション型を使
用すべき




今やアノテーションを利用できるので、命名パターンを
使用するのは論外

例)@Override(項目36)、@SuppressWarnings(項
目24)、@Deprecated

IDE や静的解析ツールが提供しているアノテーショ
ンを使用することを検討する
項目36
常に Override アノテーションを使用する
Override アノテーション






メソッド宣言にだけ使用できる
アノテーションが付けられたメソッド宣言が
スーパータイプの宣言をオーバーライドして
いることを示す
非道なバグの多くから保護してくれる
例)Bigram クラス(pp.170)の equals メ
ソッド
Override アノテーションを付ける
とき、付けないとき(1/3)




スーパークラスの宣言をオーバーライドして
いるすべてのメソッド宣言に付けるべき
抽象ではないクラスで、抽象メソッドをオー
バーライドしているときは、不要
を付けなくても、オーバーライドして
いないときにはコンパイルエラーになるため

 @Override



付けても問題はない
Override アノテーションを付ける
とき、付けないとき(2/3)


コードインスペクション
アノテーションが付いていなくてスー
パークラスのメソッドをオーバーライドしている
メソッドがあれば、IDE によっては警告を出して
くれるものがある

 Override
Override アノテーションを付ける
とき、付けないとき(3/3)


インタフェースへの @Override
 リリース

1.6 以降では、インタフェースからの宣
言をオーバーライドしているメソッド宣言にも
Override アノテーションを付けることが可能
 前述の抽象クラスと同様、具象クラスでのオー
バーライドに関しては、不要
 ただし、抽象クラスやインタフェースにおいては必ず

付けるようにする価値はある


例)Set インタフェースは Collection インタフェースに新
たなメソッドを追加していない。すべてのメソッドに
@Override を付けることで、それを保証できる(誤って
新たなメソッドを追加してしまうことがない)
まとめ




スーパータイプの宣言をオーバーライドして
いるすべてのメソッド宣言に Override アノ
テーションを使用することで、コンパイラの
保護が得られる
具象クラスでは、抽象メソッド宣言をオー
バーライドしているメソッドにアノテーショ
ンを付ける必要はない
 が、付けても害はない
項目37 型を定義するためにマーカーイン
タフェースを使用する
マーカーインタフェース



メソッド宣言を含んでいないインタフェース
そのインタフェースを実装しているクラスが
何らかの特性を持っていると単に指定してい
る
 例)Serializable

インタフェース
マーカーインタフェースのマー
カーアノテーションに対する長所
1


マーカーインタフェースは、マークされたク
ラスのインスタンスが実装している型を定義
する
 例)ObjectOutputStream.write(Object)

が
ObjectOutputStream.write(Serializable) ならよ
かったが……。



マーカーアノテーションは型を定義しない
マーカーインタフェースのマー
カーアノテーションに対する長所
2





より正確に対象を特定できる
そのマーカーが適用可能な唯一のインタ
フェースをマーカーに拡張させることができ
る
すべてのマークされた型が、そのマーカーが
適用可能な唯一のインタフェースのサブタイ
プであることも保証される
 例)Set

インタフェース
マーカーアノテーションのマー
カーインタフェースに対する長所
1




デフォルトを持つアノテーション型要素を 1
つ以上追加することで、すでに使用された後
でもアノテーション型に情報を追加できる
インタフェースの場合、一旦実装された後に
メソッドを追加することは一般に不可能
マーカーアノテーションのマー
カーインタフェースに対する長所
2



大きなアノテーション機構の一部
フレームワークの一貫性に寄与する
マーカーアノテーションとマー
カーインタフェースの使い分け
(1/2)
クラスやインタフェース以外のプログラム要
素に対してマーカーが適用される
→マーカーアノテーション
 マーカーがクラスとインタフェースだけに適
用される


 かつ、このマークを持つオブジェクトだけを受け

付ける 1 個以上のメソッドを書きたい
→マーカーインタフェース
マーカーアノテーションとマー
カーインタフェースの使い分け
(2/2)


マーカーがクラスとインタフェースだけに適
用される
 かつ、このマーカーの使用を、特定のインタ

フェースの要素に永久に制限したい
→マーカーインタフェース


それ以外
→マーカーアノテーション
まとめ








関連付けられた新たなメソッドを持たない型
を定義したいのであれば、マーカーインタ
フェースを使用する
クラスとインタフェース以外のプログラム要
素をマークしたいのであれば、マーカーアノ
テーションを使用する
対象が ElementType.TYPE であるマーカーア
ノテーションは要注意
要するに、型を定義したいのであれば、イン
タフェースを使用すること

More Related Content

What's hot

ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
Tomoyuki Sato
 

What's hot (16)

モックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-Cモックライブラリを使ってきちんとユニットテストする #Objective-C
モックライブラリを使ってきちんとユニットテストする #Objective-C
 
Spock's world
Spock's worldSpock's world
Spock's world
 
わんくま名古屋 #32 (20140823) TDD道場 #20
わんくま名古屋 #32 (20140823) TDD道場 #20わんくま名古屋 #32 (20140823) TDD道場 #20
わんくま名古屋 #32 (20140823) TDD道場 #20
 
ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3ありえるえりあ勉強会@五反田~テスト編~ Part3
ありえるえりあ勉強会@五反田~テスト編~ Part3
 
第1回JUnit勉強会ハンズオン
第1回JUnit勉強会ハンズオン第1回JUnit勉強会ハンズオン
第1回JUnit勉強会ハンズオン
 
C++でテスト駆動開発
C++でテスト駆動開発C++でテスト駆動開発
C++でテスト駆動開発
 
TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講TDD Boot Camp Tokyo for C++ 2014-01 補講
TDD Boot Camp Tokyo for C++ 2014-01 補講
 
PHP agile test tips
PHP agile test tipsPHP agile test tips
PHP agile test tips
 
xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11xUnit Test Patterns - Chapter11
xUnit Test Patterns - Chapter11
 
ソフトウェア・テスト入門8
ソフトウェア・テスト入門8ソフトウェア・テスト入門8
ソフトウェア・テスト入門8
 
自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk自動テストの誤解とアンチパターン in 楽天 Tech Talk
自動テストの誤解とアンチパターン in 楽天 Tech Talk
 
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
 
型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善型チェックのアノテーションによる保守・運用の改善
型チェックのアノテーションによる保守・運用の改善
 
テストコードの定型化
テストコードの定型化テストコードの定型化
テストコードの定型化
 
Introduction to boost test
Introduction to boost testIntroduction to boost test
Introduction to boost test
 
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
OpenFOAMのDEM解析のpatchInteractionModelクラスの解読
 

Similar to Effective Java 輪読会 第6章 項目35-37

Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
Funato Takashi
 
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー
Tomoyuki Sato
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
Kinji Akemine
 
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)
masanori kataoka
 

Similar to Effective Java 輪読会 第6章 項目35-37 (20)

debug_profile.pdf
debug_profile.pdfdebug_profile.pdf
debug_profile.pdf
 
wankuma #28
wankuma #28wankuma #28
wankuma #28
 
Jenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCIJenkins+Play!で気軽にCI
Jenkins+Play!で気軽にCI
 
datetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdfdatetime.datetime.now()をモックしたい.pdf
datetime.datetime.now()をモックしたい.pdf
 
Unit testで定時帰宅!
Unit testで定時帰宅!Unit testで定時帰宅!
Unit testで定時帰宅!
 
xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16xUnit Test Patterns - Chapter16
xUnit Test Patterns - Chapter16
 
第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー第3回ソフトウェアテストセミナー
第3回ソフトウェアテストセミナー
 
TABOK Skill Category2解説
TABOK Skill Category2解説TABOK Skill Category2解説
TABOK Skill Category2解説
 
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテストJUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
 
ビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテストビジネス的に高価値なアジャイルテスト
ビジネス的に高価値なアジャイルテスト
 
ソフトウェアテスト入門
ソフトウェアテスト入門ソフトウェアテスト入門
ソフトウェアテスト入門
 
Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能Apache Wicketのユニットテスト機能
Apache Wicketのユニットテスト機能
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 
ユニットテスト 1日目
ユニットテスト 1日目ユニットテスト 1日目
ユニットテスト 1日目
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。アジャイルテストを、壮絶に、考える。
アジャイルテストを、壮絶に、考える。
 
Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)Agileツール適合化分科会(テスト自動化ツール)
Agileツール適合化分科会(テスト自動化ツール)
 
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ーテスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
 
異業種でのテスト自動化の実際
異業種でのテスト自動化の実際異業種でのテスト自動化の実際
異業種でのテスト自動化の実際
 
20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料20121019 jenkins勉強会lt資料
20121019 jenkins勉強会lt資料
 

More from Appresso Engineering Team

Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
Appresso Engineering Team
 
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
Appresso Engineering Team
 
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
Appresso Engineering Team
 

More from Appresso Engineering Team (20)

20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)20150302 java8 第一回_ラムダ式(1)
20150302 java8 第一回_ラムダ式(1)
 
Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78Effective Java 輪読会 項目77-78
Effective Java 輪読会 項目77-78
 
Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75Effective Java 輪読会 項目74-75
Effective Java 輪読会 項目74-75
 
マルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Executionマルチスレッド デザインパターン ― Single Threaded Execution
マルチスレッド デザインパターン ― Single Threaded Execution
 
JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文JavaScript 勉強会 ― 変数・演算子・文
JavaScript 勉強会 ― 変数・演算子・文
 
JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値JavaScript 勉強会 ― 型と値
JavaScript 勉強会 ― 型と値
 
Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加Effective Java 輪読会 項目69-70追加
Effective Java 輪読会 項目69-70追加
 
Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70Effective Java 輪読会 項目69-70
Effective Java 輪読会 項目69-70
 
Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68Effective Java 輪読会 項目66-68
Effective Java 輪読会 項目66-68
 
Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73Effective Java 輪読会 項目71-73
Effective Java 輪読会 項目71-73
 
Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)Java Day Tokyo 2014 まとめ (chen)
Java Day Tokyo 2014 まとめ (chen)
 
Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65Effective Java 輪読会 項目63-65
Effective Java 輪読会 項目63-65
 
Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62Effective Java 輪読会 項目60-62
Effective Java 輪読会 項目60-62
 
Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59Effective java 輪読会 項目57-59
Effective java 輪読会 項目57-59
 
Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52Effective Java 輪読会 項目49-52
Effective Java 輪読会 項目49-52
 
Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48Effective Java 輪読会 項目45-48
Effective Java 輪読会 項目45-48
 
Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56Effective Java 輪読会 項目53-56
Effective Java 輪読会 項目53-56
 
Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44Effective Java 輪読会 第7章 項目43-44
Effective Java 輪読会 第7章 項目43-44
 
Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42Effective Java 輪読会 第7章 項目41-42
Effective Java 輪読会 第7章 項目41-42
 
Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40Effective Java 輪読会 第7章 項目38-40
Effective Java 輪読会 第7章 項目38-40
 

Recently uploaded

研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
atsushi061452
 

Recently uploaded (16)

部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
部内勉強会(IT用語ざっくり学習) 実施日:2024年5月17日(金) 対象者:営業部社員
 
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
Hyperledger Fabricコミュニティ活動体験& Hyperledger Fabric最新状況ご紹介
 
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
MPAなWebフレームワーク、Astroの紹介 (その1) 2024/05/17の勉強会で発表されたものです。
 
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
研究紹介スライド: オフライン強化学習に基づくロボティックスワームの制御器の設計
 
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
論文紹介:ViTPose: Simple Vision Transformer Baselines for Human Pose Estimation
 
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
Amazon Cognitoで実装するパスキー (Security-JAWS【第33回】 勉強会)
 
情報を表現するときのポイント
情報を表現するときのポイント情報を表現するときのポイント
情報を表現するときのポイント
 
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
クラウド時代におけるSREとUPWARDの取組ーUPWARD株式会社 CTO門畑
 
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdfネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
ネットワーク可視化 振る舞い検知(NDR)ご紹介_キンドリル202405.pdf
 
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
5/22 第23回 Customer系エンジニア座談会のスライド 公開用 西口瑛一
 
Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )Intranet Development v1.0 (TSG LIVE! 12 LT )
Intranet Development v1.0 (TSG LIVE! 12 LT )
 
Keywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltdKeywordmap overview material/CINC.co.ltd
Keywordmap overview material/CINC.co.ltd
 
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイルLoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
LoRaWAN無位置ロープ型水漏れセンサー WL03A-LB/LSカタログ ファイル
 
20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf20240523_IoTLT_vol111_kitazaki_v1___.pdf
20240523_IoTLT_vol111_kitazaki_v1___.pdf
 
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
2024年5月17日 先駆的科学計算フォーラム2024 機械学習を用いた新たなゲーム体験の創出の応用
 
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
ロボットマニピュレーションの作業・動作計画 / rosjp_planning_for_robotic_manipulation_20240521
 

Effective Java 輪読会 第6章 項目35-37