2014/09/29

Windows 9でもWindows THでもどっちでもよい

このエントリーをはてなブックマークに追加

次期OS「Windows 9」の正式名称は「Windows TH」か?
http://gigazine.net/news/20140929-windows-th/

Windows8のよくないブランドイメージを払拭させるため、とあるけれど、ブランドイメージの問題か?とダイレクトに突っ込みを入れたくなります。

そもそもWindowsしか選択肢はない

イメージなんてどうあれ、Windows買うしかないんだからユーザーはWindowsを買うのです。販売店もベンダーも選択肢なんてないのです。これが悲しいところです。
なんかこそこそブランドイメージがどうとか気にしていても、いなくても、そんなことで変動するのは目先の変化でしかないでしょう。スタートメニューが復活して株価が大盛り上がりしたら、どんな茶番だよと思わずにいられない。
前のバージョンはなんだったのか、みたいな切り捨て戦略のしわよせは、結局、ユーザーだったりソフトウェア開発者に回ってくるのだから、誰の何の得にもならないわけです。せめて堂々と独占販売していただきたいものです。(堂々としているようにも見えるけど)
そして次のWindowsがとりあえず発表されても、みんなこぞって様子見しかしない。仕方ないのです。新しかったWindows8も、張り切って購入した人はばっさり切り捨てられたわけなんだから(※1)。そうして様子見してると、やっぱりWindows9(TH)も駄目だったかみたいな空気が流れて、改めて次世代Windowsとか言うんだろうか。だけどみんなWindowsを使うしか選択肢がないわけだから、このループ、どうなんだろう。破綻してないか。

※1)8.1とか8.1 Updateのアップデートも不安定でひどく、8持ちの人は最新バージョンでのクリーンインストールができなくなったのでした。


むしろ需要があるところを大切にしてほしい

パソコン離れとか言われてるように、正直、多くのユーザーはもはやPCを求めていない。XPの次はiPhoneであって、この先PCに戻ってきたりはしないのでしょう。LINEとツイッターとゲームしかしない人、特に若い人、たとえば来春からの一人暮らしの下宿に、わざわざPCを買うなんて予定はないという人は山ほどいるだろう。(ということは、ブロードバンドのプロバイダ契約をしないという人もいるわけで、そっちももう下火なんだな)

売れてるときは売れてるときで入れ食いだったはず。途端に、目に見えてそうじゃなくなると時代の節目って感じですね。
バカスカ売れた前時代を取り戻そうなんて無駄な足掻きなのです。次の新しい戦略を切り出すしかないでしょうね。
そもそもPC買わなくなった層は、流行り廃れに左右されやすい、一番目移りしやすい浅いところだと思う。彼らを中心に据えて、目新しいものを目標に対応してしまうと、実質的な価値がどんどん薄まってしまうようで困る。WindowsVistaもWindows8もそれで失敗したでしょう。
仕事でPCを手放せない需要はいくらでもあるんだから、そっちに目を掛けてほしいです。


あかん毒吐きすぎた。
Windows最高ですよ。だけど惜しいんです。根本的なところでもったいない。
賢い人が揃ってんだからもう少し頼みます。

20141001 追記
Windows10になりました。斜め上だった。9を飛ばすという斬新な発想。
話題性はあるけれど、後で振り返れば何だったんだと思わせる出オチ感がすごいある。そんなことで決めた名前ではないだろうけれど、名前にこだわってるってことは、やっぱり払拭したいんでしょうね。
そもそも一新して打ち出したのがWindows8だったわけだから、どうしようもないですね。
またごろっとGUIを変えるつもりかな。
Vista/7と8/8.1/10はセットですね。
もう勘弁してください。

2014/09/24

BootcampのWindowsが固まる

このエントリーをはてなブックマークに追加

頻発するというほどでもないけど原因不明で固まることがあります。うちのは、Mac mini(2012)、Bootcamp上のWindows7 64bitです。
たぶん熱暴走で決まりじゃないかなと。

現象

