c#への招待

59
C#への招待 松下祐介

Upload: yusuke-matsushita

Post on 27-May-2015

2.178 views

Category:

Technology


0 download

DESCRIPTION

Invitation to C# for new members of NPCA.

TRANSCRIPT

Page 1: C#への招待

C#への招待 松下祐介

Page 2: C#への招待

Introduction

Hello everyone. My name is Yusuke Matsushita. I am a 5th grader of Nada High

School. My handle as a programmer is Kinokkory. Follow me on twitter @shiatsumat. I am interested in category theory and fond of Wikipedia. I belong to so many clubs I am

busy. I have learned many programming languages and believe that C# is the best

choice. I hope that you will like this language after this presentation.

Page 3: C#への招待

導入

• 松下祐介、高校2年生

• 兼部しまくって忙しいです ▫ 兼部には注意しましょう

• プログラマとしての名前はKinokkory ▫ キノコ+ブロッコリー

• Twitter名は@shiatsumat

• 「圏論」「Wikipedia中毒」→僕です

Page 4: C#への招待

導入

• 僕が学んだプログラミング言語 ▫ HSP, C言語, C++, C#, PHP, Javascript, Lisp,

Java, Scala, Haskell, F#...

• 今でも勉強中です

• これからC#という言語を皆さんに紹介します

• 今日の話は少し難しいですが頑張ってください

Page 5: C#への招待

注意

• このプレゼンテーションには多数の誇張表現が含まれています。どうか懐疑的な視点を失わずにお聴きになってください。

• プレゼンテーション中は好きな場所に座ってリラックスしていてください。意見や質問がありましたらご自由に発言してください。

• ここからが本題です。

Page 6: C#への招待
Page 7: C#への招待
Page 8: C#への招待
Page 9: C#への招待
Page 10: C#への招待
Page 11: C#への招待
Page 12: C#への招待

よく考えよう

Page 13: C#への招待

プログラミングは道具

• 作りたいものがあるからプログラミングをする

• プログラミングをしたいからプログラミングをするのではない

• 作りたいものが作りやすい言語のほうがいい

Page 14: C#への招待

よく考えよう

Page 15: C#への招待

やりたいことはいろいろ

• デスクトップアプリ

• ウェブアプリ

• 3Dグラフィックス

• サウンド

• 並列計算

• ネットワーク通信

• クラウドコンピューティング

Page 16: C#への招待

よく考えよう

Page 17: C#への招待

ソフトは見た目が9割

• 見た目がいいと気持ちがいい

• 見た目がいいと中身もよく見える

• 見た目がいいと売れる

Page 18: C#への招待

よく考えよう

Page 19: C#への招待

「覚えやすい」より「使いやすい」

• プログラミングで必要とされる知識は多い ▫ 言語の機能

▫ 開発環境の使い方

▫ ライブラリやフレームワークの挙動

• これらの全てを覚えることは不可能

• 開発環境がいろいろ教えてくれると嬉しい

Page 20: C#への招待

よく考えよう

Page 21: C#への招待

時代は変わる

• 「わーい、ラジオだ!」

• 「わーい、テレビだ!」

• 「わーい、コンピューターだ!」

• 「わーい、携帯電話だ!」

• 「わーい、インターネット回線だ!」

• 「わーい、Wiiだ!」

• 「わーい、スマートフォンだ!」

• 「わーい、タブレット端末だ!」

Page 22: C#への招待

時代は変わる

• 動かす環境自体が変わっている

• 必要なものも変わっている

• プログラミング言語も進化しなくてはならない

Page 23: C#への招待

いったん休憩

Page 24: C#への招待

じゃあどの言語を勉強するの?

Page 25: C#への招待

C#でしょ!

Page 26: C#への招待

C#の特徴

Page 27: C#への招待

C#の特徴

1. 「しーしゃーぷ」と読みます

Page 28: C#への招待

C#の特徴

