SlideShare uma empresa Scribd logo
1 de 40
LINQ
について
コードの品質について
 プログラミングをしてる時に遭遇する様々な問題
 変数名が適当だと何のための変数なのかわかりにくい
 ブロックのネストが深くなると読みにくい
 ローカル変数が多いと何がどうなっているか混乱しやすい
 etc…
コードの品質について
 何も意識せずにコードを書いているとついついネストは深くなってし
まいますよね
 例として、
あるカレンダーセットの中の
カレンダーの中の
予定のうち、
1日以内に作成されたものを抽出する
コードをお見せします
コードがわかりにくくなる例
class CalendarSet
{
public Calendar[] Calendars;
}
class Calendar
{
public Schedule[] Schedules;
}
class Schedule
{
public DateTime ScheduleCreatedAt;
}
このようなクラス構成だとします
コードがわかりにくくなる例
CalendarSet calendarSet;
var recentlyCreatedSchedules = new List<Schedule> { }; <- 結果を格納するもの
コードがわかりにくくなる例
CalendarSet calendarSet;
var recentlyCreatedSchedules = new List<Schedule> { }; <- 結果を格納するもの
foreach (var calendar in calendarSet.Calendars) <- カレンダーセットのカレンダーでループ
{
}
コードがわかりにくくなる例
CalendarSet calendarSet;
var recentlyCreatedSchedules = new List<Schedule> { }; <- 結果を格納するもの
foreach (var calendar in calendarSet.Calendars) <- カレンダーセットのカレンダーでループ
{
foreach (var schedule in calendar.Schedules) <- カレンダーの予定でループ
{
}
}
コードがわかりにくくなる例
CalendarSet calendarSet;
var recentlyCreatedSchedules = new List<Schedule> { }; <- 結果を格納するもの
foreach (var calendar in calendarSet.Calendars) <- カレンダーセットのカレンダーでループ
{
foreach (var schedule in calendar.Schedules) <- カレンダーの予定でループ
{
if (schedule.ScheduleCreatedAt > DateTime.Now.AddDays(-1))
{ ↑ 1日以内に作成された予定を
}
}
}
コードがわかりにくくなる例
CalendarSet calendarSet;
var recentlyCreatedSchedules = new List<Schedule> { }; <- 結果を格納するもの
foreach (var calendar in calendarSet.Calendars) <- カレンダーセットのカレンダーでループ
{
foreach (var schedule in calendar.Schedules) <- カレンダーの予定でループ
{
if (schedule.ScheduleCreatedAt > DateTime.Now.AddDays(-1))
{ ↑ 1日以内に作成された予定を
recentlyCreatedSchedules.Add(schedule); <- 結果リストに格納
}
}
}
コードがわかりにくくなる例
CalendarSet calendarSet;
var recentlyCreatedSchedules = new List<Schedule> { };
foreach (var calendar in calendarSet.Calendars)
{
foreach (var schedule in calendar.Schedules)
{
if (schedule.ScheduleCreatedAt > DateTime.Now.AddDays(-1))
{
recentlyCreatedSchedules.Add(schedule);
}
}
}
↑ 結果を格納する一時変数が必要
ネストが深くて
理解しにくい
コードがわかりにくくなる例
 今の例をLINQを使って書きなおしてみましょう
LINQを使う場合
calendarSet.Calendars.SelectMany(c => c.Schedules.Select(s => s))
.Where(s => s.ScheduleCreatedAt > DateTime.Now.AddDays(-1));
LINQを使う場合
calendarSet.Calendars.SelectMany(c => c.Schedules.Select(s => s))
.Where(s => s.ScheduleCreatedAt > DateTime.Now.AddDays(-1));
!?!?!?!?!?
LINQを使う場合
calendarSet.Calendars.SelectMany(c => c.Schedules.Select(s => s))
.Where(s => s.ScheduleCreatedAt > DateTime.Now.AddDays(-1));
1行で書けてしまう
ネストも深くならない
余計なローカル変数もない
シンプルなコードで可読性も高い
LINQとは
 Language Integrated Query
 日本語にすると “言語に統合されたクエリ”
LINQの種類
 LINQにはいくつも種類があり、代表的なもので
 LINQ to Objects
 LINQ to SQL
 LINQ to Entities
 LINQ to XML
など
LINQ to Objects
 今回はオブジェクトを扱う LINQ to Objectsについて
 LINQ to Objectsとは
 あらゆるコレクション(IEnumerableを実装するオブジェクト)をLINQで操作可
能にする
 例えば
 条件を満たす要素を取得
 特定の値が含まれているか
 操作を加える
 ソート
 等 ができる
