SlideShare ist ein Scribd-Unternehmen logo
1 von 23
Downloaden Sie, um offline zu lesen
レガシー化しても困らないための
コーディング
Sansan×M3 Tech Night ~レガシーシステムに立ち向かえ!~
2018.11.22
エムスリー 中村貴志
自己紹介 中村貴志
● エムスリー株式会社
インターネットを活用して健康で
楽しく長生きする人を増やし、
不必要な医療コストを削減する
○ 医療者向けポータル
www.m3.com
○ 一般の方向け医療相談サイト
AskDoctors.jp
2
● 基盤開発チーム
○ m3.comの認証基盤APIの担当
○ 社内の開発環境の改善
○ 他のチームのヘルプ
○ など
● エムスリーテックブログ
bashスクリプティング研修の資料を公開
します
https://www.m3tech.blog/entry/2018/
08/21/bash-scripting
未来のレガシーを作っている
レガシーなものに関わっていて辛さを感じることはある
でも、いま自分たちが作っているものがいつかはレガシーになり、
後任の人を苦しめることになるのかもしれない
3
レガシーの難点
● 仕様・意図 (どうしてそう動かしたいか) がわからない
○ どう動くかは実装コードを読めばいい
○ 書いてあることが意図通りかバグってるかがわからない
○ 経年変化で前提条件が変わっている場合もある
● 他との依存関係、影響範囲がわからない
○ 動作確認する対象範囲は?
○ 同時に修正が必要なことがあるか?
○ 変更してはいけないことがあるか?
4
コーディングでの対処
● 意図を読み解きやすい実装にすること
● 適度にコメントを書くこと
○ どういったコメントを残すか?
○ どこにコメントを残すか?
5
仕様、意図 をコメントに残す
どう動くか、より、なぜ必要か・どういう意図かをコメントする
コードから読み解けない意味や意図をコメントに残す
レビュー時に意図と合っているのかをチェックできる
// 空ならtrueを返す ← NG
// ここでユーザがいないのは既に削除済みと同義 ← OK
if (userList.isEmpty()) {
return true;
}
6
// ユーザが重複していたら最大値を使う ← NG
// IDが最大のものが最新データである ← OK
ID targetUserId = Math.max(userIdList);
コピペコードはコピー元を書く
コピー&ペーストしたコードはコピー元を書く
コピペで対処した事情があれば書く(「作業時間がなくて仕方なく」でもOK)
修正時に一緒に修正が必要な箇所はお互いにそのことを書いておく
■ countActiveUsersByName
-- UserDao#findActiveUsersByNameに対する件数を取得
-- NOTE 条件部分をfindActiveUsersByNameと同じにすること
select count(*)
from users u
where u.name like '%{{name}}%' and u.is_active = 1
7
定石から外れた処理の理由
定石から外れた処理は、なぜ必要かを説明
する
リファクタリング時にバグになりがち
● 最適化のための意図的な崩しなのか
● どうしても解決できなかったバグへの対処
なのか
● 最適解が他にありそうでも思いつかな
かった場合
ループ変数に関係ない処理なのにループ内に
あるのは奇妙では?
ループの外に出した方が効率的かも?
for (User user : userList) {
// ループ内で他ユーザに変更があるため
// ループのたびに同期が必要
userLogic.syncAllAttributes();
if (userLogic.isAllowed(user)) { 〜〜 }
}
8
フレームワークのバグや制限への対処
フレームワークやライブラリへの対処で、無理やりな方法 や monkey patchを使う場合
は丁寧に理由を書く
将来フレームワークのバージョンアップで治るかもしれないので、ドキュメントやissueの
URLを残しておく
// FIXME SpringのHogeFilter#doSomething は〇〇が××になるバグがある
// https://github.com/spring/spring/issue/9999
// 暫定での回避のために、ここで〜する
9
依存モジュールの目的を書く
依存モジュールが、何の目的に入れているかを書いた方がいい
バージョンアップ時に何に気をつけて確認するか、別のものに変えられるのかを判断で
きるようにする
依存に含めるだけで暗黙的に作用するようなものは特にわからなくなりがち
(文字化け回避のフィルタ機能、言語の次期仕様の先取り、etc...)
要らないと思って消したら思ってないところでバグに...
「依存モジュールが作用していること」というユニットテストを書くとよい
10
ファイルにコメントをつける
設定ファイルが何の用途かがわからなくなることがある
ライブラリを除去するときに設定ファイルが残されがち
暗黙で読み込まれる場合があるので削除したときの影響がわからなくて怖い
(ライブラリの利用箇所を検索するときに使いそうな単語を書いておくのがよい)
また、設定値の意図をコメントすることも重要!
なぜそういう設定にしたかったのか?がわからなくなると設定を変えづらい
(自動生成された初期テンプレートを1度コミットし、次に修正を加えるのとGit差分で修正範囲がわかりや
すい)
「設定が機能していること」というユニットテストを書くとよい
11
コメントが要らないコーディング
● コメントをつけるより、
メソッド化・定数化で名前を
割り当てて表現する
● テクニカルなコードより、平易なコード
(Streamよりforがいい時もある)
class User() {
boolean hasNeverUsedSinceCreated() {
return user.status == NORMAL &&
user.firstLoginedAt == null;
}
}
if (user.hasNeverUsedSinceCreated()) {
〜〜
}
12
要らないものは削除する
そもそも、要らなくなった機能やクラスは勇気を持って消す
いざとなったらGitの履歴から戻せる
積極的に Deprecated でマーキングする
Deprecated の理由、どうすれば削除しきれるか、代替手段を書く
/**
* @Deprecated スペルミスしているので削除予定
* 代わりにsetGroup()を使うこと
* キャッシュのデシリアライズ時の互換の為に残っている
* キャッシュ内容が新しいモデルに置き換われば削除可能
*/
public setGrop(String group) { 〜〜 }
13
コメントをつけるための習慣
実装の最初にこれから作ることを日本語で書く
● コントローラメソッドやビジネスロジックの主なメソッドには丁寧に
● 作業のTODOを洗い出すような感覚
コミット前にセルフレビュー
● (次ページで)
14
コミット前にセルフレビュー
実装中は試行錯誤になるので丁寧にコメントをつけていられない
commit・pushの時にセルフレビューして清書する
修正内容のタイトルをつけるイメージでコミットコメントを書く
● デバッグコードが残っていないか
○ デバッグコードが視認しやすいようなマーカをつけると便利
○ 決まったキーワードを書く/ 必ずインデントを無視して行頭から書く
● 作りかけで忘れていることがないか
○ 後からやろうとするところにTODOを書いておく(エラー処理とか)
○ テストを作り忘れていないか
● 書き方(悩んで頑張ったところ)が理解できるようになっているか
15
コメントをつける問題点
コメントがメンテナンスされず、実装から乖離する
コメントだらけで実装が読みづらくなる
● コメント不要な読みやすい実装を目指す
● ソースへのコメントではなく、gitのコミットコメントで補足する
○ git-blameなどで実装時の背景を掘り起こすときに参考になる
● メソッド名がわかりにくい
○ 英語のボキャブラリが必要では?
● テストコードで重要な仕様・機能の使い方例を明示する
● コメントが多くなってしまう理由を掘り下げる
○ 全体的な文書で包括的に説明が必要では?
16
まとめ
以下のことは分からなくなりがち
● 色々な理由
○ 機能、メソッド、条件などの仕様・意図
○ 定石を外す特殊な処理の理由
○ Deprecatedの理由
○ 依存モジュールの導入理由
● 依存・影響の範囲
○ 処理の前提
○ 暗黙で働く機能
○ 設定ファイルの効果
○ 連携する外部システム
対処
● 適宜コメントを残す
● 実装で意味を表現する
● 要らないものは消す
17
We are hiring!!
エムスリーでは、共に医療 × テクノロジーの
未来を切り拓いてくれる仲間を募集中です!
https://m3.recruitment.jp/engineer/
18
付録: コメントをつける場所 追加分
19
悩んだこと・暫定で残したこと
悩んだこと、最適解が他にありそうでも思いつかなかった場合に、どこまで考えて、どこ
でつまづいたかを残す
通常と違う奇妙に見えるコードには、そうしなければいけなくなった理由を書く
// FIXME 保存時にDBのトリガーで値が変更されうるので
// 変更分を反映するためsave後に再取得が必要
// frameworkのafterリスナで綺麗にできそうだが、
// 既存のUserLogig#saveAllと噛み合わなかった
userLogic.save(user);
user = userLogic.findById(user.getId());
20
SQLの条件判定はコメントを添える
SQLは定数やメソッドなどで意味づけできない
nullやコード値(1,2とか)の意味を説明した方がいい
また、一度に複数の仕様の条件を書きがちなので全体でコメントをするより、
意味の塊ごとにコメントした方が読み解きやすい
select u.* from user u join group g on u.group_id = g.id
where
-- 1度はログイン済みなVIPユーザ
u.first_logined_at is not null
and u.status = 'VIP'
-- '新規作成'扱い(10日以内)のグループ所属
and g.created_at >= now() - 10
21
前提条件・事後条件を明確にする
コメントを書いたり、メソッド内で前提条件のチェックをする処理を記述することで前提を
明示する
それらをラップしたメソッドを用意して間違った使い方できないようにする
● 前提条件
○ あるメソッドを呼び出した後じゃないと使えないメソッド
○ 特定のデータの状態でなければ使えないメソッド
○ 引数のリストが決まったソート順序であること
● 事後条件
○ 後続の処理を想定したリストのソート順序
22
コメントが要らないコーディング 追加分
処理の塊がわかるようにするコードの書き方をした方がいい
構文で意味の区切りを表現できる場合もある
1つの条件で明確な2択をする場合はelseをつかう
if (text.startsWith("Hello")) {
return text;
} else {
return "Hello" + text;
}
if (text.startsWith("Hello")) {
return text;
}
// Helloがないので追記する
return "Hello " + text;
23

