Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
今からでも遅くないC#開発
HackerTackle
濱本 一慶(Hamamoto Kazunori)
2015/09/26
自己紹介
濱本 一慶(はまもと かずのり)
@airish9
C#アプリケーションエンジニア
福岡生まれの福岡育ち
VB.NETやC#中心のMS勢
出没コミュニティ
Japan Azure User Group
C#勉強会福岡
本日のセッションについて
▪ C#にチョット興味ある方を対象してます
▪ これからC#を始めたい方も対象にしています
▪ Hacker Tackleでは貴重な初心者向けセッション!
▪ C#について話そうと思ってたら.NETになっていた(何を言...
そもそもC#ってどんな言語?
C#(シーシャープ)とは、マイクロソフトが開発したマルチパラダイムプログラミング言語。強
い型付け、命令型、宣言型、手続き型、関数型、ジェネリック、オブジェクト指向の要素を持つ。
マイクロソフトのソフトウェアフレー...
余談ですが・・・
C♯C# 正誤
正式には
C♯の歴史
C#1.0
2000年
C#2.0
2004年
C#3.0
2007年
C#4.0
2008年
C#5.0
2012年
C#6.0
2015年
クラス
ジェネリクス
ラムダ式
LINQ
dynamic
await/async
Ros...
注目度は?
Google先生が言うにはJavaが断トツ人気・・・。
これからC♯を始めるには?
▪ 対象とするFrameworkのバージョンで大きく2種類
▪ .NET Core
▪ VisualStudioかVisualStudioCode
▪ 従来の.NET Framework
▪ VisualStudio
C♯の利用シーン
C♯の利用シーン
Windows Desktop
Windows Form Application
Windows Desktop
WPF
提督業も忙しい! | grabacr.nét - http://grabacr.net/kancolleviewer
Windows Store
Windows Store
Windows Phone Application
Xamarin
https://xamarin.com/
10分間で分かった気になれるXamarin概要 - http://www.buildinsider.net/enterprise/sansanreport/0601
▪ C♯を利用したク...
Unity
▪ クロスプラットフォームゲームエンジン
▪ C♯が利用可能
▪ モバイル・デスクトップ、ブラウザ、
ゲーム機などの多数のプラットフォームに
対応
http://unity3d.com/jp/unity
Kinect
▪ センサーデバイス
▪ C♯のSDKがを利用して開発可能
Microsoft Azure
▪ Microsoft社が提供するクラウドプラット
フォーム
▪ Visual Studioとの親和性が高い
▪ 各サービスでC♯のSDKを利用可能
https://azure.microsoft.com/ja-...
これからC♯を始めるってどうよ?
▪ 近年、日の目を浴びてきた言語だと思う
▪ 利用シーンは豊富でユーザー数も多い
▪ 今から入るのはチャンス
コミュニティのご紹介
▪ コミュニティを活用して情報収集をしましょう
▪ 福岡でMicrosoft系のコミュニティ
▪ Csharp Fukuoka
▪ Japan Azure User Group Fukuoka(ふくあず)
▪ Win.te...
Csharp Fukuokaのご紹介
▪ 福岡でCsharpに興味がある方向けのコミュニティ
▪ 2013年5月13日に結成
▪ 過去に8回の勉強会を開催
▪ 目安は3ヶ月に1回のペースで開催
https://www.facebook.com/...
Csharp Fukuokaのご紹介
https://www.facebook.com/groups/472380036165353
Japan Azure User Group Fukuokaのご紹介
▪ Azureコミュニティの福岡支部
▪ インフラやアプリエンジニアが多数参加しています
▪ 月に1回ペースで勉強会を開催
https://www.facebook.com/...
NET 5 Webアプリ開発スタイル
2種類の .NET5
▪ .NET 5
▪ .NET Compiler Platform(Roslyn) によるコンパイル
▪ 新しいC#やVB.NET
▪ ASP.NET 5
▪ side-by-side 実行できる .NET(ランタイムのイ...
ASP.NET 5
▪ Side-by-side実行による非ランタイムインストール実行
▪ Roslynによる実行時コンパイル
▪ OWIN実装によるIISに依存しないASP.NET実行環境
▪ Windows以外の開発&実行環境
https:...
ASP.NET 5
▪ 基本的にASP.NET vNextの名称が変わっただけ
▪ MVC 6
▪ 実行時コンパイル
▪ IISを必要としないSelf Hosting
▪ VisualStudio 2015 で使用可能
▪ プロジェクトテンプレ...
ASP.NET 5 のプロジェクトテンプレート
▪ 設定ファイルにjsonを使用する。
▪ global.json (プロジェクトの参照関係に使用)、project.json (プロジェクト設定)
▪ プロジェクトテンプレートにYeomanを使...
npm、Bower、Grunt
▪ ASP.NETでは縁がなかったパッケージ管理&タスクランナー
▪ npm
▪ Node.jsで使用されているパッケージマネージャー、BowerとGruntが必要とする
▪ Bower(バウアー)
▪ フロント...
npm、Bower、Grunt
▪ Grunt
▪ Node.jsで動作するタスクランナー
▪ 定義ファイルで実行タスクを定義する
▪ JavaScriptの圧縮(minify)や結合
▪ altJSのコンパイル
OmniSharp
▪ 様々なエディタで.NETを開発できるようにするプロジェクト
▪ MacやLinuxのエディタでも開発できるようにする計画
▪ Sublime Text
▪ Atom
▪ Emacs
▪ Vim
http://www.om...
C♯6.0のご紹介
C♯の歴史
C#1.0
2000年
C#2.0
2004年
C#3.0
2007年
C#4.0
2008年
C#5.0
2012年
C#6.0
2015年
クラス
ジェネリクス
ラムダ式
LINQ
dynamic
await/async
Ros...
Roslynとは?
.NET Frameworkの次世代コンパイラプラットフォーム
Compiler APIs
• コンパイラ
Feature APIs
• Code Fixやリファクタリング等
Workspace APIs
• プロジ...
C♯6.0
Visual Studio 2015で使用可能(現在はRTM)
実はVisulaBasicも便利になります
Roslyn ≒ C#6.0
大きな変更はなく、細かい修正が多い
C♯6.0の実装状況
Feature Example
Auto-property initializers public int X { get; set; } = x;
Getter-only auto-properties public i...
Auto-property initializers
自動実装プロパティの初期化がコンストラクタで可能になりました!
class Person
{
public int Age { get;set; }
public Person()
{
Ag...
Getter-only auto-properties
Getterのみの自動実装プロパティの初期化もできます
class Person
{
public int Age { get { return this._age; } }
privat...
Using static members
静的クラスの静的メソッドは省略可能になります
class Person
{
public void Say()
{
System.Console.WriteLine("Name is " + this....
Await in catch/finally
Catch句とFinally句でawaitが使用できようになりました
try
{
//HodeHoge
}
catch (Exception e)
{
await Task.Delay(2000);...
Exception filters
Catch句に条件式を付与する事ができるようになりました
try
{
//HogeHoge
}
catch (Exception e)
if (e.Data.Count > 10)
{
//例外処理
}
Af...
Null propagation
nullチェックをシンプルに記述できます
public int? GetNameLength(Person person)
{
if (person == null) return null;
if (pers...
nameof operator
メンバや変数の名前を返す演算子
class Person
{
public string Name { get; set; }
public Person(string name)
{
if (string.Is...
nameof operator
メンバや変数の名前を返す演算子
public string Name { get; set; }
public Person(string name)
{
if (string.IsNullOrEmpty(nam...
String interpolation
文字列補完をする際に変数を直接指定できるようになりました
Console.WriteLine("{0}×{1:2D}={2:0.0}", a, b, result);
Before
int a = 3;...
ご清聴ありがとうございました
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
今からでも遅くないC#開発
Prochain SlideShare
Chargement dans…5
×

今からでも遅くないC#開発

Hacker Tackleで発表した、C♯開発を今から始める方向けのセッションです。

  • Identifiez-vous pour voir les commentaires

今からでも遅くないC#開発

  1. 1. 今からでも遅くないC#開発 HackerTackle 濱本 一慶(Hamamoto Kazunori) 2015/09/26
  2. 2. 自己紹介 濱本 一慶(はまもと かずのり) @airish9 C#アプリケーションエンジニア 福岡生まれの福岡育ち VB.NETやC#中心のMS勢 出没コミュニティ Japan Azure User Group C#勉強会福岡
  3. 3. 本日のセッションについて ▪ C#にチョット興味ある方を対象してます ▪ これからC#を始めたい方も対象にしています ▪ Hacker Tackleでは貴重な初心者向けセッション! ▪ C#について話そうと思ってたら.NETになっていた(何を言って…ry)
  4. 4. そもそもC#ってどんな言語? C#(シーシャープ)とは、マイクロソフトが開発したマルチパラダイムプログラミング言語。強 い型付け、命令型、宣言型、手続き型、関数型、ジェネリック、オブジェクト指向の要素を持つ。 マイクロソフトのソフトウェアフレームワークである.NET Frameworkとともに作られ、Ecma International[1]および国際標準化機構 (ISO)[2] によって標準化されており、日本においても日本工 業規格 (JIS)[3]によって採択された。 https://ja.wikipedia.org/wiki/C_Sharp C#を語るうえで.NETは欠かせない (monoはこの際置いておきましょう)
  5. 5. 余談ですが・・・ C♯C# 正誤 正式には
  6. 6. C♯の歴史 C#1.0 2000年 C#2.0 2004年 C#3.0 2007年 C#4.0 2008年 C#5.0 2012年 C#6.0 2015年 クラス ジェネリクス ラムダ式 LINQ dynamic await/async Roslyn
  7. 7. 注目度は? Google先生が言うにはJavaが断トツ人気・・・。
  8. 8. これからC♯を始めるには? ▪ 対象とするFrameworkのバージョンで大きく2種類 ▪ .NET Core ▪ VisualStudioかVisualStudioCode ▪ 従来の.NET Framework ▪ VisualStudio
  9. 9. C♯の利用シーン
  10. 10. C♯の利用シーン
  11. 11. Windows Desktop Windows Form Application
  12. 12. Windows Desktop WPF 提督業も忙しい! | grabacr.nét - http://grabacr.net/kancolleviewer
  13. 13. Windows Store
  14. 14. Windows Store Windows Phone Application
  15. 15. Xamarin https://xamarin.com/ 10分間で分かった気になれるXamarin概要 - http://www.buildinsider.net/enterprise/sansanreport/0601 ▪ C♯を利用したクロスプラットフォーム 開発環境 ▪ Android、iOS、WindowsPhoneに対応 ▪ ネイティブのアプリを作成可能
  16. 16. Unity ▪ クロスプラットフォームゲームエンジン ▪ C♯が利用可能 ▪ モバイル・デスクトップ、ブラウザ、 ゲーム機などの多数のプラットフォームに 対応 http://unity3d.com/jp/unity
  17. 17. Kinect ▪ センサーデバイス ▪ C♯のSDKがを利用して開発可能
  18. 18. Microsoft Azure ▪ Microsoft社が提供するクラウドプラット フォーム ▪ Visual Studioとの親和性が高い ▪ 各サービスでC♯のSDKを利用可能 https://azure.microsoft.com/ja-jp/
  19. 19. これからC♯を始めるってどうよ? ▪ 近年、日の目を浴びてきた言語だと思う ▪ 利用シーンは豊富でユーザー数も多い ▪ 今から入るのはチャンス
  20. 20. コミュニティのご紹介 ▪ コミュニティを活用して情報収集をしましょう ▪ 福岡でMicrosoft系のコミュニティ ▪ Csharp Fukuoka ▪ Japan Azure User Group Fukuoka(ふくあず) ▪ Win.tech.q
  21. 21. Csharp Fukuokaのご紹介 ▪ 福岡でCsharpに興味がある方向けのコミュニティ ▪ 2013年5月13日に結成 ▪ 過去に8回の勉強会を開催 ▪ 目安は3ヶ月に1回のペースで開催 https://www.facebook.com/groups/472380036165353
  22. 22. Csharp Fukuokaのご紹介 https://www.facebook.com/groups/472380036165353
  23. 23. Japan Azure User Group Fukuokaのご紹介 ▪ Azureコミュニティの福岡支部 ▪ インフラやアプリエンジニアが多数参加しています ▪ 月に1回ペースで勉強会を開催 https://www.facebook.com/groups/fukuazu
  24. 24. NET 5 Webアプリ開発スタイル
  25. 25. 2種類の .NET5 ▪ .NET 5 ▪ .NET Compiler Platform(Roslyn) によるコンパイル ▪ 新しいC#やVB.NET ▪ ASP.NET 5 ▪ side-by-side 実行できる .NET(ランタイムのインストールが不要に!) ▪ Roslynによる実行時コンパイル!(しかし遅い…) ▪ MVC6、SignalR 6、EF7 etc…
  26. 26. ASP.NET 5 ▪ Side-by-side実行による非ランタイムインストール実行 ▪ Roslynによる実行時コンパイル ▪ OWIN実装によるIISに依存しないASP.NET実行環境 ▪ Windows以外の開発&実行環境 https://github.com/aspnet http://aspnet.codeplex.com/
  27. 27. ASP.NET 5 ▪ 基本的にASP.NET vNextの名称が変わっただけ ▪ MVC 6 ▪ 実行時コンパイル ▪ IISを必要としないSelf Hosting ▪ VisualStudio 2015 で使用可能 ▪ プロジェクトテンプレートが従来の形と大きく異なる
  28. 28. ASP.NET 5 のプロジェクトテンプレート ▪ 設定ファイルにjsonを使用する。 ▪ global.json (プロジェクトの参照関係に使用)、project.json (プロジェクト設定) ▪ プロジェクトテンプレートにYeomanを使用する ▪ パッケージ管理にnpmとBowerを使用する ▪ タスク実行にGruntを使用する
  29. 29. npm、Bower、Grunt ▪ ASP.NETでは縁がなかったパッケージ管理&タスクランナー ▪ npm ▪ Node.jsで使用されているパッケージマネージャー、BowerとGruntが必要とする ▪ Bower(バウアー) ▪ フロントエンド用のパッケージマネージャー ▪ Javascriptライブラリの依存関係やバージョン管理を補助してくれる ▪ Twitter社が作ったらしい ▪ .NETerに解りやすく説明するなら、NuGetの様なもの
  30. 30. npm、Bower、Grunt ▪ Grunt ▪ Node.jsで動作するタスクランナー ▪ 定義ファイルで実行タスクを定義する ▪ JavaScriptの圧縮(minify)や結合 ▪ altJSのコンパイル
  31. 31. OmniSharp ▪ 様々なエディタで.NETを開発できるようにするプロジェクト ▪ MacやLinuxのエディタでも開発できるようにする計画 ▪ Sublime Text ▪ Atom ▪ Emacs ▪ Vim http://www.omnisharp.net/
  32. 32. C♯6.0のご紹介
  33. 33. C♯の歴史 C#1.0 2000年 C#2.0 2004年 C#3.0 2007年 C#4.0 2008年 C#5.0 2012年 C#6.0 2015年 クラス ジェネリクス ラムダ式 LINQ dynamic await/async Roslyn
  34. 34. Roslynとは? .NET Frameworkの次世代コンパイラプラットフォーム Compiler APIs • コンパイラ Feature APIs • Code Fixやリファクタリング等 Workspace APIs • プロジェクトファイルや参照関係
  35. 35. C♯6.0 Visual Studio 2015で使用可能(現在はRTM) 実はVisulaBasicも便利になります Roslyn ≒ C#6.0 大きな変更はなく、細かい修正が多い
  36. 36. C♯6.0の実装状況 Feature Example Auto-property initializers public int X { get; set; } = x; Getter-only auto-properties public int Y { get; } = y; Ctor assignment to getter-only autoprops Y = 15 Parameterless struct ctors Structure S : Sub New() : End Sub : End Structure Using static members using System.Console; … Write(4); Dictionary initializer new JObject { ["x"] = 3, ["y"] = 7 } Await in catch/finally try … catch { await … } finally { await … } Exception filters catch(E e) if (e.Count > 5) { … } Expression-bodied members public double Dist => Sqrt(X * X + Y * Y); Null propagation customer?.Orders?[5]?.$price String interpolation $"{p.First} {p.Last} is {p.Age} years old." nameof operator string s = nameof(Console.Write); #pragma #Disable Warning BC40008 Extension Add in collection initializers Improved overload resolution http://roslyn.codeplex.com/wikipage?title=Language%20feature%20status&referringTitle=Home
  37. 37. Auto-property initializers 自動実装プロパティの初期化がコンストラクタで可能になりました! class Person { public int Age { get;set; } public Person() { Age = 20; } } Before class Person { public int Age { get;set; } = 20; } Next
  38. 38. Getter-only auto-properties Getterのみの自動実装プロパティの初期化もできます class Person { public int Age { get { return this._age; } } private int _age = 20; } Before class Person { public int Age { get; } = 20; } Next
  39. 39. Using static members 静的クラスの静的メソッドは省略可能になります class Person { public void Say() { System.Console.WriteLine("Name is " + this.Name); } } Before using System.Console; class Person { public void Say() { Console.WriteLine("Name is " + this.Name); } } After
  40. 40. Await in catch/finally Catch句とFinally句でawaitが使用できようになりました try { //HodeHoge } catch (Exception e) { await Task.Delay(2000); } After Exception exception = null; try { //HodeHoge } catch (Exception e) { exception = e; } if (exception != null) await Task.Delay(2000); Before
  41. 41. Exception filters Catch句に条件式を付与する事ができるようになりました try { //HogeHoge } catch (Exception e) if (e.Data.Count > 10) { //例外処理 } After try { //HogeHoge } catch (Exception e) { if (e.Data.Count > 10) { //例外処理 } } Before
  42. 42. Null propagation nullチェックをシンプルに記述できます public int? GetNameLength(Person person) { if (person == null) return null; if (person.Name == null) return null; return person.Name.Length; } Before public int? GetNameLength(Person person) { return person?.Name?.Length; } After
  43. 43. nameof operator メンバや変数の名前を返す演算子 class Person { public string Name { get; set; } public Person(string name) { if (string.IsNullOrEmpty(name)) throw new ArgumentException("name" + " is NullOrEmpty"); this.Name = name; } } Before 文字列指定
  44. 44. nameof operator メンバや変数の名前を返す演算子 public string Name { get; set; } public Person(string name) { if (string.IsNullOrEmpty(name)) throw new ArgumentException(nameof(name) + "is NullOrEmpty"); this.Name = name; } After nameof演算子で タイプセーフ
  45. 45. String interpolation 文字列補完をする際に変数を直接指定できるようになりました Console.WriteLine("{0}×{1:2D}={2:0.0}", a, b, result); Before int a = 3; int b = 4; int result = a * b; Console.WriteLine($"{a}×{b:2D}={result:0.0}"); After
  46. 46. ご清聴ありがとうございました

×