ディスプレイが真っ暗のまま復帰しないという現象でした。ディスプレイは切れるように設定していました。
画面が復帰しないだけだったら、そんなに大した問題ではない(こともないけど)のだけど、ネットワークの接続も切れているようで、要するに固まっている状態なわけです。電源は入っていて、ファンは回転し続けているようです。
強制終了させて、再起動させると、普通に起動する。

現象が発生したのは半年で過去3回。1回目と2回目は同じ日でした。それで、原因を掴みようがないのでWindowsアップデートとウィルスチェック(フル)を行って様子見していましたのですが、しばらくして3回目が何の関連もなく発生。

ハードが問題なのか、OS側の問題なのか、はたまた動いているソフトが問題なのか、切り分けが全然できないので悩みどころでした。BootcampとWindowsの組み合わせの問題だったら、かなり困ったことになってしまうこともあって非常に気持ち悪いです。
原因が解らないと対策の立てようがない。

熱暴走に行き着く

そうこうしているうちにまとめた情報から、一番可能性があるなと思っている、熱暴走という原因に行き着きました。

Bootcamp環境ではファンは変動しません | DOZLOG(どずろぐ)
MacBook Pro の冷却対策(基本はきっちり!)
http://www.dozlog.com/cooler_macbookpro2010/

MacProのファン回転数をBootcamp上から自由に変更可能に!!
http://blog.livedoor.jp/macmax99/archives/52134357.html
Bootcampはファンの制御が上手ではないらしいです。
それは知らなかったなー。

温度とファンの回転数を検証する

HWMonitorというツールを使って、温度とファンの回転数を調べてみる。
HWMonitor
http://www.cpuid.com/softwares/hwmonitor.html
ファンのところは1800RPMをうろうろ。それ以上にも以下にもならないようです。固定されているというのは間違いなさそう。そして何か作業をすると温度ががんがん上がっている。実際は70℃を超えていました。
(再現させるところまでやってないけどね)

まとめ

可能性の高そうな原因に行き着いたので、対策は後で考えることにする。うちのはあんまり頻度が高くないようなので、原因が解れば十分。
これから気温が落ち着いてきて、それでも再発しちゃうとか、頻度が増えてくるような事態になったら、本格的に対策を考えないとね。

夏場の暑さにやられちゃったのかなあ。
みんな結構固まっているんですかね。

2014/09/17

iPodTouch第6世代とiPod nano第8世代待ち

このエントリーをはてなブックマークに追加
iPod nano 8th generation concept
世の中、iPhone6に色めき立っているわけですが、あえてiPodシリーズに言及してみようと思います。
二年前の2012年から放置されているiPodTouch(5th)とiPod nano(7th)ですが、もうすぐアップデートされるものと楽観視しています。
何故なら、iPhone6が大きくなったから。音楽プレイヤーとしての需要は、iPhoneとは完全に別路線であるはずなので、小さい端末の存在は必須です。iOS8も使えるようになることだし、放置はありえない。当然このままなくなるなんて絶対ありえない!

iPod touchのバージョン遷移
第一世代:2007年9月
第二世代:2008年9月
第三世代:2009年9月
第四世代:2010年9月
第四世代(白):2011年10月
第四世代(16GB):2012年9月
第五世代:2012年10月

去年から待ちの人

ひたすら我慢して待っている人はいるんだろうなと想像します。
去年(2013年)も同じように出るぞ出るぞ、秋出るぞ、年末出るぞ、と言われて出なかったので、いつ出てもおかしくないと思いながら、ずーっと待ち続けている人もいるんじゃないでしょうか。
まあ今や自分もその一人だけれど、実際売れる製品のほうが頻繁に手塩に掛けて育ててくれそうで、渋っちゃうと、それが逆にずっと放置されてしまったり、そういう悪循環があるのかもしれません。しかし、我慢できずに、購入して次週に新製品発表とか、それだけは絶対に勘弁してほしい。
いつもなら、噂があって、こんなiPodほしいと勝手に想像したコンセプトイメージがあったりするのだけれど、みんな完全に忘れてしまったみたいです。iWatchじゃなくて、AppleWatchがすべて飲み込んでしまったようです。

