SlideShare a Scribd company logo
1 of 33
Download to read offline
【連続講座】ソフトウェア設計原則
【SOLID】を学ぶ
#1 単一責務の原則(single-responsibility principle)
パーソルクロステクノロジー株式会社
第1技術開発本部 第4設計部 設計2課 阿部耕二
2023 @juraruming
目次
自己紹介
SOLIDについて
単一責務の原則(single-responsibility principle)について
テーマ説明
原則違反のコード例
原則違反のコード改善例
設計についてのディスカッション・質問
今回の設計所感
参考資料 2
自己紹介
名前: 阿部 耕二(あべ こうじ)
所属: パーソルクロステクノロジー株式会社
第1技術開発本部第4設計部設計2課
医療機器の組込みソフトウェア開発。C言語。
趣味: 宇宙開発(リーマンサットプロジェクト広報メンバー)
LAPRASポートフォリオ: https://lapras.com/public/k-abe
Twitter: @juraruming
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
2023 @juraruming 3
SOLIDについて
設計の5原則の頭文字をとったもの。
S 単一責務の原則(Single Respomsibility Principle)
O オープン・クローズドの原則(Open Closed Principle)
L リスコフの置換原則(Liskov Substitution Principle)
I インターフェイス分離の原則(Interface Segregation Principle)
D 依存関係逆転の原則(Dependency Inversion Principle)
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
4
SOLID原則の重要性
凝集度が高くなる
他のモジュールと疎結合になる
各モジュールの目的が明確に分けられると、コード変更の際の影響
は局所化される。結果、テストしやすい設計になる。
上記の特徴を持つと再利用しやすいコードになる。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
参考資料2より引用
“
“
5
単一責務の原則(single-responsibility
principle)について
モジュールは単一の責務を持つようにする。
モジュールはひとつのことだけをすべきであり、変更の理由もひと
つであるべきということ。
単一責務の原則を適用するとモジュールの凝集度が高くなる。
まとまりのあるひとつの目的を持つ関数とデータから構成されるモ
ジュールになる。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
参考資料2より引用
“
“
6
テーマ説明
趣味で開発した連射測定ゲームをテーマにする。
連射測定ゲームとは???
私の少年時代の1980年後半に流行ったシュウォッチをマイコンボード
で再現したもの。
動画はこちら
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
7
ゲーム実行画面
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
8
ゲーム環境紹介
Spresenseメインボード
Spresense拡張ボード
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ
9
ゲーム環境紹介2
APS学習ボード: このボードにLED, スイッチが実装されている
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
10
ゲーム環境紹介3
Spresenseメインボード+ 拡張ボード+ APS学習ボード
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
11
マイコン内部ブロッ
ク図
Spresenseのプロセッサ
CXD5602の内部ブロック図
こちらから引用
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ
12
マイコン ソフトウ
ェアフレームワーク
Spresense SDKの構造
こちらから引用
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ
13
原則違反のコード例
対象コード:
https://github.com/grace2riku/spresense_game/tree/main/shooting_
watch
shooting_watch_main.c
shooting_watch_gpio.c
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
14
概要のクラス図
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
15
原則違反コードの改善ポイント1
1. ファイル名から責務が想像できない
ファイル名から処理内容が想像できたほうが良い。
shooting_watch_gpio.c ではGPIOを超えた上位の知識を持ってい
る。
LEDの名称(USER_LED1, USER_LED2)、スイッチの名称(SW1,
SW2)を知っているのは上位のモジュールでよい。LED、スイッチ
などのデバイスがマイコンのどのピンに接続されているか知ってい
るのは下位のソフトウェアモジュールというのが自然。
上位は下位より抽象的な概念を扱う(下位は具体的)。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
16
原則違反コードの改善ポイント1 ソースコード
// APS学習ボードピンアサイン
#define SWITCH_1 (39)
#define SWITCH_2 (29)
void shooting_watch_gpio_create(void)
{
/* 割り込み設定 */
board_gpio_intconfig(SWITCH_1, INT_FALLING_EDGE, true, shooting_watch_gpio_switch_1_handler);
board_gpio_intconfig(SWITCH_2, INT_FALLING_EDGE, true, shooting_watch_gpio_switch_2_handler);
if (board_gpio_int(SWITCH_1, true) < 0) {
message("gpio_create board_gpio_int(switch_1) failure.n");
}
if (board_gpio_int(SWITCH_2, true) < 0) {
message("gpio_create board_gpio_int(switch_2) failure.n");
}
return;
}
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
17
原則違反コードの改善ポイント2
2. shooting_watch_gpio.cはGPIOデバイスドライバーとしての責務を
超えている
デバイスドライバーは上位からの指示でデバイス制御することで再
利用しやすくなる。
デバイスドライバーの中に割り込みハンドラが書かれている。デバ
イスドライバ単体で再利用しにくい。割り込みハンドラにはデバイ
スドライバより抽象的なアプリケーションロジックを書きたいこと
もある。
デバイスドライバより上位の層に割り込みハンドラを書けるように
デバイスドライバは関数仕様を考えた方が使い勝手がよさそう。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
18
原則違反コードの改善ポイント2 ソースコード
static int shooting_watch_gpio_switch_1_handler(int irq, FAR void *context, FAR void *arg)
{
++shooting_count;
return 0;
}
static int shooting_watch_gpio_switch_2_handler(int irq, FAR void *context, FAR void *arg)
{
int sw2_status = board_gpio_read(SWITCH_2);
int sw1_status = board_gpio_read(SWITCH_1);
if (sw1_status && !sw2_status) next_state = true;
if (!sw1_status && !sw2_status) exit_shooting_watch = true;
return 0;
}
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
19
原則違反コードの改善ポイント3
3. main関数でハードウェアアクセス関数を呼び出している
責務を意識せず作り込みしソフトウェアの階層を無視している。
アプリケーションは実現方法(ハードウェアの具体的制御)を意識し
ないつくりが良い。
アプリケーション部でハードウェアアクセスすると非常に再利用し
にくいコードになる。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
20
原則違反コードの改善ポイント3 ソースコード
int main(int argc, FAR char *argv[])
{
int one_time_counter = 0;
int game_coundown;
shooting_watch_gpio_create();
printf("Hello, shooting_watch!!!n");
while(exit_shooting_watch != true) {
switch (game_state) {
case STOP:
if (one_time_counter == 0) {
printf("----- Press SW2 to start the game. When the game starts, shoot SW1 continuously.-----n");
printf("----- Press SW1 and SW2 to end the game.-----n");
one_time_counter = 1;
board_gpio_write(USER_LED_1, USER_LED_TURN_OFF);
board_gpio_write(USER_LED_2, USER_LED_TURN_OFF);
}
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
21
原則違反のコード改善例
対象コード:
https://github.com/grace2riku/spresense_game/tree/refactoring_srp/
shooting_watch
aps_lerning_board_bsp.c, aps_lerning_board_bsp.h
controller.c, controller.h
game.c, game.h
initialize.c, initialize.h
main.c
shooting_count.c, shooting_count.h
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
22
改善クラス図
23
【再掲】原則違反コードの改善ポイント1
1. ファイル名から責務が想像できない
ファイル名から処理内容が想像できたほうが良い。
shooting_watch_gpio.c ではGPIOを超えた上位の知識を持ってい
る。
LEDの名称(USER_LED1, USER_LED2)、スイッチの名称(SW1,
SW2)を知っているのは上位のモジュールでよい。LED、スイッチ
などのデバイスがマイコンのどのピンに接続されているか知ってい
るのは下位のソフトウェアモジュールというのが自然。
上位は下位より抽象的な概念を扱う(下位は具体的)。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
24
改善ポイント1の改善内容
ファイル名から責務が想像できるようにファイル名変更、分割をお
こなった
-> 改善クラス図を参照
部品の名称を知っているモジュール、部品のピン番号をしっている
モジュールを明確にした
部品の名称はaps_lerning_board_bsp.hに定義し公開する。
ピン番号はaps_lerning_board_bsp.cに実装しヘッダーファイルで公
開しないようにした。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
25
【再掲】原則違反コードの改善ポイント2
2. shooting_watch_gpio.cはGPIOデバイスドライバーとしての責務を
超えている
デバイスドライバーは上位からの指示でデバイス制御することで再
利用しやすくなる。
デバイスドライバーの中に割り込みハンドラが書かれている。デバ
イスドライバ単体で再利用しにくい。割り込みハンドラにはデバイ
スドライバより抽象的なアプリケーションロジックを書きたいこと
もある。
デバイスドライバより上位の層に割り込みハンドラを書けるように
デバイスドライバは関数仕様を考えた方が使い勝手がよさそう。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
26
改善ポイント2の改善内容
LED、スイッチの制御はaps_lerning_board_bspのled_onoff,
read_user_switchのみから行う方針にした。
割り込みハンドラはデバイスドライバではなく、上位の層に定義し
た
controller -> nextstate_and_exit_interrupt
ゲーム開始・終了のスイッチ操作の割り込み
shooting_count -> shooting_count_interrupt
連射測定の割り込み
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
27
【再掲】原則違反コードの改善ポイント3
3. main関数でハードウェアアクセス関数を呼び出している
責務を意識せず作り込みしソフトウェアの階層を無視している。
アプリケーションは実現方法(ハードウェアの具体的制御)を意識し
ないつくりが良い。
アプリケーション部でハードウェアアクセスすると非常に再利用し
にくいコードになる。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
28
改善ポイント3の改善内容
階層構造と責務の分担を意識してクラス図を書いた
上の層はゲームの目的を達成するロジックを担当する部分
下の層はゲームの目的を達成するための具体的な手段を担当するよ
う意識した。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
29
設計についてのディスカッション・質
問
自分以外の設計の視点が学びになると個人的に考えています。
ぜひぜひお気軽にフィードバックをよろしくお願いします
こちらに学習の振り返りに使う目的でZennのスクラップを用意しま
した。
活用ください。
【SOLID原則】"単一責任の原則(single-responsibility principle)"の勉
強会後の振り返り
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
30
今回の設計所感
階層化を意識してファイル分割、責務分割をしたつもり。階層化の
デメリットとして高速な動作を求められる場合は改善が必要だと感
じた。
設計する際は性能などの非機能要件を考慮することも大事だと改め
て認識した。
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
31
参考資料
1. オブジェクト指向習得のための5ステップ【SOLID原則】
2. テスト駆動開発による組み込みプログラミング―C言語とオブジェク
ト指向で学ぶアジャイルな設計
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
32
ご清聴ありがとうございました
【連続講座】ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle)
2023 @juraruming 33

More Related Content

Similar to ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf

「開発者とセキュリティのお付き合い」5パターン
「開発者とセキュリティのお付き合い」5パターン「開発者とセキュリティのお付き合い」5パターン
「開発者とセキュリティのお付き合い」5パターンToshi Aizawa
 
20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdfKazuaki Ishizaki
 
インフラ領域の技術スタックや業務内容について紹介
インフラ領域の技術スタックや業務内容について紹介インフラ領域の技術スタックや業務内容について紹介
インフラ領域の技術スタックや業務内容について紹介MicroAd, Inc.(Engineer)
 
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋Staffnet_Inc
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Yusuke Suzuki
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編株式会社 NTTテクノクロス
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/AndroidセキュアコーディングMasaki Kubo
 
Iot safety and security
Iot safety and securityIot safety and security
Iot safety and securityKiyoshi Ogawa
 
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Shinya Nakajima
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カットRakuten Group, Inc.
 
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...Rakuten Group, Inc.
 
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来Daiyu Hatakeyama
 
第1回 Android勉強会
第1回 Android勉強会第1回 Android勉強会
第1回 Android勉強会fujikunn
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010Yusuke Suzuki
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Yuki Higuchi
 
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ CYBIRD Co.,Ltd.
 
もう怖くないモバイルアプリ開発!
もう怖くないモバイルアプリ開発!もう怖くないモバイルアプリ開発!
もう怖くないモバイルアプリ開発!Toshiki Iga
 
Portable RT-Middleware environment on a USB memory for the robot programing ...
Portable RT-Middleware environment on a USB memory  for the robot programing ...Portable RT-Middleware environment on a USB memory  for the robot programing ...
Portable RT-Middleware environment on a USB memory for the robot programing ...s15mh218
 

Similar to ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf (20)

「開発者とセキュリティのお付き合い」5パターン
「開発者とセキュリティのお付き合い」5パターン「開発者とセキュリティのお付き合い」5パターン
「開発者とセキュリティのお付き合い」5パターン
 
20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf20221226_TITECH_lecture_ishizaki_public.pdf
20221226_TITECH_lecture_ishizaki_public.pdf
 
インフラ領域の技術スタックや業務内容について紹介
インフラ領域の技術スタックや業務内容について紹介インフラ領域の技術スタックや業務内容について紹介
インフラ領域の技術スタックや業務内容について紹介
 
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
HTML5スマートフォン業務アプリ開発セミナー(応用)テキストの抜粋
 
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
Agile Japan 2010 「変化を受け入れるアジャイルなプロジェクトマネジメントと現場 &lt;ツール・環境篇>」
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編
 
Java/Androidセキュアコーディング
Java/AndroidセキュアコーディングJava/Androidセキュアコーディング
Java/Androidセキュアコーディング
 
RANCHERを使ったDev(Ops)
RANCHERを使ったDev(Ops)RANCHERを使ったDev(Ops)
RANCHERを使ったDev(Ops)
 
Iot safety and security
Iot safety and securityIot safety and security
Iot safety and security
 
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
Visual Studio App Centerを公式サンプルアプリから学ぼうiOS(swift),Android(java)
 
AndroidでDIxAOP
AndroidでDIxAOPAndroidでDIxAOP
AndroidでDIxAOP
 
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット「最強」のチームを「造る」技術基盤 ディレクターズ・カット
「最強」のチームを「造る」技術基盤 ディレクターズ・カット
 
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten,  core skills  neede...
楽天市場で使われている技術、エンジニアに必要なコアスキルとはTechnology used in Rakuten, core skills neede...
 
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
テクノアカデミー郡山 現役ソフトウェアエンジニアが語る。IT の今と未来
 
第1回 Android勉強会
第1回 Android勉強会第1回 Android勉強会
第1回 Android勉強会
 
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010ユーザー企業における標準化のあり方 : QCon Tokyo 2010
ユーザー企業における標準化のあり方 : QCon Tokyo 2010
 
Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.Android Lecture #01 @PRO&BSC Inc.
Android Lecture #01 @PRO&BSC Inc.
 
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~ アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
アプリの「無事故リリース」を目指して~品質管理部によるSmartBeat活用事例~
 
もう怖くないモバイルアプリ開発!
もう怖くないモバイルアプリ開発!もう怖くないモバイルアプリ開発!
もう怖くないモバイルアプリ開発!
 
Portable RT-Middleware environment on a USB memory for the robot programing ...
Portable RT-Middleware environment on a USB memory  for the robot programing ...Portable RT-Middleware environment on a USB memory  for the robot programing ...
Portable RT-Middleware environment on a USB memory for the robot programing ...
 

More from 耕二 阿部

猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222耕二 阿部
 
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則耕二 阿部
 
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdfソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf耕二 阿部
 
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdfSWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf耕二 阿部
 
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdfテストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf耕二 阿部
 
20210830 rust入学式
20210830 rust入学式20210830 rust入学式
20210830 rust入学式耕二 阿部
 
Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話耕二 阿部
 
Rust初心者がArduinoをLチカしてみた
Rust初心者がArduinoをLチカしてみたRust初心者がArduinoをLチカしてみた
Rust初心者がArduinoをLチカしてみた耕二 阿部
 
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御耕二 阿部
 
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~耕二 阿部
 
モデルベース開発勉強会
モデルベース開発勉強会モデルベース開発勉強会
モデルベース開発勉強会耕二 阿部
 
EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料耕二 阿部
 
AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化耕二 阿部
 

More from 耕二 阿部 (13)

猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
猫の日開催!ねこIoTLT vol.9(Spresense猫モーラー🐈)_20240222
 
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
ソフトウェア設計原則【SOLID】を学ぶ #5 リスコフの置換原則
 
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdfソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
ソフトウェア設計原則【SOLID】を学ぶ #4 開放閉鎖の原則.pdf
 
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdfSWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
SWEST25_EmbLT_NervesとSpresenseをHostIFで通信してみた.pdf
 
テストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdfテストからより良い組込みソフトウェア開発を考える.pdf
テストからより良い組込みソフトウェア開発を考える.pdf
 
20210830 rust入学式
20210830 rust入学式20210830 rust入学式
20210830 rust入学式
 
Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話Arduinoでモーター制御ロジックを実装した話
Arduinoでモーター制御ロジックを実装した話
 
Rust初心者がArduinoをLチカしてみた
Rust初心者がArduinoをLチカしてみたRust初心者がArduinoをLチカしてみた
Rust初心者がArduinoをLチカしてみた
 
はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御はじめてのブラシレスモータ制御
はじめてのブラシレスモータ制御
 
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
20201029 モデルベース開発モーター制御編~C言語とSimulinkの文法記述を比較する~
 
モデルベース開発勉強会
モデルベース開発勉強会モデルベース開発勉強会
モデルベース開発勉強会
 
EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料EVミニカート、技術交流&ミニセミナ 発表資料
EVミニカート、技術交流&ミニセミナ 発表資料
 
AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化AWSとEVカートで走行データを可視化
AWSとEVカートで走行データを可視化
 

Recently uploaded

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
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
 
論文紹介: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
 
論文紹介: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
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
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
 
論文紹介: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
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Recently uploaded (14)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
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」の紹介
 
論文紹介: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
 
論文紹介: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...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
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
 
論文紹介: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
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

ソフトウェア設計原則【SOLID】を学ぶ #1 単一責務の原則(single-responsibility principle).pdf