SlideShare a Scribd company logo
C#でアプリを
作ってみよう!
2017/11/18 - #ngtnet
TAKANO Sho(高野 将)/ @masaru_b_cl
自己紹介
某SIerで働くDeveloper
そのかたわら執筆業も
#ngtnet 2
ところで……
こんな仕事をしていませんか?
プロジェクト専用のフレームワークがある
アプリはフレームワークの流儀で作成
しばしば設計書という名のExcel方眼紙から生成
既存システムのコードを流用
という名のコピペ
#ngtnet 3
その結果……
こんなことが起きがち
一からアプリを作ったことが無い!
自分でロジックを考えたことが無い!
#ngtnet 4
そこで……
一からアプリを作成する
ハンズオンを行います
#ngtnet 5
ハンズオンの目的
アプリを作成するということを体験する
自分で「設計」してみる
#ngtnet 6
作成するアプリ
じゃんけんバトル
#ngtnet
敵(パソコン)とじゃんけんで
対戦し、5回勝つとそのラウ
ンドの勝ちになります。
また、ライフ制を取り入れ、
先にライフがゼロになったほ
うが負けになります。
7
作成するアプリ
じゃんけんバトル
#ngtnet
敵(パソコン)とじゃんけんで
対戦し、5回勝つとそのラウ
ンドの勝ちになります。
また、ライフ制を取り入れ、
先にライフがゼロになったほ
うが負けになります。
時間が足りないので、
いけるところまで
8
余談ながら
元ネタはこちらです
後ろに置いてあるので参考にどうぞ
#ngtnet 9
ハンズオンの進め方
1. アプリ作成準備
2. ゲーム画面作成
3. 1回じゃんけんして結果表示
4. 勝負がつくまでじゃんけんする
5. ラウンド制を取り入れる
#ngtnet 10
ハンズオンの進め方
1. アプリ作成準備
2. ゲーム画面作成
3. 1回じゃんけんして結果表示
4. 勝負がつくまでじゃんけんする
5. ラウンド制を取り入れる
#ngtnet 11
1.アプリ作成準備
#ngtnet 12
1.アプリ作成準備
素材を用意する
 「アプリを作ろう! C#」で検索して日経BP社のページへ
#ngtnet 13
クリック
1.アプリ作成準備
Visual Studioを起動して
新規プロジェクトを作成
Windows フォーム アプリケーション
プロジェクト名は JankenBattle
VBが得意ならVBでも可
#ngtnet 14
2.ゲーム画面作成
#ngtnet 15
 まずは最低限の画面を作成する
 使うコントロール
 Panel
 PictureBox
 Label
 Button
Panelは枠線表示
BorderStyle=FixedSingle
#ngtnet
2.ゲーム画面作成
16
 Labelは自動サイズ調整無効化
AutoSize=false
 PictureBoxのImangeには
リソースとして
画像ファイルを表示
 ドラゴンは1か所だけなので
ローカルリソース
 じゃんけんの手は複数使うので
プロジェクトリソース
#ngtnet
2.ゲーム画面作成
17
3.1回じゃんけんして
結果表示
#ngtnet 18
 スタートボタンでゲーム開始
 「ゲームスタート!」と表示
 スタートボタンを押すまで
手は選べない
 手を選んだらじゃんけんする
 選んだ手を表示
 敵の手をRandomクラスを
使ってランダムに選んで表示
 勝負の結果を画面に表示
 勝ち、負け、あいこ
#ngtnet 19
3.1回じゃんけんして結果表示
 手の種類は列挙型で定義
 グー、チョキ、パー
 勝負の判定はif文で分岐
 条件をどうすればよいか
考えてみよう!
#ngtnet 20
3.1回じゃんけんして結果表示
4.勝負がつくまで
じゃんけんする
#ngtnet 21
 あいこなら勝敗表示なし
 勝つか負けるまで繰り返す
 手を選ぶと続けてじゃんけん