Apple iPod Nano Coin pocket watch mockup

可能性がありそうなアップデート

もはや多機能化は不要なんだけど、iPodTouchとiPod nanoは完全遊びに特化した飛び道具的な形態であって欲しいです。しかしiOS8にアップデートして、すぐに変態解像度のiPodが出たらアプリ開発者は泣きますね。
かと言って、Apple Watchと被ってくるようなものは出せないでしょう。iPod nanoが第6世代に戻るような進化はありえないですね。Apple Watchが発売されてしばらくするまで放置されるとかは困るなあ。しかも先日のイベントでApple Watch発表して発売まで相当先とか、あまりにも今までなかった製品なので忘れてしまいそうです。

まあ、現状のiPodが音楽プレイヤーの完成形だと言われれば、うなだれるしかありません…。
そうなんです。音楽プレイヤーに後何を望むんだという感じはあります。
なので、イベント発表なしで、サイト上でこっそり新しくなるとすれば、デザイン据え置きのスペックちょい変更とかだったらありえない話ではないかなと予想します。
iPod nano(8th)は容量変更とWifi対応・GPS対応にプラスアルファ。iPodTouch(6th)はiPhoneを追随する形でCPUのアップデート(A7)と容量変更くらいか、それぞれお値段改定という感じかな。こんなだったら、しょぼいかなー。
秋のイベントも終わってしまったし、話題の矛先をAppleWatchに向けることを考えたら、わりと現実的な気もします。

放置、三年目

ちなみに、Apple製品で放置されているのって、iPod nano(7th)とiPod Touch(5th)と、あとMac mini(2012)ですね。
放置、三年目突入とかやめていただきたい。
それでも期待して待つけどね!

去年出なかったiPod touch6(第6世代)、発売日はいつ?

20140918 追記
Appleが新型iPadとOS X Yosemite発表で10月21日にイベント開催か
なんだイベントの噂がありますね。
じゃあ大丈夫。期待してましょう。

2014/09/16

今あるMacの性能比較

このエントリーをはてなブックマークに追加
今のMacの性能比較をするために便利です。
Mac Benchmarks
http://browser.primatelabs.com/mac-benchmarks

こういうベンチはPCの自作するときなんかに、用途と予算と性能を照らし合わせながら参考になる。性能比較をベンチだけでやるのは端的すぎる気はしますが、製品価格によるランク付けがなかなか難しいことを考えるとやむ得ないのです。そして見ていて楽しくなっしまうと、そんなことも忘れてしまう。
Macのベンチを見てても楽しいもので、今使ってるMac mini(2011)は、今のiMac(2013)よりもどのくらいの性能差があるのかとか、今の環境でも不都合がないのに間違ってワクワクしてしまうわけでした。

どのハードを使いたいかで選択するべき

Macにはデスクトップとノートで選択肢の幅がそんなにあるわけでもないので、比較対象はシンプルなものです。性能を気にするとしたら、買い替えのタイミングでしょうか。
例えば、新しく出現したiMacの廉価版が、MacBookAirと同じ性能だと考えると、ちょっと趣深いものがあります。もちろん、利用用途としては全然違うので、それを見越した選択になるのでしょう。

個人的にはMacの場合、どれを選ぶかというのは用途というよりも、むしろどのハードを使いたいかで選択するべきだと思います。そのくらい嗜好性が高い。

おすすめ

不躾ながら現時点(2014.09)での個人的なおすすめを書いておきます。勝手なおすすめです。
まず、新しいOSX(Yosemite)の配布があります。アップデートは無料配布なんだけど、システム上は最初から入ってたほうが望ましい。なので、それが出るまで購入は待つ。あと一月も待たなくていいはず。

