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.
LINQ雑談
西区プログラム勉強会

李充根
LINQの雑談します
• C#勉強会の時発表したものの使い回しです(笑)

• 最近LINQを使ってみて面白かったので紹介しま
す
• 去年までは全然使ったことなかったのでまだわ
からないことや曖昧なこといっぱいあるので変
なところはお構いなく...
LINQとは?
• LinQ(リンク)は、2011年4月17日にデビューし
た福岡県福岡市を拠点に活動する日本のローカ
ルアイドルグループ。
• 2012年のスローガンは「出ろ! しゃべれ! スベれ!
笑え! 馬鹿になれ! 笑う門には福来たる!...
LINQとは?
• 統合言語クエリ (LINQ, Language INtegrated
Query)とは、.NET Framework 3.5において、様々
な種類のデータ集合に対して標準化された方法
でデータを問い合わせることを可能にする、...
つまり?
• 簡単な書き方でデータの操作ができる
• SQL、XML、リストなどを操作できる
• 普通のメソッド構文(ラムダ式を使用)でもかけ
るけどクエリ構文で書くと簡単!
• 使わなきゃ損損!
• いつまで古い文法で縛られているの?(C#全...
書き方
• メソッド構文

ワンライナー!

▫ var hoge = numbers.Where(num => num % 2 == 0).OrderBy(n => n);

• クエリ構文
▫ var hoge= from num in n...
ちなみに
• JavaでもJava8からラムダ式が採用されて
StreamAPIが実装されているので似たようなこと
できるよ
• でも一度streamに変換しなきゃいけないしナン
カ垢抜けてない……

• 詳しくはきしださんの記事を↓
• ht...
なんで使い始めたか?
• 数万件のCSVデータから数千件の検索用CSVと
マッチするデータを抽出
• それと同時にアンマッチデータも抽出
• 社内で検討→excel?DB(SQL)?スクリプト?
• エクセルは面倒なので論外、DBに一旦入れて処...
よし、プログラムつくろう
• 最初はパッと書いてぱっと修正できるスクリプ
ト言語を検討
▫ そもそも俺あんまりスクリプトかけない
▫ (Pythonかじった程度、PHPは読むだけ、Ruby??)

• Java,C#ならわかる!
▫ そういえば...
使ってみて
• 予想以上に簡単にデータ処理ができる
• 糖衣構文(クエリ構文)になっているから見やすい

• 一方
▫ アンマッチデータの取得どうするんだ?
▫ 最初は抽出データと検索データ照合したけどM*Nの時
間がかかって遅い!
▫ (抽出...
Twitterで嘆いたら
• すぐに面識のない人から返事が!
▫ (LINQ星人ってボットが拾ってくるみたい)
▫ GroupJoinを使えばいいんだよ!

• GroupJoinはJoinしたものをグループでまとめて
くれる
• Defaul...
結果
• 速度が数百倍!
• ほぼストレスなく実行できた
• その他
• 遅延評価(遅延実行?)→キャッシュないので重い
処理は気をつけないと何度も実行される
• 回避するにはToList()でリスト化してしまう
サンプルプログラム紹介
その他
• Xamarin(mono)でももちろん使える
▫ Xamarin for Android使えばAndroid開発でも使える
 前回発表を参考

• 個人で開発する分ならいいけどグループで開発
するにはみんなのスキル向上が必要
▫ ...
ご清聴ありがとうがございました!
Prochain SlideShare
Chargement dans…5
×

LINQ雑談

  • Soyez le premier à commenter

LINQ雑談

  1. 1. LINQ雑談 西区プログラム勉強会 李充根
  2. 2. LINQの雑談します • C#勉強会の時発表したものの使い回しです(笑) • 最近LINQを使ってみて面白かったので紹介しま す • 去年までは全然使ったことなかったのでまだわ からないことや曖昧なこといっぱいあるので変 なところはお構いなく突っ込んでね • C#勉強会の時は友人に「LINQよくわからん」と 言われました、わからないことは適宜聞いてく ださい
  3. 3. LINQとは? • LinQ(リンク)は、2011年4月17日にデビューし た福岡県福岡市を拠点に活動する日本のローカ ルアイドルグループ。 • 2012年のスローガンは「出ろ! しゃべれ! スベれ! 笑え! 馬鹿になれ! 笑う門には福来たる! 雑草ア イドルLinQよ行くぞ!」である (出典:wikipedia)
  4. 4. LINQとは? • 統合言語クエリ (LINQ, Language INtegrated Query)とは、.NET Framework 3.5において、様々 な種類のデータ集合に対して標準化された方法 でデータを問い合わせることを可能にする、言 語に統合された機能のことである。開発ツール はVisual Studio 2008から対応している。 (出典:wikipedia)
  5. 5. つまり? • 簡単な書き方でデータの操作ができる • SQL、XML、リストなどを操作できる • 普通のメソッド構文(ラムダ式を使用)でもかけ るけどクエリ構文で書くと簡単! • 使わなきゃ損損! • いつまで古い文法で縛られているの?(C#全般) • • • • delegate event ラムダ式 etc…
  6. 6. 書き方 • メソッド構文 ワンライナー! ▫ var hoge = numbers.Where(num => num % 2 == 0).OrderBy(n => n); • クエリ構文 ▫ var hoge= from num in numbers where num % 2 == 0 orderby num select num; ラムダ式 ラムダ式 可読性! SQL的構文
  7. 7. ちなみに • JavaでもJava8からラムダ式が採用されて StreamAPIが実装されているので似たようなこと できるよ • でも一度streamに変換しなきゃいけないしナン カ垢抜けてない…… • 詳しくはきしださんの記事を↓ • http://d.hatena.ne.jp/nowokay/20130504
  8. 8. なんで使い始めたか? • 数万件のCSVデータから数千件の検索用CSVと マッチするデータを抽出 • それと同時にアンマッチデータも抽出 • 社内で検討→excel?DB(SQL)?スクリプト? • エクセルは面倒なので論外、DBに一旦入れて処 理しても良かったけど客先にDB入れるの大変 • プログラム簡単に組んで処理しよう!
  9. 9. よし、プログラムつくろう • 最初はパッと書いてぱっと修正できるスクリプ ト言語を検討 ▫ そもそも俺あんまりスクリプトかけない ▫ (Pythonかじった程度、PHPは読むだけ、Ruby??) • Java,C#ならわかる! ▫ そういえばデータ操作ならLINQ便利らしい  SQLっぽいことやりつつデータの整形ができる  二つのデータのマッチもJOIN使えばすぐできる! • LINQ使えば楽じゃん!
  10. 10. 使ってみて • 予想以上に簡単にデータ処理ができる • 糖衣構文(クエリ構文)になっているから見やすい • 一方 ▫ アンマッチデータの取得どうするんだ? ▫ 最初は抽出データと検索データ照合したけどM*Nの時 間がかかって遅い! ▫ (抽出がほぼ一瞬なのに対して数分かかる) • vivisukeさんがN^2はダメでlog(N^2)までだよねって 言ってたことが身を持って実感できたよ
  11. 11. Twitterで嘆いたら • すぐに面識のない人から返事が! ▫ (LINQ星人ってボットが拾ってくるみたい) ▫ GroupJoinを使えばいいんだよ! • GroupJoinはJoinしたものをグループでまとめて くれる • DefaultIfEmptyでマッチしなかったデータも使え るのでアンマッチリストも作れる!
  12. 12. 結果 • 速度が数百倍! • ほぼストレスなく実行できた • その他 • 遅延評価(遅延実行?)→キャッシュないので重い 処理は気をつけないと何度も実行される • 回避するにはToList()でリスト化してしまう
  13. 13. サンプルプログラム紹介
  14. 14. その他 • Xamarin(mono)でももちろん使える ▫ Xamarin for Android使えばAndroid開発でも使える  前回発表を参考 • 個人で開発する分ならいいけどグループで開発 するにはみんなのスキル向上が必要 ▫ とは言ってもすでに.net4.5の時代だしそろそろみ んな使えてもいいはず • スクリプト言語で同じような処理したいな ▫ 関数型使えばいいのかい? ▫ Haskell勉強中
  15. 15. ご清聴ありがとうがございました!

    Soyez le premier à commenter

    Identifiez-vous pour voir les commentaires

  • ssusere51aa6

    Dec. 6, 2014

Vues

Nombre de vues

1 046

Sur Slideshare

0

À partir des intégrations

0

Nombre d'intégrations

57

Actions

Téléchargements

5

Partages

0

Commentaires

0

Mentions J'aime

1

×