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

30
C#でアプリを 作ってみよう! 2017/11/18 - # ngtnet TAKANO Sho (高野 将)/ @ masaru_b_cl

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

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

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

2017/11/18 - #ngtnet

TAKANO Sho(高野 将)/ @masaru_b_cl

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

自己紹介

某SIerで働くDeveloper

そのかたわら執筆業も

#ngtnet 2

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

ところで……

こんな仕事をしていませんか?

プロジェクト専用のフレームワークがある

アプリはフレームワークの流儀で作成

しばしば設計書という名のExcel方眼紙から生成

既存システムのコードを流用

という名のコピペ

#ngtnet 3

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

その結果……

こんなことが起きがち

一からアプリを作ったことが無い!

自分でロジックを考えたことが無い!

#ngtnet 4

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

そこで……

一からアプリを作成する

ハンズオンを行います

#ngtnet 5

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

ハンズオンの目的

アプリを作成するということを体験する

自分で「設計」してみる

#ngtnet 6

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

作成するアプリ

じゃんけんバトル

#ngtnet

敵(パソコン)とじゃんけんで対戦し、5回勝つとそのラウンドの勝ちになります。また、ライフ制を取り入れ、先にライフがゼロになったほうが負けになります。

7

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

作成するアプリ

じゃんけんバトル

#ngtnet

敵(パソコン)とじゃんけんで対戦し、5回勝つとそのラウンドの勝ちになります。また、ライフ制を取り入れ、先にライフがゼロになったほうが負けになります。

時間が足りないので、いけるところまで

8

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

余談ながら

元ネタはこちらです

後ろに置いてあるので参考にどうぞ

#ngtnet 9

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

ハンズオンの進め方

1. アプリ作成準備

2. ゲーム画面作成

3. 1回じゃんけんして結果表示

4. 勝負がつくまでじゃんけんする

5. ラウンド制を取り入れる

#ngtnet 10

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

ハンズオンの進め方

1. アプリ作成準備

2. ゲーム画面作成

3. 1回じゃんけんして結果表示

4. 勝負がつくまでじゃんけんする

5. ラウンド制を取り入れる

#ngtnet 11

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

1.アプリ作成準備

#ngtnet 12

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

1.アプリ作成準備

素材を用意する

「アプリを作ろう! C#」で検索して日経BP社のページへ

#ngtnet 13

クリック

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

1.アプリ作成準備

Visual Studioを起動して

新規プロジェクトを作成

Windows フォーム アプリケーション

プロジェクト名は JankenBattle

VBが得意ならVBでも可

#ngtnet 14

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

2.ゲーム画面作成

#ngtnet 15

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

まずは最低限の画面を作成する

使うコントロール

Panel

PictureBox

Label

Button

Panelは枠線表示

BorderStyle=FixedSingle

#ngtnet

2.ゲーム画面作成

16

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

Labelは自動サイズ調整無効化

AutoSize=false

PictureBoxのImangeには

リソースとして

画像ファイルを表示

ドラゴンは1か所だけなので

ローカルリソース

じゃんけんの手は複数使うので

プロジェクトリソース

#ngtnet

2.ゲーム画面作成

17

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

3.1回じゃんけんして結果表示

#ngtnet 18

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

スタートボタンでゲーム開始

「ゲームスタート!」と表示

スタートボタンを押すまで

手は選べない

手を選んだらじゃんけんする

選んだ手を表示

敵の手をRandomクラスを

使ってランダムに選んで表示

勝負の結果を画面に表示

勝ち、負け、あいこ

#ngtnet 19

3.1回じゃんけんして結果表示

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

手の種類は列挙型で定義

グー、チョキ、パー

勝負の判定はif文で分岐

条件をどうすればよいか

考えてみよう!

#ngtnet 20

3.1回じゃんけんして結果表示

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

4.勝負がつくまでじゃんけんする

#ngtnet 21

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

あいこなら勝敗表示なし

勝つか負けるまで繰り返す

手を選ぶと続けてじゃんけん

勝負中かどうかの

状態を管理する

bool型のフィールド or

プロパティ

#ngtnet 22

4.勝負がつくまでじゃんけんする

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

5.ラウンド制を取り入れる

#ngtnet 23

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

最大5回勝負

1回の勝負をラウンドと呼ぶ

どちらかが先に3勝したら

勝敗数表示してゲーム終了

ラウンドごとの勝敗結果は

勝敗表に表示

ラウンドが変わるごとに

ラウンド数表示

自分と敵の手をクリア

#ngtnet 24

5.ラウンド制を取り入れる

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

勝敗結果、ラウンド数を

状態として管理する

勝敗結果は 配列 or リスト

ラウンド数は 数値

#ngtnet 25

5.ラウンド制を取り入れる

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

続きは……

ぜひ書籍を手に取ってみてください

#ngtnet 26

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

最後に

#ngtnet 27

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

最後に

今回作成したのはあくまでシンプルなアプリ

フォームとイベントハンドラーで

なんとかなる規模

現実はもっと複雑な要件が待っている

WebやDB、ファイルなど外部へのアクセス

エラーハンドリング

などなど

#ngtnet 28

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

最後に

フォームとイベントハンドラーだけで

なんとかするのは初心者まで

可読性、保守性、再利用性などを考慮し、

アプリを設計しよう

PDS(プレゼンテーションとドメインの分離)

責務に応じたクラス

プラットフォームに応じたエラー処理

#ngtnet 29

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

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

2017/11/18 - #ngtnet

TAKANO Sho(高野 将)/ @masaru_b_cl

ありがとうございました!