シンプルに標準(廉価じゃないモデル)の最安、カスタムなしがおすすめです。
  • iMacなら、標準カスタムなし(21.5インチ2.7GHz、¥128,800)のやつが無難。何をするにしても、あとは、オーバースペックだと思う。(ゲームとかしたいなら別だけど)
  • MacBookProも標準カスタムなし(13インチ、2.6GHz Retinaディスプレイ、¥128,800)がいいと思う。容量(128GB)が厳しいかもしれないと思う人は考える必要があります。MacBookProも薄くなったので、MacBookAirにしなくてもモバイル性はあんまり変わりません。
  • とりあえずMacを始めたいという人は、Mac miniの最安モデルがおすすめ。

現在のMac miniとMacBookproでは、どちらが性能が高いですか- - Yahoo!知恵袋
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10129042365

2014/09/11

Appleイベント(2014秋)、求むiPod nano第8世代

このエントリーをはてなブックマークに追加
iPhone6とApple Watchという前評判の高い二つの製品が発表されて、浮足立っています。
もはやiPhoneは世の中に浸透しまくっているので、2年縛りから解放される世代の人たちは、買い替えを検討するのかな。
Apple Watchは音楽も聞けないし、新商品ということもあって開拓精神が必要ですね。

いろいろと感想はあるけれど、このタイミングで個人的にほしいのはiPod nanoでした。

求む、iPod nano第8世代

ジョギング用に、iPod nanoがほしい。求む、iPod nano第8世代。
音楽聞く用とジョギングに、iPod nanoを使うのは相当ありかもしれない、と思い始める。
iPod nanoが前回アップデートされたのは2012年。もうそろそろ来るかな、と実は期待していました。
第7世代のiPod nanoはWifi機能がなくてGPSもない。NIKE+を活かすためには速度とか、距離とかがアウトプットされるほうがモチベーションが違う。第8世代で踏襲されることを期待しているわけだけど、虫がよすぎるか。今はiPod Touchで走ってます。

iPhone5sはあるのだけれど、iPhoneをジョギングに持っていくというのはちょっとない。汗ばんだ手で乱暴に操作したくないし、走るには大きくて重い。普段持ち運ぶ分には、重いなんて感じないけれど、走るとやっぱり違う、と思う。それこそ、iPod nanoサイズが最適です。

ジョギングを始めた当時は、iPod Touchでも十分と思って、持ってジョギングしてた(今もそれでやってる)。NIKE+もあったし。当時というのは、4年くらい前の話で、もうみんな忘れているかもしれないけれど、iPhoneの厚みは今の倍くらいあった。iPod Touchを使ってたので、iPhone3GSとかはでかすぎる印象しかなかった。だけど相対的なもので、今はもっと小さな製品があることを考えたら、iPod Touchでも大きくて重く感じてしまうのです。

iPod Touchが壊れて使えなくなってしまったというわけではないから、まあ贅沢な話ではある、という意識もある。みんなどのくらいで買い替えとか考えるのだろう。自分は、およそ人によっては壊れているという判断をするものでも、壊れていないと言い張って使い続けるようだ(最近わかった)。iPod Touchも壊れていないとはいえ、ホームボタンの左が浮いている感じで押せば沈むという結構な状態ではある。充電がすぐ放電してしまったりもするし。このタイミングなら、買い替えできたかなあ。

Apple WatchとiPod nanoは機能的には近しくて似たようなものに思えるけど、製品としてはきっと全く違うんだろう(よくは解らないけど)。
だから、むしろこのタイミングでiPodの話はしなかったのかな、とも。今思えば、iPod nano 6世代目の次に、そのままApple Watchになるはずだったんじゃないだろうか。

TikTok LunaTik iPod nano 6G リストバンド 時計 イエロー(Yellow)

そもそもiPod nanoは継続されるのかな? なくなるという予想もありそう。次にアップデートされるかもしれないタイミングっていつなんだろう。
10月、11月とかに、何かあるなら待つけど…。
iOS、MacのOSX(Yosemite)が今秋と言ってたし、もうイベントはないですよね。