Weitere ähnliche Inhalte

Ähnlich wie 2018.11.22 レガシー化しても困らないための コーディング

日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナー
日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナー日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナー
日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナーHiroshi Senga
 
クラウド運用3足の草鞋151102
クラウド運用3足の草鞋151102クラウド運用3足の草鞋151102
クラウド運用3足の草鞋151102Keiichi Hashimoto
 
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccampハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccampMasahiro NAKAYAMA
 
スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522
スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522
スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522株式会社スカイアーチネットワークス
 
Azure(クラウド)を使った堅牢なシステムを考える
Azure(クラウド)を使った堅牢なシステムを考えるAzure(クラウド)を使った堅牢なシステムを考える
Azure(クラウド)を使った堅牢なシステムを考えるTsubasa Yoshino
 
Machine Learning Bootstrap
Machine Learning BootstrapMachine Learning Bootstrap
Machine Learning BootstrapTakahiro Kubo
 
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介Recruit Technologies
 
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜Unity Technologies Japan K.K.
 
Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022
Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022
Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022mokudai masayuki
 
【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdf
【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdf【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdf
【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdfTakeshiFukae
 
a-blog cms が与える体験
a-blog cms が与える体験a-blog cms が与える体験
a-blog cms が与える体験Kasumi Morita
 
