SlideShare a Scribd company logo
1 of 31
Download to read offline
20190610 kansai.ts #1
s2terminal / suzuki.sh
Twitter@suzukiterminal
GitHub@s2terminal
Qiita@suzuki_sh
Cognitive Complexity で
コードの複雑さを定量的に計測しよう
Self Introduction
$ man s2terminal
NAME: s2terminal or suzuki.sh
JOB: Web Application Engineer
REGION: Nagoya (5 years), Osaka (2 years)
SKILL: PHP, Ruby, Azure, AWS, and TypeScript
LOVE: Etrian Odyssey, Ninja Slayer,
Puella Magi Madoka Magica (Miki Sayaka),
THE IDOLM@STER SHINY COLORS (Kuwayama Chiyuki)
を 使ってみた
Code Climate とは?
• GitHub リポジトリと連携することで、
品質(Quality)や生産性(Velocity)を測定できるサービス
• OSSなら、Quality機能は無料で利用可能
• JavaScriptはもちろんTypeScriptにも標準対応
使ってみた結果
https://codeclimate.com/github/s2terminal/i-read-u/issues
拙作のOSS「I Read U」
TypeScript 製 CLIツール
$ npm install --global i-read-u
詳しくは:
https://s2terminal.github.io/i-read-u/
使ってみた結果
“toCommandSections() メソッドが
29行もあるから、25行以下にしろよ”
“1時間あれば直せるだろ”
わかる
お前誰?
使ってみた結果
“read()メソッドのCognitive Complexityが
8あるから、5以下にしろよ”
“45分あれば直せるだろ”
わからない
お前誰?
Cognitive Complexity とは ?
Photo by Shahadat Shemul on Unsplash
Cognitive Complexity is 何?
Cognitive Complexity
(コグニティブ・コンプレクシティー)
訳してみれば「認知的 複雑度」
コードの複雑さを測る指標のひとつ
2016年 SonarSource社が提唱
「Cyclomatic Complexity」と「Cognitive Complexity」
似たものに
Cyclomatic Complexity(循環的複雑度) がある
• 線形的に独立した経路の数
• 分岐網羅に必要なテストケースの数
約40年前に考案された Cyclomatic Complexity の
問題点を解決するための指標として、
あらたに Cognitive Complexity が考え出された、とのこと
Cyclomatic Complexity Cognitive Complexity
サイクロマティック
コンプレクシティー
コグニティブ
コンプレクシティー
循環的 複雑度 認知的 複雑度
1976 年 Thomas McCabe氏が考案 2016 年 SonarSource社が考案
機械的なテストの難しさを測る 人間にとっての理解の難しさを測る
どちらのコードが ”複雑” だと思いますか?
4 Cyclomatic Complexity 4
1 Cognitive Complexity 7
「Cyclomatic Complexity」と「Cognitive Complexity」
• Cyclomatic Complexity は、単純な switch 文で「4」
• switch 文の分岐網羅のためにテストケースが 4 必要になるため
• テストケースが増えるので複雑である、という考え方
• Cognitive Complexity は、単純な switch 文では「1」
• switch 文がひとつなので、+1
• 人間が読むには複雑ではない、という考え方
Cognitive Complexity を使うことで、ソースコードの
人間にとっての理解しやすさを定量的に計測できる
Cognitive Complexity の 具体例
Photo by Immo Wegmann on Unsplash
Code is considered more
complex for each "break in the
linear flow of the code“
「コードの線形的な流れを乱す」とき、より複雑とみなす
線形的な流れを乱すとき、複雑とみなす
Cognitive Complexity: 0
Cognitive Complexity: 1
Cognitive Complexity: 1
線形的な流れを乱すとき、複雑とみなす
+1
+1
+1
+1
Cognitive Complexity: 2
Cognitive Complexity: 2
Code is considered more
complex when "flow breaking
structures are nested"
「線形的な流れを乱すコードが、ネストされている」ようなときは
一層複雑であるとみなす
流れを乱すネストが深いほど、複雑とみなす
+1
+2 ( if 1 + nest 1 )
Cognitive Complexity: 3
流れを乱すネストが深いほど、複雑とみなす
+1
+2 ( if 1 + nest 1 )
+3 ( if 1 + nest 2 )
Cognitive Complexity: 6
Code is not considered more
complex when it uses shorthand
that the language provides for
collapsing multiple statements into
one
言語仕様によって提供されているショートハンドで
複数の式をひとつにまとめたようなときは、複雑であるとはみなされない
ショートハンドが使われていれば、複雑とみなさない
Cognitive Complexity: 2 Cognitive Complexity: 1
冒頭の指摘の実例 (Cognitive Complexity 8)
+1
+2 ( if 1 + nest 1)
+1
+1
+3 ( if 1 + nest 2 )
Cognitive Complexity の 使い方
Photo by: https://pixabay.com/images/id-1463929/
Cognitive Complexity を測るには?
• Code Climate を使うことで、Cognitive Complexity など
さまざまな指標を測定できる
• OSSなら、Quality機能は無料で利用可能
Cognitive Complexity の計測を手軽に試せる環境を作った
https://github.com/s2terminal/cognitive-complexity-example
git clone して、index.ts 等を適当に編集したのち
docker-compose run --rm analyze コマンドを打つと
Cognitive Complexity を算出してくれる
(※Windows非対応)
やっていることは、CodeClimate CLI 版の Docker イメージ持ってきて
Cognitive Complexity だけ 許容値-1(ゼロ以上でアラート)で動かしているだけ。
まとめ
• Cognitive Complexity の低い、読みやすいコードを書こう
• 分岐を減らす
• ネストを減らす
• ショートハンドを使う
• Code Climate で Cognitive Complexity を測定できる
• OSSなら無料
• TypeScript にも標準対応
• CLI版もあり、Dockerで動作する
おまけ: NGな使い方
• 「お前のコード Cognitive Complexity 高すぎない?」と
新人にコードレビューしてはいけません
• 新人が死にます
• 「俺なら45分で直せる」と
新人にコードレビューしてはいけません
• 新人が死にます
参考
• Cognitive Complexity - Code Climate
• https://docs.codeclimate.com/docs/cognitive-complexity
• COGNITIVE COMPLEXITY - A new way of measuring understandability - G. Ann Campbell
• https://www.sonarsource.com/docs/CognitiveComplexity.pdf
• Cognitive Complexity で、コードの読みやすさを定量的に計測しよう
• https://qiita.com/suzuki_sh/items/824c36b8d53dd2f1efcb
• 新人プログラマをレビューで殺さない方法
• https://qiita.com/hiraike32/items/32840b11536fa1b78621
• Code Climate
• https://codeclimate.com/
• 画像の出典
• https://unsplash.com/photos/qnrJoo2_4EQ
• https://unsplash.com/photos/O2MdroNurVw
• https://pixabay.com/photos/pasta-spaghetti-food-italian-1463929/#content
Thank you!
follow me https://twitter.com/suzukiterminal

