SlideShare une entreprise Scribd logo
1  sur  31
コードレビューを通じて行われる
コーディングスタイル修正の分析
上田 裕己1,伊原 彰紀2,石尾 隆1 ,松本 健一1
1奈良先端科学技術大学院大学
2和歌山大学
第25回 ソフトウェア工学の基礎ワークショップ FOSE2018
発表のあらまし
• 背景:コードレビュープロセスとスタイル修正
• 分析: レビューでのスタイル修正の調査
RQ1: 変更の分布・内容
RQ2: ツールによる修正効率
• 自動修正に向けた修正事例の収集
2
背景:
コードレビューのプロセス
開発者 レビューア
3
投稿 プロジェクト
- i=key
+ i=dic[“key”]
パッチ
背景:
コードレビューのプロセス
開発者 レビューア
4
投稿 プロジェクト
もう少しよくなりそう
です
検証・修正提案
- i=key
+ i=dic[“key”]
パッチ
背景:
コードレビューのプロセス
開発者 レビューア
5
投稿 プロジェクト
OK!
適用
- i=key
+ i=dic[“key”]
検証・修正提案
- i=key
+ i=dic.get(“key”)
パッチ パッチ
問題: レビューア 一人あたりが
週に6時間を消費する
開発者 レビューア
6
投稿 プロジェクト
適用
- i=key
+ i=dic[“key”]
検証・修正提案
- i=key
+ i=dic.get(“key”)
レビューア一人あたりが週に6時間を消費する
パッチ パッチ
検証・修正提案
検証・修正提案
最終目標:コスト削減のため
レビュー投稿前に修正
7
開発者 レビューア投稿 修正修正ツール
- i=key
+ i=dic[“key”]
- i=key
+ i=dic.get(“key”)
動作に影響しない(スタイル等)修正が
コードレビューで重要
Microsoftが従業員873人にコードレビューの目的をイン
タビュー, レビューコメントから分析[1]
8
[1] Alberto Bacchelli and Christian Bird. Expectations, outcomes, and challenges
of modern code review. In Proc. ICSE’13, pp. 712–721
発表内容:
自動スタイル修正に向けて
9
スタイル修正の
内容理解
スタイル修正事例
の収集
自動スタイル修正
RQ1, 2
最終目標
追加分析
分析アプローチ:
レビューを通した修正内容の理解
開発者 レビューア
10
投稿 プロジェクト
適用
検証・修正提案
- i=key
+ i=dic[“key”]
- i=key
+ i=dic.get(“key”)
RQ1:スタイルの問題はどの程度検出されるか?
RQ2:静的解析ツールを用いることでスタイルの
問題をコードレビュー投稿前に検出可能か?
分析対象:
レビューを通したパッチ修正差分
開発者 レビューア
11
投稿 プロジェクト
適用
検証・修正提案
投稿直後と適用時
のパッチペア差分
- i=key
+ i=dic[“key”]
- i=key
+ i=dic.get(“key”)
- i=dic[“key”]
+ i=dic.get(“key”)
スタイル変更分類手法
パッチペア(変更内容)の差分から
変更チャンクを分類
12
- if i␣==␣0:
+ if i==0:
break
- elif i == 1:
- continue
+ elif j == 1:
+ return
- if i␣==␣0:
+ if i==0:
- elif i == 1:
- continue
+ elif j == 1:
+ return
パッチペアの差分
1チャンク
1チャンク
スタイル変更分類手法
13
スタイル変更?
Yes
No
Yes
No
- if i␣==␣0:
+ if i==0:
break
- elif i == 1:
- continue
+ elif j == 1:
+ return
- if i␣==␣0:
+ if i==0:
- elif i == 1:
- continue
+ elif j == 1:
+ return
パッチペアの差分
1チャンク
1チャンク
パッチペア(変更内容)の差分から
変更チャンクを分類
対象データセット
14
プロジェクト OpenStack
開発言語 Python3
期間 2011-2013
# パッチ数 173,749 件
# 対象パッチ数 382 件
# 対象チャンク数 981 件
静的解析ツール Pylint
RQ1: スタイルの問題はどの程度検出
されるか?
15
変更チャンク981件
機能に影響のある修正
52.0% (510件)
スタイル修正
48.0% (471件)
RQ1: スタイルの問題はどの程度検出
されるか?
16
変更チャンク981件
機能に影響のある修正
52.0% (510件)
スタイル修正
48.0% (471件)
コードの改善が重要という
開発者の感覚は正しかった
RQ1: スタイルの問題はどの程度検出
されるか?
17
文
字
列
の
修
正
動作に影響しない
インデント
(タブ)
164件
空
白
削
除
変更チャンク981件
その他
241件
機能に影響のある修正
52.0% (510件)
スタイル修正
48.0% (471件)
使
用
変
数
変
更
RQ1: スタイルの問題はどの程度検出
されるか?
18
機能に影響のある修正
52.0% (510件)
スタイル修正
48.0% (471件)
変更チャンク981件
約半数がスタイル修正
一部は現状の自動修正が困難
文
字
列
の
修
正
動作に影響しない
インデント
(タブ)
164件
空
白
削
除
その他
241件
使
用
変
数
変
更
分析アプローチ:
スタイル修正の内容を調査
19
修正 981件
スタイル修正 471件
• RQ1:スタイルの問題はどの程度検出されるか?
約半数がスタイル修正(一部は自動修正が困難)
分析アプローチ:
スタイル修正の内容を調査
20
スタイル修正 471件
検出可能な
スタイル修正
???件
• RQ1:スタイルの問題はどの程度検出されるか?
• RQ2:静的解析ツールを用いることでスタイルの問題
をコードレビュー投稿前に検出可能か?
スタイル修正の現状:
ツールによって一部自動検出可能
21
FOO=0
print(“var = ” + FOO)
foo␣=␣0
print(“var =”, foo)
自動検出可能な例:
• 命名規則違反
• 空白の過不足
• 文字列のフォーマット
Pythonではpylint, pep8などが既存のルール違反を検出
スタイル修正の現状:
開発者の経験が必要な修正が存在
22
- i=dic[“key”] + i=dic.get(“key”)
修正目的:存在しない辞書アクセスに対して
エラーではなくNoneを返す
- assertEqual(x,None)
修正目的:可読性の向上とカスタムクラスへの対応
+ assertIsNone(x)
分析アプローチ:
スタイル修正の内容を調査
23
• RQ1:スタイルの問題はどの程度検出されるか?
• RQ2:静的解析ツールを用いることでスタイルの問題
をコードレビュー投稿前に検出可能か?
修正 981件
スタイル修正 471件
検出可能な
スタイル修正
132件
分析アプローチ:
スタイル修正の内容を調査
24
• RQ1:スタイルの問題はどの程度検出されるか?
• RQ2:静的解析ツールを用いることでスタイルの問題
をコードレビュー投稿前に検出可能か?
修正 981件
スタイル修正 471件
検出可能な
スタイル修正
132件
開発者にツール利用を促すことで
13%は検証コストを削減できる
頻繁に出現した
検出可能なスタイル修正
25
Missing-docstring (コメントがないクラス,関数)
Invalid-name(命名規則違反)
Bad-continuation(読みにくいインデント)
- FOO = 0
- smallCase = 1
+ foo = 0
+ small_case = 1
- if foo > 0 and
- foo < 1:
+ if foo > 0 and
+ ␣␣␣␣foo < 1:
追加分析: 自動化,学習のための
スタイル修正事例収集
26
スタイル修正の
内容理解
スタイル修正事例
の収集
自動スタイル修正
RQ1, 2
最終目標
追加分析
編集距離を利用した
スタイル修正事例の収集
• 仮定:編集距離が短いものはスタイル修正
27
編集距離が1以下の修正のうち89%は
スタイル修正
編集距離=1 編集距離=2
-
if␣(i␣==␣0){
+
{
- if (i == 0){
+ if (j == 0){
- if (i == 0){
+ if (j == 1){
編集距離=0 (空白,改行のみ)
変更トークンごとの編集距離
28
print(“String”) if (i == 0){
文字列リテラル
識別子
数字リテラル
記号
編集距離=1 編集距離=2
if (i == 0){ if (i == 0){
-
if␣(i␣==␣0){
+
␣␣if(i==0)n
{
- if (i == 0){
+ if (j == 0){
- if (i == 0){
+ if (j == 1){
変更トークン
編集距離
編集距離=0 (空白,改行のみ)
スタイル修正の収集精度
29
編集距離が3以下の変更を
スタイル修正として収集可能
精度 0.89
再現率 0.62
F値 0.73
• 文字列リテラルの変更
• 編集距離 ≦ 1
精度 0.47
再現率 0.28
F値 0.35
精度 0.71
再現率 0.75
F値 0.73
• 編集距離 ≦ 3
スタイル修正を活用した今後の展望
• スタイル修正の修正パターンの検出
30
- self.assertEquals(x, y)
+ self.assertEqual(x, y)
• 自動スタイル修正
開発者 レビューア投稿 修正修正ツール
例:Pythonのバージョン更新による仕様変化
まとめ
31

Contenu connexe

Similaire à コードレビューを通じて行われるコーディングスタイル修正の分析

【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~
【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~
【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~Developers Summit
 
20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料Kenichiro Nakajima
 
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOKKotaro Ogino
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 Hironori Washizaki
 
Devlove2012 どうしたら良いシステムが作れるのか
Devlove2012 どうしたら良いシステムが作れるのかDevlove2012 どうしたら良いシステムが作れるのか
Devlove2012 どうしたら良いシステムが作れるのかYusuke Suzuki
 
2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価
2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価
2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価n-yuki
 
SQuBOKガイドV2で測る日本のソフトウェア品質技術力
SQuBOKガイドV2で測る日本のソフトウェア品質技術力SQuBOKガイドV2で測る日本のソフトウェア品質技術力
SQuBOKガイドV2で測る日本のソフトウェア品質技術力Keizo Tatsumi
 
Project Management Plan Sample Creative Content Lab Tokyo
Project Management Plan Sample Creative Content Lab TokyoProject Management Plan Sample Creative Content Lab Tokyo
Project Management Plan Sample Creative Content Lab TokyoCreativeContentLabTo
 
メトリクスによるソフトウェア品質評価・改善および製品品質実態
メトリクスによるソフトウェア品質評価・改善および製品品質実態メトリクスによるソフトウェア品質評価・改善および製品品質実態
メトリクスによるソフトウェア品質評価・改善および製品品質実態Hironori Washizaki
 
Samurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターン
Samurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターンSamurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターン
Samurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターンHironori Washizaki
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後Shingo Sasaki
 
20210907 Qlik Tech Talk Snowflake with Qlik Best Practices
20210907 Qlik Tech Talk Snowflake with Qlik Best Practices20210907 Qlik Tech Talk Snowflake with Qlik Best Practices
20210907 Qlik Tech Talk Snowflake with Qlik Best PracticesQlikPresalesJapan
 
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)Keizo Tatsumi
 
Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技Toshiyuki Kawanishi
 
DevOps時代の開発環境と現場体験 [#cmdevio2015]
DevOps時代の開発環境と現場体験 [#cmdevio2015]DevOps時代の開発環境と現場体験 [#cmdevio2015]
DevOps時代の開発環境と現場体験 [#cmdevio2015]智治 長沢
 
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)Keizo Tatsumi
 
アジャイルソフトウェア開発における テスティングの課題およびその解決アプローチ
アジャイルソフトウェア開発におけるテスティングの課題およびその解決アプローチアジャイルソフトウェア開発におけるテスティングの課題およびその解決アプローチ
アジャイルソフトウェア開発における テスティングの課題およびその解決アプローチTetsuya Kouno
 
クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割Yusuke Oi
 
ソフトウェア工学2023 02 上流工程
ソフトウェア工学2023 02 上流工程ソフトウェア工学2023 02 上流工程
ソフトウェア工学2023 02 上流工程Toru Tamaki
 
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオンテスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオンyuichi_kuwahara
 

Similaire à コードレビューを通じて行われるコーディングスタイル修正の分析 (20)

【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~
【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~
【18-B-4】ソースコード品質、大丈夫ですか? ~静的検証のススメ~
 
20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料20110909 品質シンポジウム2011発表資料
20110909 品質シンポジウム2011発表資料
 
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
【SQiP 2014】継続的システムテストについての理解を深めるための 開発とバグのメトリクスの分析 #SQiP #SQuBOK
 
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質 SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
SWEBOKにみるソフトウェアエンジニアリングの全体、および、 つながる時代のソフトウェアモデリング&品質
 
Devlove2012 どうしたら良いシステムが作れるのか
Devlove2012 どうしたら良いシステムが作れるのかDevlove2012 どうしたら良いシステムが作れるのか
Devlove2012 どうしたら良いシステムが作れるのか
 
2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価
2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価
2010 電子情報通信学会論文誌-要求変更によるソースコードへのインパクトを分析するシステムの開発と評価
 
SQuBOKガイドV2で測る日本のソフトウェア品質技術力
SQuBOKガイドV2で測る日本のソフトウェア品質技術力SQuBOKガイドV2で測る日本のソフトウェア品質技術力
SQuBOKガイドV2で測る日本のソフトウェア品質技術力
 
Project Management Plan Sample Creative Content Lab Tokyo
Project Management Plan Sample Creative Content Lab TokyoProject Management Plan Sample Creative Content Lab Tokyo
Project Management Plan Sample Creative Content Lab Tokyo
 
メトリクスによるソフトウェア品質評価・改善および製品品質実態
メトリクスによるソフトウェア品質評価・改善および製品品質実態メトリクスによるソフトウェア品質評価・改善および製品品質実態
メトリクスによるソフトウェア品質評価・改善および製品品質実態
 
Samurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターン
Samurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターンSamurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターン
Samurai CodingなどにみるゲームAIプログラミングコンテストのための原則とパターン
 
6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後6万行の TypeScript 移行とその後
6万行の TypeScript 移行とその後
 
20210907 Qlik Tech Talk Snowflake with Qlik Best Practices
20210907 Qlik Tech Talk Snowflake with Qlik Best Practices20210907 Qlik Tech Talk Snowflake with Qlik Best Practices
20210907 Qlik Tech Talk Snowflake with Qlik Best Practices
 
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
 
Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技Shibya.trac #2: TracとTestLinkの合わせ技
Shibya.trac #2: TracとTestLinkの合わせ技
 
DevOps時代の開発環境と現場体験 [#cmdevio2015]
DevOps時代の開発環境と現場体験 [#cmdevio2015]DevOps時代の開発環境と現場体験 [#cmdevio2015]
DevOps時代の開発環境と現場体験 [#cmdevio2015]
 
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
世界に目を向けよう - ASTER国際連携活動事例(JaSST'15 tokyo)
 
アジャイルソフトウェア開発における テスティングの課題およびその解決アプローチ
アジャイルソフトウェア開発におけるテスティングの課題およびその解決アプローチアジャイルソフトウェア開発におけるテスティングの課題およびその解決アプローチ
アジャイルソフトウェア開発における テスティングの課題およびその解決アプローチ
 
クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割クラウド時代にこそ求められるIt部門の役割
クラウド時代にこそ求められるIt部門の役割
 
ソフトウェア工学2023 02 上流工程
ソフトウェア工学2023 02 上流工程ソフトウェア工学2023 02 上流工程
ソフトウェア工学2023 02 上流工程
 
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオンテスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
 

Plus de 奈良先端大 情報科学研究科

マイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろうマイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろう奈良先端大 情報科学研究科
 
20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析
20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析
20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析奈良先端大 情報科学研究科
 
11.実装の脆弱性を利用して強力な暗号を解読してみよう!
11.実装の脆弱性を利用して強力な暗号を解読してみよう!11.実装の脆弱性を利用して強力な暗号を解読してみよう!
11.実装の脆弱性を利用して強力な暗号を解読してみよう!奈良先端大 情報科学研究科
 
16. マイコンと機械学習を使って行動認識システムを作ろう
16. マイコンと機械学習を使って行動認識システムを作ろう16. マイコンと機械学習を使って行動認識システムを作ろう
16. マイコンと機械学習を使って行動認識システムを作ろう奈良先端大 情報科学研究科
 
14. ビデオシースルーHMDで視覚拡張の世界を体感しよう
14. ビデオシースルーHMDで視覚拡張の世界を体感しよう14. ビデオシースルーHMDで視覚拡張の世界を体感しよう
14. ビデオシースルーHMDで視覚拡張の世界を体感しよう奈良先端大 情報科学研究科
 
18. 計測に基づいた写実的なコンピュータグラフィクスの生成法
18. 計測に基づいた写実的なコンピュータグラフィクスの生成法18. 計測に基づいた写実的なコンピュータグラフィクスの生成法
18. 計測に基づいた写実的なコンピュータグラフィクスの生成法奈良先端大 情報科学研究科
 
21. 人の動作・行動センシングに基づく拡張現実感システムの開発
21. 人の動作・行動センシングに基づく拡張現実感システムの開発21. 人の動作・行動センシングに基づく拡張現実感システムの開発
21. 人の動作・行動センシングに基づく拡張現実感システムの開発奈良先端大 情報科学研究科
 
20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発
20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発
20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発奈良先端大 情報科学研究科
 
9. マイコンと機械学習を使って行動認識システムを作ろう
9. マイコンと機械学習を使って行動認識システムを作ろう9. マイコンと機械学習を使って行動認識システムを作ろう
9. マイコンと機械学習を使って行動認識システムを作ろう奈良先端大 情報科学研究科
 
14. モバイルエージェントによる並列分散学習システムの構築
14. モバイルエージェントによる並列分散学習システムの構築14. モバイルエージェントによる並列分散学習システムの構築
14. モバイルエージェントによる並列分散学習システムの構築奈良先端大 情報科学研究科
 

Plus de 奈良先端大 情報科学研究科 (20)

テレコミュニケーションを支援してみよう
テレコミュニケーションを支援してみようテレコミュニケーションを支援してみよう
テレコミュニケーションを支援してみよう
 
マイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろうマイコンと機械学習を使って行動認識システムを作ろう
マイコンと機械学習を使って行動認識システムを作ろう
 
5G時代を支えるNFVによるネットワーク最適設計
5G時代を支えるNFVによるネットワーク最適設計5G時代を支えるNFVによるネットワーク最適設計
5G時代を支えるNFVによるネットワーク最適設計
 
21.Raspberry Piを用いたIoTアプリの開発
21.Raspberry Piを用いたIoTアプリの開発21.Raspberry Piを用いたIoTアプリの開発
21.Raspberry Piを用いたIoTアプリの開発
 
20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析
20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析
20. 地理ビッグデータ利活用: リスク予測型自動避難誘導,地理的リスク分析
 
11.実装の脆弱性を利用して強力な暗号を解読してみよう!
11.実装の脆弱性を利用して強力な暗号を解読してみよう!11.実装の脆弱性を利用して強力な暗号を解読してみよう!
11.実装の脆弱性を利用して強力な暗号を解読してみよう!
 
8. ミニ・スーパコンピュータを自作しよう!
8. ミニ・スーパコンピュータを自作しよう!8. ミニ・スーパコンピュータを自作しよう!
8. ミニ・スーパコンピュータを自作しよう!
 
16. マイコンと機械学習を使って行動認識システムを作ろう
16. マイコンと機械学習を使って行動認識システムを作ろう16. マイコンと機械学習を使って行動認識システムを作ろう
16. マイコンと機械学習を使って行動認識システムを作ろう
 
15. テレイグジスタンスシステムを制作してみよう
15. テレイグジスタンスシステムを制作してみよう15. テレイグジスタンスシステムを制作してみよう
15. テレイグジスタンスシステムを制作してみよう
 
14. ビデオシースルーHMDで視覚拡張の世界を体感しよう
14. ビデオシースルーHMDで視覚拡張の世界を体感しよう14. ビデオシースルーHMDで視覚拡張の世界を体感しよう
14. ビデオシースルーHMDで視覚拡張の世界を体感しよう
 
19. 生物に学ぶ人工知能とロボット制御
19. 生物に学ぶ人工知能とロボット制御19. 生物に学ぶ人工知能とロボット制御
19. 生物に学ぶ人工知能とロボット制御
 
13. SDRで学ぶ無線通信
13. SDRで学ぶ無線通信13. SDRで学ぶ無線通信
13. SDRで学ぶ無線通信
 
18. 計測に基づいた写実的なコンピュータグラフィクスの生成法
18. 計測に基づいた写実的なコンピュータグラフィクスの生成法18. 計測に基づいた写実的なコンピュータグラフィクスの生成法
18. 計測に基づいた写実的なコンピュータグラフィクスの生成法
 
21. 人の動作・行動センシングに基づく拡張現実感システムの開発
21. 人の動作・行動センシングに基づく拡張現実感システムの開発21. 人の動作・行動センシングに基づく拡張現実感システムの開発
21. 人の動作・行動センシングに基づく拡張現実感システムの開発
 
20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発
20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発
20. 友好的関係を構築する人と対話ロボットのコミュニケーション技術開発
 
9. マイコンと機械学習を使って行動認識システムを作ろう
9. マイコンと機械学習を使って行動認識システムを作ろう9. マイコンと機械学習を使って行動認識システムを作ろう
9. マイコンと機械学習を使って行動認識システムを作ろう
 
6. 生物に学ぶ人工知能とロボット制御
6. 生物に学ぶ人工知能とロボット制御6. 生物に学ぶ人工知能とロボット制御
6. 生物に学ぶ人工知能とロボット制御
 
14. モバイルエージェントによる並列分散学習システムの構築
14. モバイルエージェントによる並列分散学習システムの構築14. モバイルエージェントによる並列分散学習システムの構築
14. モバイルエージェントによる並列分散学習システムの構築
 
17. 100台の小型ロボットを協調させよう
17. 100台の小型ロボットを協調させよう17. 100台の小型ロボットを協調させよう
17. 100台の小型ロボットを協調させよう
 
5. ミニ・スーパコンピュータを自作しよう!
5. ミニ・スーパコンピュータを自作しよう!5. ミニ・スーパコンピュータを自作しよう!
5. ミニ・スーパコンピュータを自作しよう!
 

コードレビューを通じて行われるコーディングスタイル修正の分析