2. MicrosoftがMicrosoftのために開発した言語 ▫ Windowsでは完璧に動く

▫ Microsoftのことは嫌いでもC#のことは嫌いにならないでください!

▫ Xamarin・Monoを使うとLinuxやMax OS XやiOSやAndroidでも動く

Page 29: C#への招待

C#の特徴

3. 新しい言語 ▫ 2000年に生まれた

▫ 過去の悪習は捨てた

▫ 現代的な設計

▫ 綺麗

▫ 進化し続けている

Page 30: C#への招待

C#の特徴

4. いろいろなものが高品質でつくれる ▫ 普通に商業で使える

▫ 動作が安定している

▫ 高速

▫ MicrosoftがMicrosoftのために作った言語

Page 31: C#への招待

C#の特徴

5. カッコいい ▫ C#ができる男子はモテます

Page 32: C#への招待

豊富なライブラリ

• Windowsクライアント (WPF)

• ウェブサイト (ASP.NET)

• ウェブサービス (WCF)

• 業務ワークフロー (WF)

• ブラウザーアプリケーション (Silverlight)

• データベース (SQL Server, LINQ)

• クラウド (Windows Azure)

• ソーシャルコンピューティング(Windows Live)

• 並列処理 (TPL, PLINQ)

Page 33: C#への招待

豊富なライブラリ

やばすぎ

Page 34: C#への招待

Unityで3Dゲーム

• Unityは優秀なゲームエンジン ▫ 無料版がある

▫ 3D処理・物理演算・入出力が簡単 普通にやろうとすると信じがたいほど大変

▫ Windows・OS X・Wii・iPhoneで動く

▫ Webプレイヤーでも動く

• Unityを使える=勝ち組

Page 35: C#への招待

Unityで3Dゲーム

• Unityを動かすのにはC#かUnityScriptを使える ▫ UnityScriptは冗長だし遅い

▫ まともなプログラマはC#を使う

• C#を使える=Unityを使える=勝ち組

Page 36: C#への招待

PlayStationを動かせる

• PlayStation Mobile (旧PlayStation Suite) ▫ PlayStation VitaやAndroidのプラットフォーム

• 開発言語がC#

• C#を使える=PlayStationを動かせる=勝ち組

Page 38: C#への招待

C#がモバイル開発に最良の言語である 8つの理由

C#、2012年の首位プログラミング言語に名が挙がる

1. 最先端 – 非同期処理がファーストクラスな言語機能になり、かつては退屈で、反復的で、エラーになりがちなコーディングを、単純で楽しい体験に変えてくれます。それに、匿名型、ラムダ式、型推論、関数型スタイルのプログラミング、LINQなどによって、開発者は非常に意味のある、保守の容易なコードを書けます。

2. 強力な特性 – オブジェクト指向プログラミングとカプセル化は、コードを構造化し、再利用性を最大限引き出すことを容易にします。リフレクションや依存注入などの機能は開発者に多くの力と柔軟性を提供します。

Page 39: C#への招待

C#がモバイル開発に最良の言語である 8つの理由

3. 高度な実行環境 – ガベージ コレクションは、メモリを手動管理することのオーバーヘッドをなくし、開発を非常に簡素化します。開発者は、ポインターと戦うのではなく、解決したい問題に注力できます。

4. 信頼性 – 型安全性は、コンパイル時にバグを見つけて切り出すのを、より早く、より簡単にします。これは特にモバイル開発で重要な特性です。モバイル開発では、パッケージ化して実機やエミュレーターに配置するためにビルド/実行/テストのサイクルが長くなりがちです。コンパイル時の正当性検査によって、C#開発者は、明確なエラーを見つけるために、プログラムが実際にクラッシュするのを待つ必要はありません。

Page 40: C#への招待

C#がモバイル開発に最良の言語である 8つの理由

5. 採用が簡単 – 非常に学習が簡単です(特に、オブジェクト指向プログラミングの原理を既知の開発者にとって)。多大な量のC#の参考資料があり、新しい開発者が行き詰らずに済みます。