iPod Touchも第六世代が待機されてる状態だし。
もう、iPod Touchの第五世代を買っちゃうという選択も…。いや、iPhoneとiPod Touchの二台持ちってないよなあ。


iPod nano - wikipedia
http://ja.wikipedia.org/wiki/IPod_nano

2014/09/08

[C#]LINQで複数条件のファイルを抽出する

このエントリーをはてなブックマークに追加
Directory.GetFilesの引数ではpatternがワイルドカード(*と?)しか使えないので、複数の拡張子を条件に抽出するようなとき、たとえば*.jpg|*.pdf|*.epsというような書き方ができません。

複数条件のファイルの抽出

LINQを使うことで簡潔でした。LINQで書く必要はあんまりないかもしれませんが、まあ練習用です。
二つのデータの集合を照合させるという意味としても直接的な気がしてます。
string path = @"C:\Windows\Temp";
string[] patterns = {".jpg",".pdf",".eps"};
string[] files = Directory.GetFiles(path, "*.*");

var ret = files.Where(file => patterns.Any(pattern => file.ToLower().EndsWith(pattern)));
一文で書けました。

使ってるLINQメソッド
Where条件に当てはまるものを抽出
Anyいずれかが条件に当てはまるとtrueを返す

ファイルが条件に適合するかどうかの判定は、下の文です。
file.ToLower().EndsWith(pattern)
この部分を変更することで、正規表現に対応したりいろいろできそうです。

なお、patternsは適合率の高い拡張子を左に置くほうが、先に判定されるので処理効率がいいはずです。

サブフォルダ内のファイルも対象にする

おまけです。サブフォルダ内のファイルも対象にするには、DirectoryのGetFilesメソッドの引数にSearchOption.AllDirectoriesを指定してあげます。
string[] files = Directory.GetFiles(path, "*.*",SearchOption.AllDirectories);

2014/09/06

[C#]LINQを使った二重ループ(ネスト)の書き方

このエントリーをはてなブックマークに追加
ループ処理のなかでさらにループするような処理です。

LINQで二重ループ

LINQで多重ループするコードの書き方です。
例として、座標系に均等な点(Point)を作るコードを書きます。

// 二重ループの書き方
int[] list = { 10,20,30,40,50 };

// ①foreachを使う場合
List<Point> points1 = new List<Point>();
foreach(int x in list){
    foreach(int y in list){
        points1.Add(new Point(x, y));
    }
}

// ②クエリで書くとき
IEnumerable<Point> points2 =
    from x in list
    from y in list
    select new Point(x, y);

// ③メソッドで書くとき
IEnumerable<Point> points3 = list.SelectMany(x => list.Select(y => new Point(x,y)));
// SelectManyを使わないとIEnumerableが入れ子になる。IEnumerable<IEnumerable<Point>>

メソッドで書くときにしんどい

foreachと、クエリ式がものすごく簡潔に見えます。

メソッドで書いてると、あれ?どう書くんだ?と詰まってしまう。
list.Select(x => list.Select(y => new Point(x,y)));
とやると、当然ながら戻り値がIEnumerable<IEnumerable<Point>>という入れ子状態になるのです。
回避するため、SelectManyメソッドというがわざわざ用意されているようです。

見易さ、完結さとしては、ちょっと厳しいものがあるかな。
無理矢理一行にしている感じがあります。

三重ループだともう、書く気がしないですね。
そもそも、多重ループになるコードは見直したほうがいいっていう通説のほうが正しいのでしょうけれど。

2014/09/01

[C#]LINQを使用するメリット

このエントリーをはてなブックマークに追加
LINQを使用するメリットが解らなかったのです。
前の記事ではLINQについておさらいしました。
[C#]LINQを覚えた(ラムダ式と型推論も)

LINQを使用するメリットが解らなかった

さて、どうしてもLINQを使わないとできないことなんてないということが、わりとLINQを学習するきっかけを失わせる壁でした。今まで書いてたコードがLINQを使うとこうなるというのは解るのだけど、それの何がいいのかが全然納得いかなかったりするのです。LINQを使うと、foreachを書かなくて済むなんていうのだけれど、それのどこがメリットなのか解らない。
つまり、foreach書かないといけないときは、結局foreachで書くわけだから、最初からforeachで書けばいいじゃんと思ってしまう。foreachを書かなくていいことに何のメリットがあるんだろう? 書き方が完結になるとかいうのは、わざわざ特殊な省略してるってことじゃないのかと、特殊な省略なんて理解が中途半端だとしょうもないトラブルのもとにもなる、そういう懸念がずっとあった。
特殊な記述が増えてしまうのは紛らわしいだけで、今まで書いたコードを全部書き換えて、新しい記法の学習と、振る舞いの検証を強制されるだけじゃないかと思ってました。

たとえば、処理効率が全く必要ないところであっても、ループの中で変数宣言してるような書き方に生理的な嫌悪を抱いてしまう人は少なくないのではないかなと思います。近しいものがあって、きっとわざわざ学習しようなどと考えることがなかったのです。
よくありそうな誤解が、ループの効率と遅延実行についての仕組みです。これについては改めてまた書くかもしれません。

LINQを使用すれば意識が変わる

LINQ記法はデータの、集合に対するアプローチなのだということが理解できた。(なんかWikipediaにもそういう風にも書いていたかもしれない)

自分はまだ十分に書き慣れているとは言い難いし、めちゃくちゃ便利で人に薦めたいと思っているわけでもないのだけど、なんとなく自分の中でブレイクスルーがあったので、それについて書いておきます。的外れなことを言ってしまっていたらごめんなさい。

どういうことかというと、たとえばcolorsという集合から黄色のものだけを抽出して、newColorsという集合をつくるコードを例にします。

IEnumerable<Color> colors = CreateColors();
List<Color> newColors = new List<Color>();
foreach(Color color in colors ){
    if(color.isYellow()){
        newColors.Add(color);
    }
}
foreach文を使って書いているものは、細かな部品を意識的に組み合わせて意図する処理を表現しているというのが、普通なはずです。
LINQを使うと、このようになります。
IEnumerable<Color> colors = CreateColors();
IEnumerable<Color> newColors = colors.Where(c => c.isYellow());
書くときに意識することが全然違う(はず)。
ある集合を抽出する条件を設定するというコードなので、意味合いが直接的なのです。
foreachは当然だけど、データ集合に対するアプローチという意味合いはどこにもなくて、配列を順番に繰り返す構文でしかない。集合を抽出する条件でふるいに掛ける、という目的に合わせてforeachに分解したコードとして翻訳して書いているということなのです。

きっとLINQを書き慣れるほど、その書き方にどっぷり慣れるのだろうと予想していて、なるほど、慣れてしまった人は他の言語でループに翻訳展開する過程がものすごく億劫になるのかもしれません。
コードとしても、データの集合に対するアプローチが直接的にコードとして展開できなら、細かなところに目がいかなくていいので可読性も増すのかなと。

記法がシンプルだったら、利用頻度もあがるだろうし、コード展開もそれに合わせて設計するようになるというスパイラルがあるわけですね。

設計をLINQに合わせて行うようになって、さくさく書ける代わりに、大きな認識違いをしてしまって非効率極まりないコードを走らせてしまうという可能性も十分にあるわけだけど、考え方をシンプルにするということは突っ走るためには何よりいいことなので、失うものを気にするよりも享受するほうがよさそうです。

軽々に流行りの情報に引っ掻き回されるのは何より疲弊してしまう困ったことなのだけど、警戒して高い壁を作りすぎて新しいことの受け入れを拒絶しすぎるのも困りごとですね。あんまりコード書く機会もなかったから仕方ないのだけど、価値を見出してしまった以上、これからがんがん使っていきたいと思います。

[C#]LINQを覚えた(ラムダ式と型推論も)

このエントリーをはてなブックマークに追加
しばらくC#から遠ざかっていたわけですが、LINQを覚えました。
C#はじゃんじゃん記法が追加されていて、いつの間にか完全に取り残されてしまっていました。
今更LINQについて書きます。

LINQの存在はもちろん知ってはいたけれど、ちょっと他の言語との乖離が気持ち悪くて踏み込めないでいました。とてつもなく便利だ、という噂も入ってくるので気にはなっていました。
最近、ひょんなことから、しばらくぶりにC#を書いてて、LINQとやらもちょっと使ってみたところ、何ともあっさり吸収できた。なんてことなかった。
そのときの、自身のブレイクスルーを書いておくことにします。

LINQについておさらい

LINQはリンクと呼びます。

Wikipedia LINQ-総合言語クエリ

総合言語クエリと聞いても何のことやらわかりませんが、2007年末に出現しました。そんな前なのです。.NET Framework 3.5(C# 3.0/Visual Basic 9.0)から、LINQ(統合言語クエリ)という書き方ができるようになりました。SQLみたいな書き方でデータ集合に問い合わせができるというものです。
あんまり詳しくここでは説明しませんが、サンプルコードだけ書いておきます。

①foreach
IEnumerable<Color> colors = CreateColors();
List<Color> newColors = new List<Color>();
foreach(Color color in colors ){
    if(color.isYellow()){
        newColors.Add(color);
     }
}

上のforeachのコードは、配列colorsから、黄色のものだけを抽出して、newColorsという新しい配列を作成するというコードです。
上のコードをざっくりLINQでの書き換えると次のようになる。(細かいところはさておき)

②LINQ(クエリ式)
IEnumerable<Color> colors = CreateColors();
IEnumerable<Color> newColors =
     from color in colors 
     where color.isYellow()
     select color;
LINQには、クエリ式とメソッド呼び出しの書き方があります。上はクエリ式。

③LINQ(メソッド式)
IEnumerable<Color> colors = CreateColors();
IEnumerable<Color> newColors = colors.Where(c => c.isYellow());

どちらも動作の仕組みは同じ(コンパイラがループに展開するだけ)です。
foreachのnewColors がListなのは、新しい配列にするのに必要だっただけで他意はありません。LINQをListとするためには、ToArray()を呼び出せばList型にしてくれます。
さらっと流すつもりですが、ここは結構大切なところなので、遅延実行について学習するとよいかと思います。

自分は、メソッド呼び出しのほうが書きやすかった。
ラムダ式と呼ばれる(c => c.isYellow())という記述が鬱陶しく思うかもしれません。だけど書き方のパターンを知ってしまえば、応用なんて後からついてきます。

ついでにラムダ式と型推論についてのブレイクスルー

ラムダ式もあんまり書いてなかったので、一緒に覚えました。
ラムダ式も、これがこう省略されて最終的にこう書ける、という順序説明があるのだけど、そんなもん全部すっとばして、こう書けるという一点だけを覚えて、後は、慣れてから応用を伸ばしていけばいいように思いました。理解しないまで書かないという制限が、姿勢を委縮させる気がします。正直、自分も、このあたりよくわからんが、まあ動いています。
それから、戻り値にvarを書くサンプルがありますが、まだちょっと違和感を覚えます。かと言って、全部強い型付けで書くと長ったらしいコードになるのは解っている。
var newColors = colors.Where(c => c.isYellow());

このくらいがいいかなと。
IEnumerable<Color> newColors = colors.Where(c => c.isYellow());
つまり、戻り値となる型を最初に特定して宣言している意味があって、型の整合性が取れなかったらコンパイルするタイミングで解るということですね。LINQに慣れない状態でvarを連発すると、戻り値が全然違ってたりするのが怖い。

[雑記] 型推論の是非
http://ufcpp.net/study/csharp/sp3_var.html

強い型付けであってほしい、と最初は感じものの、全部varでもわりと問題ないそうです。
このあたりは、この先、自分も書きながら調整していこうと思います。

長いのでこの辺で、次に続く。
[C#]LINQを使用するメリット