クエリ式とメソッド式
 LINQにはクエリ式とメソッド式の2つの記法がある
 メソッド式
 C# のメソッドと同じように”.”でチェーンして記述する方式
 var q = collection.Where(x => x > 10).Select(x => x * x);
 クエリ式
 SQLのようなクエリ構文でLINQを記述する方式
 var q = from x in collection where x > 10 select x * x;
クエリ式とメソッド式
 基本的にメソッド式を使う(一般的にも)
理由は
 クエリ式は必ず
from **** select ****
の形式になるので、Select()をしていないにも関わらずselectが必要
になり、何の処理が行われているかわかりにくい
クエリ式とメソッド式
 クエリ式にはない構文がある
 First() Single() 等
メソッド式
collection.Where(x => x > 10).Select(x => x * x).First();
クエリ式
(from x in collection where x > 10 select x * x).First();
無理やり使おうとするなら、一度クエリにしてから(カッコで囲んで)呼ぶ
クエリ式とメソッド式
 ただし、クエリ式のほうが優れている点もある
 ReactiveExtensionsを使って非同期処理を実装するとき
 複数の値を次のメソッドの引数として渡すとき
 メソッド式でも匿名型を用いることで、できないこともない
 など
が今の時点では使う機会はないので存在だけ知っていればよい
LINQの代表的なメソッド
 Select
 SelectMany
 Where
 All/Any
 OrderBy/OrderByDescending
 Contains
 Skip/SkipWhile
 Take/TakeWhile
 First/FirstOrDefault
 Concat
 ToArray/ToList
LINQの代表的なメソッド
 Select
 シーケンスの値を一様に変換する
var numbers = Enumerable.Range(1,10);
var number = numbers.Select(x => x * 2);
 数字を2倍にしたものが帰ってくる
LINQの代表的なメソッド
 ポイント
 基本的に次のメソッドには2つ以上の値を渡すことはできないが、匿名型を
使用することによって、疑似的にすることができる
LINQの代表的なメソッド
 匿名型を使って引数を次の標準クエリ演算子へ渡す
var names = new[] { "Taro" , "Jiro" , "Saburo" , "Shiro" };
names.Select((name, index) => new { Name = name, Index = index })
.Where(o => o.Name.Length == o.Index )
.Select(o => o.Name + o.Index);
1.NameとIndexを持つ匿名型のシーケンスを作成し、
2.Nameの文字数とIndexが一致するものを選択し、
3.NameとIndexを結合した文字列のシーケンスが帰ってくる
LINQの代表的なメソッド
 SelectMany
 シーケンスの各要素を1つのシーケンスに平坦化します。
var items = new[] {
new[] {1,2,3,4},
new[] {10,12,14},
new[] {20,22,24}
};
var result = items.SelectMany(item => item);
 平坦化されたシーケンス {1,2,3,4,10,12,14,20,22,24} が返ってくる
http://pro.art55.jp/?eid=1303957
LINQの代表的なメソッド
 Where
 条件に合致するものを取得する
var numbers = Enumerable.Range(1,10);
numbers.Where(x => x % 2 == 0);
 偶数の数列を取り出している
LINQの代表的なメソッド
 All/Any
全部の値/一つ以上の値 が条件を満たすかを判定する
var numbers = Enumerable.Range(1,10);
numbers.Any(x => x % 2 == 0);
numbers.All(x => x > 3);
 一つ目は偶数がシーケンスに含まれているかを判定
 二つ目はシーケンスに含まれているすべての数字が3より大きいか判定
LINQの代表的なメソッド
 OrderBy/OrderByDescending
 シーケンスをソートする
var names = new[] { "Taro" , "Jiro" , "Saburo" , "Shiro" };
var persons = names.Select((name, index) =>
new { Name = name, Age = index * 2 });
persons.OrderByDescending(p => p.Age);
 匿名型のAgeで降順でソートされた結果が返ってくる
 { Name = waguchi, Age = 6 }
 { Name = wada, Age = 4 }
 { Name = yamaguchi, Age = 2 }
 { Name = yamada, Age = 0 }
LINQの代表的なメソッド
 Contains
 シーケンスに特定の値が含まれているかを調べる
var names = new[] { "Taro" , "Jiro" , "Saburo" , "Shiro" };
bool b = names.Contains("hanako");
 namesに”hanako”が含まれているか判定
LINQの代表的なメソッド
 Skip/SkipWhile
 先頭からn個を除外/先頭から条件を満たすものを捨てる
var names = new[] { "Taro" , "Jiro" , "" , "Saburo" , "Shiro" };
names.Skip(3);
names.SkipWhile(name => name.Length <= 0);
 先頭から3要素を除外
 "Saburo" , "Shiro“
 要素の長さが0以下のものを除外
 "Taro" , "Jiro" , "Saburo" , "Shiro"