勝負中かどうかの
状態を管理する
 bool型のフィールド or
プロパティ
#ngtnet 22
4.勝負がつくまでじゃんけんする
5.ラウンド制を取り入れる
#ngtnet 23
 最大5回勝負
 1回の勝負をラウンドと呼ぶ
 どちらかが先に3勝したら
勝敗数表示してゲーム終了
 ラウンドごとの勝敗結果は
勝敗表に表示
 ラウンドが変わるごとに
 ラウンド数表示
 自分と敵の手をクリア
#ngtnet 24
5.ラウンド制を取り入れる
 勝敗結果、ラウンド数を
状態として管理する
 勝敗結果は 配列 or リスト
 ラウンド数は 数値
#ngtnet 25
5.ラウンド制を取り入れる
続きは……
ぜひ書籍を手に取ってみてください
#ngtnet 26
最後に
#ngtnet 27
最後に
今回作成したのはあくまでシンプルなアプリ
フォームとイベントハンドラーで
なんとかなる規模
現実はもっと複雑な要件が待っている
WebやDB、ファイルなど外部へのアクセス
エラーハンドリング
などなど
#ngtnet 28
最後に
フォームとイベントハンドラーだけで
なんとかするのは初心者まで
可読性、保守性、再利用性などを考慮し、
アプリを設計しよう
PDS(プレゼンテーションとドメインの分離)
責務に応じたクラス
プラットフォームに応じたエラー処理
#ngtnet 29
C#でアプリを
作ってみよう!
2017/11/18 - #ngtnet
TAKANO Sho(高野 将)/ @masaru_b_cl
ありがとうございました!

More Related Content

PPTX
大人の基礎C#【Niigat.NET 2015-10】
PDF
.NET技術でこれからも食べていくための技術戦略
PDF
保守性の高いアプリケーション設計について
PDF
現場で役立つシステム設計の原則
PPTX
現場で役立つシステム設計の原則への感謝
PPTX
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
PDF
プログラミングが(好き|嫌い)な方のためのKlisLT
PDF
kintone devCamp 2015 ultra fast improvement
大人の基礎C#【Niigat.NET 2015-10】
.NET技術でこれからも食べていくための技術戦略
保守性の高いアプリケーション設計について
現場で役立つシステム設計の原則
現場で役立つシステム設計の原則への感謝
LogicFlow 実践編~LogicFlowでいろいろつくってみた ~
プログラミングが(好き|嫌い)な方のためのKlisLT
kintone devCamp 2015 ultra fast improvement

What's hot (20)

PDF
de:code報告
PDF
MTプラグイン入門以前
PPTX
Visual Studio Code 入門
PDF
Designer's Design Talk「デザインの基礎」
PDF
ドメイン駆動設計のための Spring の上手な使い方
PPTX
もっとサーバーレスを手軽に便利に!Azure Logic Apps
PDF
チラ見せ♡ナイト@20150410 LT公開用
PDF
C# で QnA Bot
PPTX
Git入門
PDF
PHPUnitでリファクタリング
PDF
2011 PHPカンファレンス関西 懇親会LT
PDF
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
PDF
.NET Micro Framework で IoT
PPTX
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
PPTX
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
PDF
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
PDF
いろいろ見せますLord of Knightsのクライアント開発事例紹介
PPTX
アクセシビリティを考えたalt属性を自動生成してみよう!
PPTX
Visual Studio Code で快適開発生活 -拡張を作って公開しよう-
PPTX
Decode報告(提供版)
de:code報告
MTプラグイン入門以前
Visual Studio Code 入門
Designer's Design Talk「デザインの基礎」
ドメイン駆動設計のための Spring の上手な使い方
もっとサーバーレスを手軽に便利に!Azure Logic Apps
チラ見せ♡ナイト@20150410 LT公開用
C# で QnA Bot
Git入門
PHPUnitでリファクタリング
2011 PHPカンファレンス関西 懇親会LT
【de:code 2020】 React Native で Windows アプリ開発 ~React Native for Windows~
.NET Micro Framework で IoT
本になりました! ~ チーム開発の教科書 C#によるモダンな開発を実践しよう!
Developers Summit 2014 【13-D-7】 コミュニティLT - Story 5. 「新人技術者にどうプログラミングを教えたか」
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
いろいろ見せますLord of Knightsのクライアント開発事例紹介
アクセシビリティを考えたalt属性を自動生成してみよう!
Visual Studio Code で快適開発生活 -拡張を作って公開しよう-
Decode報告(提供版)
Ad