More Related Content

What's hot

BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドAkihiro Suda
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話Kumazaki Hiroki
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugItsuki Kuroda
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021Hiroshi Tokumaru
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)NTT DATA Technology & Innovation
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪Takuto Wada
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているKoichi Tanaka
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介AdvancedTechNight
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean ArchitectureAtsushi Nakamura
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなKentaro Matsui
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことgree_tech
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜Yoshiki Nakagawa
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことAmazon Web Services Japan
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 

What's hot (20)

BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルドBuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
フロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjugフロー効率性とリソース効率性について #xpjug
フロー効率性とリソース効率性について #xpjug
 
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
 
SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021SPAセキュリティ入門~PHP Conference Japan 2021
SPAセキュリティ入門~PHP Conference Japan 2021
 
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
kubernetes初心者がKnative Lambda Runtime触ってみた(Kubernetes Novice Tokyo #13 発表資料)
 
TLS, HTTP/2演習
TLS, HTTP/2演習TLS, HTTP/2演習
TLS, HTTP/2演習
 
目grep入門 +解説
目grep入門 +解説目grep入門 +解説
目grep入門 +解説
 
例外設計における大罪
例外設計における大罪例外設計における大罪
例外設計における大罪
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介単なるキャッシュじゃないよ!?infinispanの紹介
単なるキャッシュじゃないよ!?infinispanの紹介
 
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
 
テスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるなテスト文字列に「うんこ」と入れるな
テスト文字列に「うんこ」と入れるな
 
PHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったことPHPからgoへの移行で分かったこと
PHPからgoへの移行で分かったこと
 
マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜マルチテナントのアプリケーション実装〜実践編〜
マルチテナントのアプリケーション実装〜実践編〜
 
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのことマルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 

Similar to Cognitive Complexity でコードの複雑さを定量的に計測しよう

Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Samir Hammoudi
 
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話You&I
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShiftEtsuji Nakai
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouchYohei Sasaki
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjugYuji Kubota
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in TokyoKyosuke Inoue
 
20130719 CDP Night LightningTalk "Internal Port Concentrator"
20130719 CDP Night LightningTalk "Internal Port Concentrator"20130719 CDP Night LightningTalk "Internal Port Concentrator"
20130719 CDP Night LightningTalk "Internal Port Concentrator"Kazuki Ueki
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法Kenshi Muto
 
数式 → コード,文書:OpenGL計算ライブラリ実装の経験から
数式 → コード,文書:OpenGL計算ライブラリ実装の経験から数式 → コード,文書:OpenGL計算ライブラリ実装の経験から
数式 → コード,文書:OpenGL計算ライブラリ実装の経験からTokyo Tech (Tokyo Institute of Technology)
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマットAkihiro Suda
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoKyosuke Inoue
 
Azure Object Anchors Recap
Azure Object Anchors RecapAzure Object Anchors Recap
Azure Object Anchors RecapTakahiro Miyaura
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2Kuniaki Igarashi
 
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたLT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたShingo Inoue
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)NTT DATA Technology & Innovation
 
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告Kentaro NOMURA
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するYou&I
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupgree_tech
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' MeetupRyuichi Kubuki
 