LINQの代表的なメソッド
 Take/TakeWhile
 先頭からn個の要素を取得/先頭から条件を満たすものを取得
var names = new[] { "Taro" , "Jiro" , "" , "Saburo" , "Shiro" };
names.Take(3);
names.TakeWhile(name => name.Length > 4);
 先頭から3要素を取得
 "Taro" , "Jiro" , ""
 要素の長さが4より大きいのものを取得
 "Saburo" , "Shiro"
LINQの代表的なメソッド
 First/FirstOrDefault
 シーケンスの最初の値を取得する
 FirstOrDefaultは要素が見つからない場合は既定値を返します。
var numbers = Enumerable.Range(3,10);
numbers.First();
var strings = new String[] {};
strings.FirstOrDefault();
 それぞれ
 3
 null
が返ってくる
LINQの代表的なメソッド
 Concat
 2つのシーケンスを連結する
var numbers = Enumerable.Range(1,5);
var numbers2 = Enumerable.Range(15,20);
numbers.Concat(numbers2);
 numbersとnumbers2を連結した値
 { 1 , 2 , 3 , 4 , 5 , 15 , 16 , 17 , 18 , 19 , 20 }
 が返ってくる
LINQの代表的なメソッド
 ToArray/ToList
 Array/Listに変換
var numbers = Enumerable.Range(1,10);
numbers.ToArray();
numbers.ToList();
 それぞれ
new[] {1,2,3,4,5,6,6,7,8,9,10};
new List<int> {1,2,3,4,5,6,6,7,8,9,10};
 と同じものが帰ってくる
LINQを使うときの注意点
 LINQにはListのForEach()がない
 LINQは副作用がないのでForEachは実装されていない
 forEach構文をつかうことは可能
 ToList().ForEach()はシーケンスを一度Listに変換していて、
処理が多くなり、メモリ消費量も多くなるため、使ってはいけない
var collection = new[] { 1 , 2, 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
× collection.ToArray().ForEach(i => System.Console.Write(i));
○ foreach ( var i in collection )
{ System.Console.WriteLine(i); }
LINQを使うときの注意点
 LINQのCount()は使用しない
 Countはクエリが実行されるたびに、シーケンスの要素を数えなおすため、
必要以上に処理が走ってしまう
 もし個数を数えたい場合は、一度リストにしてから数える
var collection = new[] { 1 , 2, 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
int count = collection.ToList().Length;
LINQを使う場合
先ほどの例に戻りますが
calendarSet.Calendars.SelectMany(c => c.Schedules.Select(s => s))
.Where(s => s.ScheduleCreatedAt > DateTime.Now.AddDays(-1));
各カレンダーの予定を平坦化されたものができる↑
そのなかから1日以内に作成されたものを取得してくる↑
LINQまとめ
コードの品質を高め、
生産性を上げることができます。
LINQが使える場所では
絶対に使いましょう。
おわり

Mais conteúdo relacionado

Mais procurados

マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ増田 亨
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門増田 亨
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!mosa siru
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方増田 亨
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル増田 亨
 
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれいまさら聞けないselectあれこれ
いまさら聞けないselectあれこれlestrrat
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発Takafumi ONAKA
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要かHiromasa Oka
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みTakeshi Ogawa
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方Shigenori Sagawa
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと増田 亨
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組みYuta Shimada
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーyoku0825
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)Yoshitaka Kawashima
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法yoku0825
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターンSoudai Sone
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計増田 亨
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミングPreferred Networks
 

Mais procurados (20)

マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチマイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
 
ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門ドメイン駆動設計のためのオブジェクト指向入門
ドメイン駆動設計のためのオブジェクト指向入門
 
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
 
ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方ドメインオブジェクトの見つけ方・作り方・育て方
ドメインオブジェクトの見つけ方・作り方・育て方
 
Tackling Complexity
Tackling ComplexityTackling Complexity
Tackling Complexity
 
ドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイルドメイン駆動設計という設計スタイル
ドメイン駆動設計という設計スタイル
 
いまさら聞けないselectあれこれ
いまさら聞けないselectあれこれいまさら聞けないselectあれこれ
いまさら聞けないselectあれこれ
 
グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発グルーミングしながら進めるプロダクト開発
グルーミングしながら進めるプロダクト開発
 
アジャイルにモデリングは必要か
アジャイルにモデリングは必要かアジャイルにモデリングは必要か
アジャイルにモデリングは必要か
 
さくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組みさくっと理解するSpring bootの仕組み
さくっと理解するSpring bootの仕組み
 
良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方良い?悪い?コードコメントの書き方
良い?悪い?コードコメントの書き方
 
ドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったことドメイン駆動設計に15年取り組んでわかったこと
ドメイン駆動設計に15年取り組んでわかったこと
 
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
【CNDT2022】SIerで実践!クラウドネイティブを普及させる取り組み
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
Where狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキーWhere狙いのキー、order by狙いのキー
Where狙いのキー、order by狙いのキー
 
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
 
MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法MySQLで論理削除と正しく付き合う方法
MySQLで論理削除と正しく付き合う方法
 
PostgreSQLアンチパターン
PostgreSQLアンチパターンPostgreSQLアンチパターン
PostgreSQLアンチパターン
 
3週連続DDDその3 ドメイン駆動設計 戦略的設計
3週連続DDDその3  ドメイン駆動設計 戦略的設計3週連続DDDその3  ドメイン駆動設計 戦略的設計
3週連続DDDその3 ドメイン駆動設計 戦略的設計
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 

Semelhante a C#を始めたばかりの人へのLINQ to Objects

C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~Fujio Kojima
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~Fujio Kojima
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみようKentaro Matsui
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)Masahiro Hayashi
 