Similar to C#でアプリを作ってみよう! #ngtnet (18)

PPTX
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
PDF
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
PPTX
.NET界隈で最近気になる話題
PDF
ノンゲーム系スマホアプリ制作 First Step
PPTX
Uwpアプリケーション開発入門
PDF
Appmethodで何か作ってみる
PPTX
広がる .Net
PDF
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
PDF
Xamarinでアプリを作ったときのエトセトラ
PPTX
Orange Cube 自社フレームワーク 2015/3
PDF
Swift Code in Swift - 2日間でゲームを作ってみた
PPTX
WindowsPhone arch 神戸#1
PDF
Xamarin によるクロスプラットフォームモバイルアプリ開発
PDF
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
PDF
20111112OITEC
PDF
はじめての UWP アプリ開発
PPTX
ゲームづくりで短期間でフロンドエンドのスキルアップ
JXUG Windowsアプリを開発している皆さん、C#でスマホアプリ開発を試してみませんか?ハンズオン
C# を使い倒す!クロス プラットフォーム アプリ開発とクラウド連携の新潮流 - Xamarin セッション
.NET界隈で最近気になる話題
ノンゲーム系スマホアプリ制作 First Step
Uwpアプリケーション開発入門
Appmethodで何か作ってみる
広がる .Net
マスコットアプリ─ キャラアプリ─ 開発 with Xamarin
Xamarinでアプリを作ったときのエトセトラ
Orange Cube 自社フレームワーク 2015/3
Swift Code in Swift - 2日間でゲームを作ってみた
WindowsPhone arch 神戸#1
Xamarin によるクロスプラットフォームモバイルアプリ開発
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
20111112OITEC
はじめての UWP アプリ開発
ゲームづくりで短期間でフロンドエンドのスキルアップ
Ad

More from 将 高野 (16)

PDF
新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57
PDF
新しい世界の学び方 by @masaru_b_cl #nds55
PDF
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51
PDF
業務アプリケーション開発を支える.NET技術 #ngtnet
PDF
仕事が捗る! Office & エディター操作入門 #nds40
PDF
OWIN - .NETにおけるPSGI -
PDF
設計(≒デザイン)の話をしよう #nds35
PDF
Lightweight C#
PDF
はじめてのReleaseブランチ運用(svn編)
PDF
git-svn
PDF
GTD on RTM
PDF
Tddのすゝめ
PDF
効率10倍UP 秀丸IDE化法
PDF
Choi LINQ
PDF
Lets Enjoy C#!
PPT
Hello ".NET" World
新入社員研修の作り方 〜完全版〜 by @masaru_b_cl #nds57
新しい世界の学び方 by @masaru_b_cl #nds55
Let's LINQing! - C#におけるデータ処理 - by @masaru_b_cl #nds51
業務アプリケーション開発を支える.NET技術 #ngtnet
仕事が捗る! Office & エディター操作入門 #nds40
OWIN - .NETにおけるPSGI -
設計(≒デザイン)の話をしよう #nds35
Lightweight C#
はじめてのReleaseブランチ運用(svn編)
git-svn
GTD on RTM
Tddのすゝめ
効率10倍UP 秀丸IDE化法
Choi LINQ
Lets Enjoy C#!
Hello ".NET" World

C#でアプリを作ってみよう! #ngtnet