SSH応用編_20231129.pdf
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdficebreaker4
 
ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順
ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順
ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順Yoshitaka Seo
 
ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606
ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606
ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606NTTCom CHEO
 
マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介Shinji Tanimoto
 
数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方Yuta Okoshi
 
さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)
さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)
さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)法林浩之
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)uchan_nos
 
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptxチームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptxRakuten Commerce Tech (Rakuten Group, Inc.)
 

Ähnlich wie 2018.11.22 レガシー化しても困らないための コーディング (20)

日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナー
日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナー日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナー
日経コンピュータ主催:さわってわかる機械学習 Azure Machine Learning 実践セミナー
 
クラウド運用3足の草鞋151102
クラウド運用3足の草鞋151102クラウド運用3足の草鞋151102
クラウド運用3足の草鞋151102
 
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccampハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
ハッカソンについて(分散アーキテクチャ時代におけるWebシステムの開発と運用) #seccamp
 
スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522
スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522
スカイアーチセミナー:[スカイアーチNTTCom共催セミナー]事例で学ぶ賢いクラウド活用法 ~コンテンツ配信編~(事例セッション):150522
 
Azure(クラウド)を使った堅牢なシステムを考える
Azure(クラウド)を使った堅牢なシステムを考えるAzure(クラウド)を使った堅牢なシステムを考える
Azure(クラウド)を使った堅牢なシステムを考える
 
「オープンソースソフトウェア活用事例の最前線」で豊橋・浜松で講演
「オープンソースソフトウェア活用事例の最前線」で豊橋・浜松で講演「オープンソースソフトウェア活用事例の最前線」で豊橋・浜松で講演
「オープンソースソフトウェア活用事例の最前線」で豊橋・浜松で講演
 
Machine Learning Bootstrap
Machine Learning BootstrapMachine Learning Bootstrap
Machine Learning Bootstrap
 
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
リクルートのビッグデータ活用基盤とビッグデータ活用のためのメタデータ管理Webのご紹介
 
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
【Unity道場スペシャル 2017京都】〜ブラウザアプリ・ネイティブアプリの複数プラットフォームのゲーム開発の現場〜
 
Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022
Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022
Microsoft 365 グループ 生まれた経緯とそのコントロール MICROSOFT 365 VIRTUAL MARATHON 2022
 
【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdf
【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdf【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdf
【AI:ML#16】Amazon Lexを用いたチャットボットの構築.pdf
 
a-blog cms が与える体験
a-blog cms が与える体験a-blog cms が与える体験
a-blog cms が与える体験
 
SSH応用編_20231129.pdf
SSH応用編_20231129.pdfSSH応用編_20231129.pdf
SSH応用編_20231129.pdf
 
ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順
ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順
ML Studio / CNTK ハンズオン資料の紹介と開発環境の構築手順
 
ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606
ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606
ソーシャルCRMプラットフォームを活用した情報交換コミュニティ「みんなのドットコムマスター広場」のオープンについて - プレゼンテーション 20110606
 
マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介マルチテナントに対応したシラサギグループウェアのご紹介
マルチテナントに対応したシラサギグループウェアのご紹介
 
数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方数クリックで瞬時に切り替えられる メンテナンスページの作り方
数クリックで瞬時に切り替えられる メンテナンスページの作り方
 
さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)
さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)
さくらのクラウドのスタートアップスクリプトにbaserCMSが追加されたので、使ってみよう(長い)
 
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
業務時間で書いたパッチは誰のもの?OSS活動にまつわる罠 (builderscon tokyo 2018)
 
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptxチームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
チームトポロジーから学び、 データプラットフォーム組織を考え直した話.pptx
 

Kürzlich hochgeladen

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...Toru Tamaki
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Gamesatsushi061452
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。iPride Co., Ltd.
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Hiroshi Tomioka
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video UnderstandingToru Tamaki
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイスCRI Japan, Inc.
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsWSO2
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルCRI Japan, Inc.
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptxsn679259
 

Kürzlich hochgeladen (11)

Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 

2018.11.22 レガシー化しても困らないための コーディング