Similar to Cognitive Complexity でコードの複雑さを定量的に計測しよう (20)

Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
Google Container Engine (GKE) & Kubernetes のアーキテクチャ解説
 
Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話Dockerで.NET Core 3.0 GUIアプリを動かす話
Dockerで.NET Core 3.0 GUIアプリを動かす話
 
試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift試して学べるクラウド技術! OpenShift
試して学べるクラウド技術! OpenShift
 
CouchDB JP & BigCouch
CouchDB JP & BigCouchCouchDB JP & BigCouch
CouchDB JP & BigCouch
 
Java 9 and Future #jjug
Java 9 and Future #jjugJava 9 and Future #jjug
Java 9 and Future #jjug
 
fluxflex meetup in Tokyo
fluxflex meetup in Tokyofluxflex meetup in Tokyo
fluxflex meetup in Tokyo
 
20130719 CDP Night LightningTalk "Internal Port Concentrator"
20130719 CDP Night LightningTalk "Internal Port Concentrator"20130719 CDP Night LightningTalk "Internal Port Concentrator"
20130719 CDP Night LightningTalk "Internal Port Concentrator"
 
Ingress on GKE/GCE
Ingress on GKE/GCEIngress on GKE/GCE
Ingress on GKE/GCE
 
とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法とある制作会社の目次索引作成技法
とある制作会社の目次索引作成技法
 
数式 → コード,文書:OpenGL計算ライブラリ実装の経験から
数式 → コード,文書:OpenGL計算ライブラリ実装の経験から数式 → コード,文書:OpenGL計算ライブラリ実装の経験から
数式 → コード,文書:OpenGL計算ライブラリ実装の経験から
 