6. 高速な実行 – C# on iOSは、LLVM最適化コンパイラー、つまり、CとC++(OSを駆動させている)と同じバックエンドで動いています。これによって、C#の高い生産性 と、低級言語の実行性能の両方の良いところ(the best of both worlds)を与えます。Android上では、C#はJavaよりも良い性能を発揮します。これは2つの理由があって、1つは言語設計の選択(値型、真のジェネリック型、既定で非virtualなメソッドのサポート)によります。もう1つは比較的若いDalvikよりも、Mono実行環境が成熟してい るためです。

Page 41: C#への招待

C#がモバイル開発に最良の言語である 8つの理由

7. ネイティブ アクセス – ネイティブ コードとのシームレスな(継ぎ目のない)相互運用も、両方の良いところを与えます。ネイティブのライブラリを用いP/Invokeを活用することで、マネージ コードの世界に追加の機能を触れさせることができます。これが、iOSやAndroidのネイティブAPIの100%をC#開発者が触れられるように、 Xamarinがやっていることです。下層にあるプラットフォームの表現力豊かな力にアクセスするすべを提供します。

8. ポータビリティ – そして大きな8番目。Windows、iOS、そして、Androidで、22億以上のデバイス上でC#コードを実行できます。そして、モバイルを超えて、C#は非常にポータブルです。モバイル、組み込み、デスクトップ、サーバーコンピューティングなど広い範囲の環境で使えます。

Page 42: C#への招待

C#がモバイル開発に最良の言語である 8つの理由

素晴らしい

Page 43: C#への招待

Visual Studio

• Visual Studioという開発環境がとても強力 ▫ Visual C# Express Editionなら無料

• さまざまなツールが揃っている

• 初心者にとっては学習ツールとして最適

• 上級者にとっても開発ツールとして最適

Page 44: C#への招待

素晴らしいサイト

• 未確認飛行 C ▫ http://ufcpp.net/study/index.html

http://ufcpp.net/study/csharp/index.html

• MSDN ▫ http://msdn.microsoft.com/ja-jp/

必要なことはほとんど書いてある

Page 45: C#への招待

素晴らしいサイト

• C#たんと学ぶ/わりと硬派なソフトウェア開発入門 ▫ http://codezine.jp/article/detail/5346

• あとは「C#入門」などで検索

▫ google検索でもbing検索でも可

▫ 結構見つかる

Page 46: C#への招待

再び考えよう

Page 47: C#への招待

もちろんC#以外の選択肢もある

• 僕が学んだプログラミング言語 ▫ HSP, C言語, C++, C#, PHP, Javascript, Lisp,

Java, Scala, Haskell, F#...

• 今の時代は多様性の時代です

• HaskellとかF#とかお勧め

• C++は基礎教養

• 最終的にはいろいろな言語を覚えたほうがいい

Page 48: C#への招待

C#は最初が難しい

• C#は出来ることが多いけど、文法が難しい

• さまざまな概念 ▫ クラス

▫ 値型と参照型

▫ ジェネリクス

▫ デリゲート

▫ ラムダ式

▫ LINQ

• 多すぎ

Page 49: C#への招待

でもやっぱり

Page 50: C#への招待
Page 51: C#への招待
Page 52: C#への招待
Page 53: C#への招待
Page 54: C#への招待
Page 55: C#への招待

C#でしょ!

Page 56: C#への招待

C#講義の目標

• C#プログラマと名乗る

• Visual Studioを使えるようになる

• 必要な情報を自力で得られるようになる

• 中規模のものを作れるようになる

Page 57: C#への招待

C#講義

• C#の強力さのおかげでサクサク講義が進みます

• 飛ばしまくります

• どんどん質問して下さい

• 作りたいものをぜひ教えてください

Page 58: C#への招待

C#を よろしく

Page 59: C#への招待

(^^)/