Download - C#への招待
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.
導入
• 松下祐介、高校2年生
• 兼部しまくって忙しいです ▫ 兼部には注意しましょう
• プログラマとしての名前はKinokkory ▫ キノコ+ブロッコリー
• Twitter名は@shiatsumat
• 「圏論」「Wikipedia中毒」→僕です
導入
• 僕が学んだプログラミング言語 ▫ HSP, C言語, C++, C#, PHP, Javascript, Lisp,
Java, Scala, Haskell, F#...
• 今でも勉強中です
• これからC#という言語を皆さんに紹介します
• 今日の話は少し難しいですが頑張ってください
注意
• このプレゼンテーションには多数の誇張表現が含まれています。どうか懐疑的な視点を失わずにお聴きになってください。
• プレゼンテーション中は好きな場所に座ってリラックスしていてください。意見や質問がありましたらご自由に発言してください。
• ここからが本題です。
よく考えよう
プログラミングは道具
• 作りたいものがあるからプログラミングをする
• プログラミングをしたいからプログラミングをするのではない
• 作りたいものが作りやすい言語のほうがいい
よく考えよう
やりたいことはいろいろ
• デスクトップアプリ
• ウェブアプリ
• 3Dグラフィックス
• サウンド
• 並列計算
• ネットワーク通信
• クラウドコンピューティング
よく考えよう
ソフトは見た目が9割
• 見た目がいいと気持ちがいい
• 見た目がいいと中身もよく見える
• 見た目がいいと売れる
よく考えよう
「覚えやすい」より「使いやすい」
• プログラミングで必要とされる知識は多い ▫ 言語の機能
▫ 開発環境の使い方
▫ ライブラリやフレームワークの挙動
• これらの全てを覚えることは不可能
• 開発環境がいろいろ教えてくれると嬉しい
よく考えよう
時代は変わる
• 「わーい、ラジオだ!」
• 「わーい、テレビだ!」
• 「わーい、コンピューターだ!」
• 「わーい、携帯電話だ!」
• 「わーい、インターネット回線だ!」
• 「わーい、Wiiだ!」
• 「わーい、スマートフォンだ!」
• 「わーい、タブレット端末だ!」
時代は変わる
• 動かす環境自体が変わっている
• 必要なものも変わっている
• プログラミング言語も進化しなくてはならない
いったん休憩
じゃあどの言語を勉強するの?
C#でしょ!
C#の特徴
C#の特徴
1. 「しーしゃーぷ」と読みます
C#の特徴
2. MicrosoftがMicrosoftのために開発した言語 ▫ Windowsでは完璧に動く
▫ Microsoftのことは嫌いでもC#のことは嫌いにならないでください!
▫ Xamarin・Monoを使うとLinuxやMax OS XやiOSやAndroidでも動く
C#の特徴
3. 新しい言語 ▫ 2000年に生まれた
▫ 過去の悪習は捨てた
▫ 現代的な設計
▫ 綺麗
▫ 進化し続けている
C#の特徴
4. いろいろなものが高品質でつくれる ▫ 普通に商業で使える
▫ 動作が安定している
▫ 高速
▫ MicrosoftがMicrosoftのために作った言語
C#の特徴
5. カッコいい ▫ C#ができる男子はモテます
豊富なライブラリ
• Windowsクライアント (WPF)
• ウェブサイト (ASP.NET)
• ウェブサービス (WCF)
• 業務ワークフロー (WF)
• ブラウザーアプリケーション (Silverlight)
• データベース (SQL Server, LINQ)
• クラウド (Windows Azure)
• ソーシャルコンピューティング(Windows Live)
• 並列処理 (TPL, PLINQ)
豊富なライブラリ
やばすぎ
Unityで3Dゲーム
• Unityは優秀なゲームエンジン ▫ 無料版がある
▫ 3D処理・物理演算・入出力が簡単 普通にやろうとすると信じがたいほど大変
▫ Windows・OS X・Wii・iPhoneで動く
▫ Webプレイヤーでも動く
• Unityを使える=勝ち組
Unityで3Dゲーム
• Unityを動かすのにはC#かUnityScriptを使える ▫ UnityScriptは冗長だし遅い
▫ まともなプログラマはC#を使う
• C#を使える=Unityを使える=勝ち組
PlayStationを動かせる
• PlayStation Mobile (旧PlayStation Suite) ▫ PlayStation VitaやAndroidのプラットフォーム
• 開発言語がC#
• C#を使える=PlayStationを動かせる=勝ち組
人気言語C#
• Tags - Stack Overflow 1位 C# 2位 Java 3位 PHP
• PyPL プログラミング言語人気度ランキング 1位 Java 2位 PHP 3位 C#
• TPCI プログラミングコミュニティー指数 1位 C 2位 Java 3位 C++ 4位 Objective-C 5位 C#
C#がモバイル開発に最良の言語である 8つの理由
C#、2012年の首位プログラミング言語に名が挙がる
1. 最先端 – 非同期処理がファーストクラスな言語機能になり、かつては退屈で、反復的で、エラーになりがちなコーディングを、単純で楽しい体験に変えてくれます。それに、匿名型、ラムダ式、型推論、関数型スタイルのプログラミング、LINQなどによって、開発者は非常に意味のある、保守の容易なコードを書けます。
2. 強力な特性 – オブジェクト指向プログラミングとカプセル化は、コードを構造化し、再利用性を最大限引き出すことを容易にします。リフレクションや依存注入などの機能は開発者に多くの力と柔軟性を提供します。
C#がモバイル開発に最良の言語である 8つの理由
3. 高度な実行環境 – ガベージ コレクションは、メモリを手動管理することのオーバーヘッドをなくし、開発を非常に簡素化します。開発者は、ポインターと戦うのではなく、解決したい問題に注力できます。
4. 信頼性 – 型安全性は、コンパイル時にバグを見つけて切り出すのを、より早く、より簡単にします。これは特にモバイル開発で重要な特性です。モバイル開発では、パッケージ化して実機やエミュレーターに配置するためにビルド/実行/テストのサイクルが長くなりがちです。コンパイル時の正当性検査によって、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実行環境が成熟してい るためです。
C#がモバイル開発に最良の言語である 8つの理由
7. ネイティブ アクセス – ネイティブ コードとのシームレスな(継ぎ目のない)相互運用も、両方の良いところを与えます。ネイティブのライブラリを用いP/Invokeを活用することで、マネージ コードの世界に追加の機能を触れさせることができます。これが、iOSやAndroidのネイティブAPIの100%をC#開発者が触れられるように、 Xamarinがやっていることです。下層にあるプラットフォームの表現力豊かな力にアクセスするすべを提供します。
8. ポータビリティ – そして大きな8番目。Windows、iOS、そして、Androidで、22億以上のデバイス上でC#コードを実行できます。そして、モバイルを超えて、C#は非常にポータブルです。モバイル、組み込み、デスクトップ、サーバーコンピューティングなど広い範囲の環境で使えます。
C#がモバイル開発に最良の言語である 8つの理由
素晴らしい
Visual Studio
• Visual Studioという開発環境がとても強力 ▫ Visual C# Express Editionなら無料
• さまざまなツールが揃っている
• 初心者にとっては学習ツールとして最適
• 上級者にとっても開発ツールとして最適
素晴らしいサイト
• 未確認飛行 C ▫ http://ufcpp.net/study/index.html
http://ufcpp.net/study/csharp/index.html
• MSDN ▫ http://msdn.microsoft.com/ja-jp/
必要なことはほとんど書いてある
素晴らしいサイト
• C#たんと学ぶ/わりと硬派なソフトウェア開発入門 ▫ http://codezine.jp/article/detail/5346
• あとは「C#入門」などで検索
▫ google検索でもbing検索でも可
▫ 結構見つかる
再び考えよう
もちろんC#以外の選択肢もある
• 僕が学んだプログラミング言語 ▫ HSP, C言語, C++, C#, PHP, Javascript, Lisp,
Java, Scala, Haskell, F#...
• 今の時代は多様性の時代です
• HaskellとかF#とかお勧め
• C++は基礎教養
• 最終的にはいろいろな言語を覚えたほうがいい
C#は最初が難しい
• C#は出来ることが多いけど、文法が難しい
• さまざまな概念 ▫ クラス
▫ 値型と参照型
▫ ジェネリクス
▫ デリゲート
▫ ラムダ式
▫ LINQ
• 多すぎ
でもやっぱり
C#でしょ!
C#講義の目標
• C#プログラマと名乗る
• Visual Studioを使えるようになる
• 必要な情報を自力で得られるようになる
• 中規模のものを作れるようになる
C#講義
• C#の強力さのおかげでサクサク講義が進みます
• 飛ばしまくります
• どんどん質問して下さい
• 作りたいものをぜひ教えてください
C#を よろしく
(^^)/