高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット高速にコンテナを起動できるイメージフォーマット
高速にコンテナを起動できるイメージフォーマット
 
Fluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in TokyoFluxflex meetup 2011 in Tokyo
Fluxflex meetup 2011 in Tokyo
 
Azure Object Anchors Recap
Azure Object Anchors RecapAzure Object Anchors Recap
Azure Object Anchors Recap
 
RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2RubyKaigi Lightning Talks TwYM episode2
RubyKaigi Lightning Talks TwYM episode2
 
LT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきたLT#7 Hello coffeeしてきた
LT#7 Hello coffeeしてきた
 
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
pgvectorを使ってChatGPTとPostgreSQLを連携してみよう!(PostgreSQL Conference Japan 2023 発表資料)
 
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
 
C++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用するC++ REST SDKを使ってWebサービスを利用する
C++ REST SDKを使ってWebサービスを利用する
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 
ゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetupゲームアプリの数学@GREE GameDevelopers' Meetup
ゲームアプリの数学@GREE GameDevelopers' Meetup
 

More from Shuto Suzuki

段階的なシステムリプレースを実現するデータ同期技術
段階的なシステムリプレースを実現するデータ同期技術段階的なシステムリプレースを実現するデータ同期技術
段階的なシステムリプレースを実現するデータ同期技術Shuto Suzuki
 
TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発Shuto Suzuki
 
1年でモダンなフロントエンドに追いついた話 2019-08-22 Mix Leap Joint #26
1年でモダンなフロントエンドに追いついた話  2019-08-22 Mix Leap Joint #261年でモダンなフロントエンドに追いついた話  2019-08-22 Mix Leap Joint #26
1年でモダンなフロントエンドに追いついた話 2019-08-22 Mix Leap Joint #26Shuto Suzuki
 
20190706 BCU30 事業を変えるシステムリプレース
20190706 BCU30 事業を変えるシステムリプレース20190706 BCU30 事業を変えるシステムリプレース
20190706 BCU30 事業を変えるシステムリプレースShuto Suzuki
 
MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話
MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話
MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話Shuto Suzuki
 
Monaco Editor on Cloud
Monaco Editor on CloudMonaco Editor on Cloud
Monaco Editor on CloudShuto Suzuki
 
Microsoft Azureで 女子力を生成する
Microsoft Azureで 女子力を生成するMicrosoft Azureで 女子力を生成する
Microsoft Azureで 女子力を生成するShuto Suzuki
 

More from Shuto Suzuki (7)

段階的なシステムリプレースを実現するデータ同期技術
段階的なシステムリプレースを実現するデータ同期技術段階的なシステムリプレースを実現するデータ同期技術
段階的なシステムリプレースを実現するデータ同期技術
 
TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発TypeScriptでCLIアプリケーション開発
TypeScriptでCLIアプリケーション開発
 
1年でモダンなフロントエンドに追いついた話 2019-08-22 Mix Leap Joint #26
1年でモダンなフロントエンドに追いついた話  2019-08-22 Mix Leap Joint #261年でモダンなフロントエンドに追いついた話  2019-08-22 Mix Leap Joint #26
1年でモダンなフロントエンドに追いついた話 2019-08-22 Mix Leap Joint #26
 
20190706 BCU30 事業を変えるシステムリプレース
20190706 BCU30 事業を変えるシステムリプレース20190706 BCU30 事業を変えるシステムリプレース
20190706 BCU30 事業を変えるシステムリプレース
 
MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話
MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話
MySQLオンラインマイグレーションツールgh-ostで深夜メンテナンスを無くした話
 
Monaco Editor on Cloud
Monaco Editor on CloudMonaco Editor on Cloud
Monaco Editor on Cloud
 
Microsoft Azureで 女子力を生成する
Microsoft Azureで 女子力を生成するMicrosoft Azureで 女子力を生成する
Microsoft Azureで 女子力を生成する
 

Recently uploaded

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 

Recently uploaded (8)

【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 

Cognitive Complexity でコードの複雑さを定量的に計測しよう