C#coding guideline その2_20130325
C#coding guideline その2_20130325C#coding guideline その2_20130325
C#coding guideline その2_20130325Yoshihisa Ozaki
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26Yoshihisa Ozaki
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)Masahiro Hayashi
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語るAkira Takahashi
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜JustSystems Corporation
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義JPCERT Coordination Center
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2Masatoshi Tada
 
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Yukiko Kato
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?Kenji Nakamura
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」Kaz Aiso
 
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているかJ qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているかHisashi Aruji
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 

Semelhante a C#を始めたばかりの人へのLINQ to Objects (20)

C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
C# 式木 (Expression Tree) ~ LINQをより深く理解するために ~
 
C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~C# LINQ ~深く知って、使いまくろう~
C# LINQ ~深く知って、使いまくろう~
 
「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう「Html sql」で図書館hpにアクセスしてみよう
「Html sql」で図書館hpにアクセスしてみよう
 
Project lambda
Project lambdaProject lambda
Project lambda
 
初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)初心者講習会資料(Osaka.r#6)
初心者講習会資料(Osaka.r#6)
 
C#coding guideline その2_20130325
C#coding guideline その2_20130325C#coding guideline その2_20130325
C#coding guideline その2_20130325
 
C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26C# コーディングガイドライン 2013/02/26
C# コーディングガイドライン 2013/02/26
 
初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)初心者講習会資料(Osaka.R#7)
初心者講習会資料(Osaka.R#7)
 
C++0x 言語の未来を語る
C++0x 言語の未来を語るC++0x 言語の未来を語る
C++0x 言語の未来を語る
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
Javaチョットデキルへの道〜JavaコアSDKに見る真似したいコード10選〜
 
Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義Javaセキュアコーディングセミナー東京第4回講義
Javaセキュアコーディングセミナー東京第4回講義
 
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
ステップ・バイ・ステップで学ぶラムダ式・Stream api入門 #jjug ccc #ccc h2
 
Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】Javaプログラミング入門【第7回】
Javaプログラミング入門【第7回】
 
JavaのGenericsとは?
JavaのGenericsとは?JavaのGenericsとは?
JavaのGenericsとは?
 
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
【DELPHI / C++BUILDER STARTER チュートリアルシリーズ】 シーズン2 Delphi の部 第5回 「配列 と レコード 」
 
J qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているかJ qmobiはjqueryから軽量化しているか
J qmobiはjqueryから軽量化しているか
 
What is template
What is templateWhat is template
What is template
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 

Último

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000Shota Ito
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdffurutsuka
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directoryosamut
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。iPride Co., Ltd.
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxAtomu Hidaka
 

Último (9)

PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000PHP-Conference-Odawara-2024-04-000000000
PHP-Conference-Odawara-2024-04-000000000
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
新人研修のまとめ       2024/04/12の勉強会で発表されたものです。新人研修のまとめ       2024/04/12の勉強会で発表されたものです。
新人研修のまとめ 2024/04/12の勉強会で発表されたものです。
 
UPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdfUPWARD_share_company_information_20240415.pdf
UPWARD_share_company_information_20240415.pdf
 
20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory20240412_HCCJP での Windows Server 2025 Active Directory
20240412_HCCJP での Windows Server 2025 Active Directory
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
Amazon SES を勉強してみる その12024/04/12の勉強会で発表されたものです。
 
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptxIoT in the era of generative AI, Thanks IoT ALGYAN.pptx
IoT in the era of generative AI, Thanks IoT ALGYAN.pptx
 

C#を始めたばかりの人へのLINQ to Objects