Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

大人の基礎C#【Niigat.NET 2015-10】

4,287 views

Published on

Niigata.NET 2015-10の発表資料です。

Published in: Technology
  • Be the first to comment

大人の基礎C#【Niigat.NET 2015-10】

  1. 1. Microsoft MVP for .NET(C#) Since 2003 Mitsuhito Ishino
  2. 2.  名前  石野 光仁  @AILight  所属  Microsoft MVP for C# 2003 - 2014  Microsoft MVP for .NET 2015 –  コミュニティ ▪ Niigata.NET ▪ アイライト主催 ▪ http://www.ailight.jp
  3. 3.  セッションの目的  プログラミングの基礎を学ぶ  C#、大人の基礎を学ぶ  セッションのゴール  明日から実践できる知識を得る  C#を使って、ステップアップできるようになる
  4. 4. プログラミングの上達ためには、 何をしたらいい? 何が必要?
  5. 5. 1. 上手くなりたいと“強く“思うこと 2. うまくて、安くて、速い を目指す 3. 多読
  6. 6.  考えることが大切  日々の繰り返しでは、上達はしない  意識すると、少しずつ改善する  下手な苦手な部分が見えてくる ▪ 良くない部分を改善させるのが上達への近道 得意 苦手完璧
  7. 7.  うまい  バグがない  再利用する価値がある  安い  コードが“短く”書かれている  メモリの使用量が少ない 短い = メモリ使用量が少ない = 安い  速い  実行速度
  8. 8.  プログラムをとにかく読む  うまくなりたいと意識している事が大切 ▪ 自分の苦手な部分に注目する ▪ プログラムのバランスに注目する  機能でプログラムを見る ▪ 一行を読めても意味がない ▪ 前処理 ▪ 本処理 ▪ 後処理 前処理 本処理 後処理 ループ
  9. 9. 1. 上手くなりたいと“強く“思うこと 2. うまくて、安くて、速い を目指す 3. 多読  プログラムを書かなければ  バグが生まれない  メモリを使わない  CPUを使わない(最速) 繰り返す
  10. 10. C#で、ステップアップ
  11. 11. 1. 言語仕様を学ぶ 2. ランタイムを学ぶ 3. 短く書くようにする
  12. 12.  マイクロソフトが開発したマルチパラダイムプ ログラミング言語。強い型付け、命令型、宣 言型、手続き型、関数型、ジェネリック、オブ ジェクト指向の要素を持つ  設計者:アンダース・ヘルスバーグ
  13. 13. Visual Studio .NET Framework C# Visual Studio .NET (2002) .NET Framework 1.0 1.0 Visual Studio .NET 2003 .NET Framework 1.1 1.2 Visual Studio 2005 .NET Framework 2.0 2.0:ジェネリック、Nullable Visual Studio 2008 .NET Framework 3.0 .NET Framework 3.5 3.0:LINQ、型推論 、 拡張メソッド Visual Studio 2010 .NET Framework 4.0 4.0:dynamic 名前付引数 Visual Studio 2012 .NET Framework 4.5 5.0:async/await Visual Studio 2013 .NET Framework 4.5.1 6.0:自動プロパティの拡張 【 .NET Frameworkのバージョンを整理する】 http://www.atmarkit.co.jp/ait/articles/1211/16/news093.html
  14. 14.  iOS、Androidなど各種モバイル端末に向け クロスプラットフォーム開発機能の強化  .NET Framework 4.6、Windows 10対応  C# 6、Visual Basic 14、TypeScript 1.5  ASP.NET 5対応  Roslyn採用などによる言語解析やIDEサ ポートの改善
  15. 15.  まず、読みましょう!!  どこで読めるのか?  C:Program Files (x86)Microsoft Visual Studio 14.0VC#Specifications1041  CSharp Language Specification.docx
  16. 16.  .NET Framework に型パラメーターという概 念を導入します。型パラメーターを使用すると、 クラスやメソッドがクライアント コードで宣言さ れ、インスタンス化されるまで、1 つ以上の型 の指定を遅延させるクラスとメソッドを設計で きます。
  17. 17.  null 許容型値型が表せる値かnull 値を持つ ことが出来ます  例  Int:-2147483648 から 2147483647 null
  18. 18.  プログラミング言語において、読み書きのし やすさのために導入される構文であり、既に 定義されている他の構文の(人間にとってよ り理解しやすい)書換えとして定義されるもの のことである。
  19. 19.  暗黙的に型指定されたローカル変数宣言で は、宣言されるローカル変数の型は、その変 数の初期化に使用される式から推論されま す。
  20. 20.  統合言語クエリ (LINQ) は、強力なクエリ機 能を C# 言語の構文へと拡張する、Visual Studio 2008 で導入された機能のセットです。 LINQ には、データを照会したり更新したりす るための、容易に覚えることのできる標準的 なパターンが採用されており、あらゆる種類 のデータ ストアをサポートするようにテクノロ ジを拡張できます。
  21. 21.  拡張メソッドを使用すると、新規の派生型の 作成、再コンパイル、または元の型の変更を 行うことなく既存の型にメソッドを "追加" でき ます。 拡張メソッドは特別な種類の静的メ ソッドですが、拡張された型のインスタンス メ ソッドのように呼び出します。
  22. 22.  dynamic という新しい型が導入されています。 この型は静的な型ですが、dynamic 型のオ ブジェクトは静的な型チェックをバイパスしま す。 ほとんどの場合、object 型を使用する場 合と同様に機能します。 コンパイル時には、 dynamic として型指定された要素はあらゆる 操作をサポートすると見なされます。
  23. 23.  名前付き引数と省略可能な引数が導入され ています。 名前付き引数を使用すると、パラ メーター リストのパラメーターの位置ではなく、 パラメーター名に引数を関連付けることに よって、特定のパラメーターの引数を指定で きます。 省略可能な引数を使用すると、一部 のパラメーターの引数を省略できます。
  24. 24.  非同期プログラミングを使用することによって、 ボトルネックとなる幾つかの部分に、全体のパ フォーマンスが引きずられる事のないように改 良することができます。 しかしながら、従来の 非同期アプリケーションのプログラミングはその 性質から、コードの記述が難しく、デバッグでは 問題の再現が難しくなりがちで、またそのコード のメンテナンスも複雑になっていました。  C# では、非同期処理がより簡単に実現できま す。
  25. 25.  自動実装プロパティを使用することで、プロ パティ アクセサーに追加のロジックが必要な い場合は、プロパティをより簡潔に宣言でき ます。  C# 6 以降では、フィールドと同様に自動実装 プロパティを初期化することができます。
  26. 26.  Dispose パターンと呼ばれる、オブジェクトを破 棄するパターンによって、オブジェクトの有効期 間に順番が付けられます。 Dispose パターンは、 ファイルおよびパイプ ハンドル、レジストリ ハン ドル、待機ハンドル、アンマネージ メモリ ブロッ クのポインターなど、アンマネージ リソースにア クセスするオブジェクトでのみ使用されます。 こ れは、使用されていないマネージ オブジェクトの 解放にはガベージ コレクターが非常に有効です が、アンマネージ オブジェクトは解放できないた めです。
  27. 27. メモリ: Class Name public void TestMethod() { var className = new ClassName() className.Write() } ガベージコレクション OS資源: ガベージコレクション 待ち リソース占有 メモリ: Class Name OS資源:
  28. 28. メモリ: Class Name public void TestMethod() { var className = new ClassName() className.Write() className.Dispose() } ガベージコレクション OS資源: ガベージコレクション 待ち リソース占有 リソース解放 OS資源: リソース占有
  29. 29.  アセンブリ、モジュール、メンバー、パラメー ター、およびその他のマネージ コード内のエ ンティティに関する情報を、そのメタデータを 調べることで取得する型が含まれています。 これらの型は、イベントのフックやメソッドの 呼び出しなど、読み込んだ型のインスタンス を操作する目的にも使用できます。
  30. 30.  よくある話として、DBのテーブル設計で、1日 ~31日をフィールドとして持っている場合が ある  Date1, Date2, Date3, Date….., Date31
  31. 31. C#を上達させるには? 何をしたらいい? 何が必要?
  32. 32. 1. オブジェクト分析のトレーニング 2. 手続なプログラムからのステップアップ 3. 拡大解釈による破たん
  33. 33.  身近なものを分析する  テレビは?  エアコンは?  プログラミングでも同じ  想像できる物の設計図を書きだす作業 ▪ あるべき場所に、あるべきものを書く ▪ メンバ変数 ▪ メソッド ▪ プロパティ
  34. 34.  Class  エアコン  Property  電源状態(On/Off)  運転モード(冷房/暖房)  温度(xx℃)  Method  電源On()  電源Off ()  Set運転モード(冷/暖)  Set温度(xx)
  35. 35.  手続なプログラムの問題点  手順を正確に書く必要がある ▪ 前処理を忘れるとバグになる(初期化ミス) ▪ 順番を間違えるとバグになる  宣言なプログラムを検討する  使いたい機能を宣言する(一行プログラミング) ▪ 前処理をしない ▪ 順番を入れ替えてもバグになら無い
  36. 36. 手続なプログラム  LinkLabel_Click  TextBox.ShowCalcDialog  TextBox_KeyDown  If (e.key == Keys.F4) ▪ TextBox.ShowCalcDialog  TextBox_Leave  TextBox.CloseCalcDialog 宣言なプログラム  Set電卓機能 (LinkLabel, TextBox) 金額
  37. 37.  入力の条件を、無限大まで拡大する  引数の数、パラメータ数  値のサイズ  ・・・なんでも  破たん状況を見て、よりベターな選択をする  状況の良い方を選ぶことで、 間違いの少ないプログラムへ
  38. 38. C#を上達させるには? 何をしたらいい? 何が必要?
  39. 39.  向上心を忘れずに!!  短いプログラムを心がけよう!!  変数名や関数名を短くするってことではない  C#を使って、ステップアップしよう!!
  40. 40.  Visual Studio  トップページ https://www.microsoft.com/ja-jp/dev/default.aspx  Visual Studio Community (無償) https://www.microsoft.com/ja- jp/dev/products/community.aspx  Visual Studio Code (mac版 無償) https://www.visualstudio.com/products/code-vs
  41. 41. http://www.ailight.jp

×