SlideShare ist ein Scribd-Unternehmen logo
1 von 38
xUnitハンズオン
xUnitフレームワークを通じた
プログラミング&テスト・スキルUP
はじめに
開催概要
• 開催日時
• 2016/12/27 火曜17時
• 2016/1/5〜1/x 木曜17時
• 会場
• CS+Lync
• 持ち物
• Visual Studio 2013もしくは2015
なんならXamarin Studio 6.xでも…
(社内で入手経路あるのかわかりませんが)
テキストとサンプルコード
• 社内の共有フォルダ
• 後ほどメールで連絡させてもらいます。
• SlideShare&GitHub
• オンラインからも取得できるようにしておきます。
• SlideShare :http://www.slideshare.net/mizukyfujitani
• GitHub :https://github.com/mizukyf
目的
• プログラミング・スキルUP
• C#/.NETの言語仕様を実践的に理解する
• LambdaやLINQといった「積極活用が望まれながら嫌煙されがち」な
事項のノウハウを得る
• OOPにおけるモジュール化の「あるべき」を理解する
• テスト・スキルUP
• 「テストしにくいコード」をテストする工夫をできるようになる
• 「テストしやすいコード」(≒品質高いコード)を意識したコーディ
ングやレビューができるようになる
そもそも前提として・・・
そこから一歩進んで
• そもそも前提として
• 「画面を突っつく」≠UT という事実を理解する
• 自分のプロジェクトでUTを実施する基礎知識を得る
• そこから一歩進んで
• ゆくゆくは"Hot Spot"(改修のたびに障害を起こす類のモジュール)
の単体テスト製造および継続メンテナンスの体制を構築していきたい
「志が低い」と言われそうですが、A___システムやB___システム
ではこれが限界なのではないかと考えています。。。
ようするに
• ハンズオンの目的は「UTを極める」ことにはない。
• UTを手段として自分たちのスキルUPするきっかけ提供。
• 自分のためのPlaygroundを手に入れたつもりで遊んでほしい。
• xUnitについてもっと知りたいという人は・・・
? ?
Javaneseな方は
JSerな方は
C#な方は
TypeScriptな方は
各回のコンテンツ(予定)
日付 会場 コンテンツ
2016/12/27 コラボレーション
スペースN/E
ハンズオンの開催概要、目的、
環境構築とはじめてのUTプロジェクト
2017/1/5 セミナールームX テストの書き方、アサーションの種類、セットアップ、
「別の方法で」実装してみよう
2017/1/12 コラボレーション
スペースN/E
開発手法TDDの紹介、UTのイメージ転換、
「テストしやすい」インターフェースを作ろう
2017/1/19 セミナールームY IO、日時、乱数、privateフィールド、
あらゆる「副作用」を局所化しよう
2017/1/26 コラボレーション
スペースW/S
予備回
はじめてのUTプロジェクト
xUnitのいろいろ
• Javaの場合
• JUnit :有名すぎて他のFWの話がさっぱり出てこない。
• C#の場合
• NUnit :資料もそこそこ、Xamarinサポートあり。採用。
• xUnit.net :NUnitからFork?資料少ないのでボツ。A社が採用。
• MSTest :MS社謹製。macOSユーザなのでボツ。
• JavaScript/TypeSrtiptの場合
• Jasmine :有名すぎて(以下略)
Testing Framework
xUnitMockito, Mocha,
Karma, etc.
Visual Studio x NUnitの場合
ソリューションとプロジェクトの作成
• [ファイル]→[新規作成]→[プロジェクト]クリック
• 「新しいプロジェクト」画面で[インストール済み]→[テン
プレート]→[Visual C#]を選択
• 適当なアプリの種類を選択(例:クラスライブラリ)
テストプロジェクトの作成
• ソリューション エクスプローラーで作成したソリューション
を右クリック→[追加]→[新しいプロジェクト]をクリック
• 「新しいプロジェクト」画面で[インストール済み]→[テン
プレート]→[Visual C#]を選択
• 「クラス ライブラリ」を選択
NuGetパッケージの追加①
• 2つめのプロジェクトを右クリックして[NuGetパッケージの
管理]をクリック
• 「NuGetパッケージの管理」画面で[オンライン]→[すべ
て]を選択
• [オンラインの検索]欄に「Nunit」と入力し検索
• 「Nunit」を選択し[インストール]をクリック
VS2013.5
NuGetパッケージの追加②
• [検索]欄に「NUnit Adapter」と入力し検索
• 「Nunit 3 Test Adapter for Visual Studio」を選択し[インス
トール]をクリック
• インストールが終わったら[閉じる]
VS2013.5
NuGetパッケージの追加①
• 2つめのプロジェクトを右クリックして[NuGetパッケージの
管理]をクリック
• 「NuGetパッケージマネージャー」(もしくは「NuGetパッ
ケージの管理」)画面で[参照]をクリック
• [検索]欄に「Nunit」と入力し検索
• 「Nunit」を選択し[インストール]をクリック
• 「プレビュー」画面で[OK]をクリック
VS2015
NuGetパッケージの追加②
• [検索]欄に「NUnit Adapter」と入力し検索
• 「NUnit3TestAdapter」を選択し[インストール]をクリック
• 「プレビュー」画面で[OK]をクリック
VS2015
プロジェクト参照の追加
• 2つめのプロジェクトの[参照]を右クリック→[参照の追
加]をクリック
• 「参照マネージャー」画面で[プロジェクト]→[ソリュー
ション]を選択
• テスト対象プロジェクトを選択しチェックON
• 画面右下の[OK]をクリック
テストケースを作成
テストの実行と結果確認
• [テスト]→[実行]→[すべてのテスト]をクリック
• テストエクスプローラーの結果表示を確認
※テストエクスプローラーは[テスト]→[ウィンドウ]→
[テストエクスプローラー]をクリックをすることで表示され
る。
Xamarin x NUnitの場合
おまけ
ソリューションとプロジェクトの作成
• [ファイル]→[新しいソリューション]クリック
• 「新しいプロジェクト」画面でアプリの種類を選択し[次へ]
• [プロジェクト名]と[ソリューション名][場所]を入力
• [作成]をクリック
おまけ
2つめのプロジェクトの作成
• ソリューションの作成がされる
• 「ソリューション」パッドでソリューション名を右クリック→
[追加]→[新しいプロジェクトを追加]クリック
おまけ
NUnitライブラリ プロジェクト
のテンプレートを選択
• [その他]→[.NET]→[NUnitライブラリ プロジェクト]を
選択して[次へ]をクリック
• [プロジェクト名]を入力して[作成]クリック
おまけ
プロジェクト参照の追加
• 作成したNUnitライブラリ プロジェクトの[参照]を右クリッ
ク→[参照の編集]をクリック
• 「参照の編集]画面の[プロジェクト]タブで最初に作成した
プロジェクトにチェックON
• 画面右下の[OK]をクリック
おまけ
テストケースを作成する
• 「Test.cs」というスケルトンが用意されている
• これをもとにテストケースを作成する
おまけ
テストを実行する
• [表示]→[パッド]→[テスト]をクリック
• 「テスト」パッドで[すべて実行]をクリック
おまけ
Gulp x
TypeScript x Jasmineの場合
おまけ
NOTE
• 作業環境に以下のツールがインストール済みであること:
• node.jsおよびnpm
• Gulp CLI("npm install -g gulp-cli")
• TypeScriptコードの編集は好みのテキストエディタで:
• Atom
• Visual Studio Code
• WebStorm
• Visual Studio
• Etc...
おまけ
雛形プロジェクトをダウンロード
• ブラウザでGitHub上のリポジトリ・ページにアクセス
• [Clone or download]→[Downlod ZIP]をクリック
• ZIPファイルを展開する
おまけ
プロジェクトのセットアップを行う
• "cd /path/to/project"コマンドでディレクトリ移動
• "npm install"コマンドで依存性のダウンロードを実行
おまけ
テストケースを作成し実行する
• "src/main/"配下の"*.ts"ファイルにクラスを定義
• "src/test/"配下の"*.spec.ts"ファイルにテストコードを記述
• "gulp test"コマンドでJasmineによりテストが実行される
おまけ
実際に書いてみる
テスト対象コード たしかにあれば便利だけど…、正直そん
な使わなくない?系の拡張メソッド
RubyやPythonにありがちなアレ。
テストコード①
テストコード②
?
?
どんなテストコード
になるでしょう??
テストコード② Assertクラスが提供してくれている各種
のアサーションについては次回説明予定
テスト対象のコードと同じコードを書い
てもあまり意味がない。「別の方法で」
実装することできなか、実践的な試行錯
誤をするいい機会と考えてみましょう
きょうはここまで
• 次回は・・・
• テストクラスの書き方をもう少し詳しく見ていく。
• アサーションの種類を調べてみる。
• 「テストのまえにすべきこと」のセットアップをする。

Weitere ähnliche Inhalte

Andere mochten auch

JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会mizuky fujitani
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5dynamis
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数Shinichi Kozake
 
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてOSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてTakuto Wada
 
power-assert, mechanism and philosophy
power-assert, mechanism and philosophypower-assert, mechanism and philosophy
power-assert, mechanism and philosophyTakuto Wada
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみたYasushi Kato
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会VOYAGE GROUP
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由Yusuke Naka
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」Takuto Wada
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6健太 田上
 
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in productionunassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in productionTakuto Wada
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツpospome
 

Andere mochten auch (20)

SIMD.js(ECMAScript 7)
SIMD.js(ECMAScript 7)SIMD.js(ECMAScript 7)
SIMD.js(ECMAScript 7)
 
JSer Class #3
JSer Class #3JSer Class #3
JSer Class #3
 
JSer Class #2
JSer Class #2JSer Class #2
JSer Class #2
 
One night Vue.js
One night Vue.jsOne night Vue.js
One night Vue.js
 
JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会JP1/AJS2オペレータ勉強会
JP1/AJS2オペレータ勉強会
 
JSer Class #1
JSer Class #1JSer Class #1
JSer Class #1
 
Keypoints html5
Keypoints html5Keypoints html5
Keypoints html5
 
たのしい高階関数
たのしい高階関数たのしい高階関数
たのしい高階関数
 
Vue.js入門
Vue.js入門Vue.js入門
Vue.js入門
 
OSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係についてOSS活動の活発さと評価の関係について
OSS活動の活発さと評価の関係について
 
power-assert, mechanism and philosophy
power-assert, mechanism and philosophypower-assert, mechanism and philosophy
power-assert, mechanism and philosophy
 
3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた3日時間をもらったのでTypeScriptを触ってみた
3日時間をもらったのでTypeScriptを触ってみた
 
Flux react現状確認会
Flux react現状確認会Flux react現状確認会
Flux react現状確認会
 
TypeScriptをオススメする理由
TypeScriptをオススメする理由TypeScriptをオススメする理由
TypeScriptをオススメする理由
 
Hello Java
Hello JavaHello Java
Hello Java
 
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
 
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
プログラミング初心者に ECMAScript(JavaScript) を最初の言語として勧めるべき? Meguro es6
 
Vue.js with Go
Vue.js with GoVue.js with Go
Vue.js with Go
 
unassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in productionunassert - encourage reliable programming by writing assertions in production
unassert - encourage reliable programming by writing assertions in production
 
REST API のコツ
REST API のコツREST API のコツ
REST API のコツ
 

Ähnlich wie xUnitハンズオン第1回テキスト

論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10Noritada Shimizu
 
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでSphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでStudy Group by SciencePark Corp.
 
HoloLens RS4でWindowsML入門+Research mode実装
HoloLens RS4でWindowsML入門+Research mode実装HoloLens RS4でWindowsML入門+Research mode実装
HoloLens RS4でWindowsML入門+Research mode実装Akihiro Ueyama
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築You&I
 
XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08孝文 田村
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門Kazuki Tsutsumi
 
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminarAtushi Sugiyama
 
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpTakeshi Komiya
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Kazumi IWANAGA
 
concrete5 の超便利アドオン Designer Content を極める!
concrete5 の超便利アドオン Designer Content を極める!concrete5 の超便利アドオン Designer Content を極める!
concrete5 の超便利アドオン Designer Content を極める!Katz Ueno
 
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すこれ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すStudy Group by SciencePark Corp.
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダKenichi Yoshida
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデルYuta Kashino
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねNaoto TAKAHASHI
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~拓将 平林
 
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例Koichi Ota
 
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業株式会社 オープンソース・ワークショップ
 
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業株式会社 オープンソース・ワークショップ
 
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -Yuki Katada
 

Ähnlich wie xUnitハンズオン第1回テキスト (20)

論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10論理思考とプログラミング 2013f#10
論理思考とプログラミング 2013f#10
 
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまでSphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
SphinxのCIの続き Azure DevOpsでのビルド結果を、認証付きAzure App Serviceに公開するところまで
 
HoloLens RS4でWindowsML入門+Research mode実装
HoloLens RS4でWindowsML入門+Research mode実装HoloLens RS4でWindowsML入門+Research mode実装
HoloLens RS4でWindowsML入門+Research mode実装
 
今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築今時のオンプレなgithubクローン環境構築
今時のオンプレなgithubクローン環境構築
 
XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08XamarinStudio勉強会 2014/09/08
XamarinStudio勉強会 2014/09/08
 
Net fringejp2016
Net fringejp2016Net fringejp2016
Net fringejp2016
 
高速!Clojure Web 開発入門
高速!Clojure Web 開発入門高速!Clojure Web 開発入門
高速!Clojure Web 開発入門
 
7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar7/7 WordBench kobe dreamweaver seminar
7/7 WordBench kobe dreamweaver seminar
 
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjpSphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
Sphinx ではじめるドキュメント生活 2012 #pyconjp #sphinxconjp
 
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
Developers Summit 2023 9-D-1「もう悩まされない開発環境、プロジェクトで統一した環境をいつでもどこでも」
 
concrete5 の超便利アドオン Designer Content を極める!
concrete5 の超便利アドオン Designer Content を極める!concrete5 の超便利アドオン Designer Content を極める!
concrete5 の超便利アドオン Designer Content を極める!
 
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回すこれ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
これ以上ソースコードの負債を増やさないためにVisual Studioの静的解析とAzure PipelinesでCIを回す
 
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダJAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
JAWS-UG三都物語 クラウドとデバイスが連携するアジェンダ
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけねGitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
GitHubのリポジトリ(32個)を 覗いてみよう。 ただし、READMEだけね
 
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
Azureのサーバーレスで限界を超えよう~スマートスピーカースキル開発を題材に~
 
Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例Blazor WebAssembly と Windows Forms でのロジック共有例
Blazor WebAssembly と Windows Forms でのロジック共有例
 
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
ドローンをプログラミングして飛ばす!Scratch、PHP、Python、映像のプログラミング授業
 
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
2019年9月15日 OSC広島 ドローンをプログラミングして飛ばす!ScratchとPHPでプログラミング授業
 
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -エンジニアのためのSpread Sheets講座101 - Google Apps Script -
エンジニアのためのSpread Sheets講座101 - Google Apps Script -
 

xUnitハンズオン第1回テキスト