森理 麟(moririring)のプログラマブログ

ゲームプログラマ森理 麟がのプログラムの話題を中心に書くブログです。

C#

C#でログファイルを出力する少し冴えたやり方

この内容は、C# Advent Calender 2012への参加記事です。森理はAdvent Calender初参加です。毎日他の人の記事を読んでいますが、ishisakaさんのを読み始めた時は「被ったか?」と思って焦りました。読み進めていったら大丈夫だったのでホッとしました。来年…

VisualC#2010ExpressにおけるNUnitの基本的な設定の仕方

森理はTDDBC大阪に参加して以来C#でテストにはまっています。TDDBC岡山には無謀にもTAで参加しました。フレームワークはNUnitを使用しています。MSTestを使わない理由は、単純にVisualStudio(以下VS)がExpressなので入っていないからです。 C#+NUnitでの基本…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その17 エラー処理に注意せよ

バイナリファイルにご用心 前回全てのファイルを読み込めるようにしました。これによりtxtではないファイルを読み込んでしまう可能性が出ました。つまり、バイナリファイルをロードする危険性です。StreamReaderでバイナリファイルを処理するとエラーになっ…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その16 ファイル選択ダイアログのこだわり

プログラムを書かなくてもコーディング 実は森理も前回書いた内容で徹底してドラッグを実装しているわけではありません。ユーザーとしてフォームへドラッグする方が分かりやすいかなとはずっと思っていました。ブログで問題点を纏めている時に思いつきました…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その15 ドロップする対象について

テキストボックスにドラッグが分かりやすい さて、問題も解決してドラッグ&ドロップは実装出来ました。使いやすいUIにするのに、もう1つ気を使うポイントがあります。それはドロップするコントロールをどれにするかです。今回はテキストボックスに情報を入…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その14 ドラッグ&ドロップ実装続き

サンプル通り!しかしフォルダをドラッグしてみると 前回MSのサンプルに乗っているドラッグ&ドロップの方法を書きました。しかし、この方法でも今回のケースは最適ではありません。この実装では、フォルダがドラッグされた時にドロップ可能なアイコンに変わ…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その13 ドラッグ&ドロップ実装

ドロップチェック 次にDragDropイベントを作ります。これはドロップ時に呼ばれるイベントです。先ずドロップされたものがファイルかどうかチェックします。チェックはe.Data.GetDataPresent(DataFormats.FileDrop)で出来ます。但し、このチェックでは厳密に…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その12 テキストボックスへのこだわり2

テキスト変更時の処理 それでは1行テキストボックスのメソッドの説明です。ポイントとしてはテキスト変更時にロード処理を書くだけです。ただし、書かれたファイルが存在するかでガードが必要です。もしガードがないと、テキストにファイルパス以外のものが…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その11 完成してもさらなるこだわりを

more effective! 前回までで、簡単なアプリを作って、それを見直してきました。一通り見直しも完了して、一旦アプリは完成しました。しかし、こだわりをもって見なおすポイントはまだまだあります。今回から新たなこわだりで、さらにアプリを見なおしていこ…

C#アプリの作り方入門〜「きほん」の「ほ」〜 わんくま同盟 大阪勉強会 #47のスライド公開

スライド C#アプリの作り方入門 View more presentations from 森理 麟

C#アプリの作り方入門〜「きほん」の「ほ」〜 その10 ココまでのおさらい

それでは、ここまでのおさらいをして完成品を比べてみましょう。 今回までの変更内容 コントロールへのこだわり 内容 ボタン 三点リーダー 一行テキストボックス ReadOnly=false ファイル選択ダイアログ DefalutExt=txt,Filter=txtファイルl*.txt 文字コード…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その9 レイアウトの基準に補助線を使う

Visual Studioの機能でレイアウト それではVisual Studioの機能を使って、綺麗なレイアウトにしてみましょう。森理がコントロールを配置する時によく採用するのが補助線がONになる場所です。これはまさにレイアウトを意識するまでは気づきもしなかった機能で…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その8 デザインセンスはプログラム的アプローチでカバーする

レイアウトが苦手ならルールを作れ さて、前回レイアウトが重要と言いました。しかし、プログラマはそこまでレイアウトが得意では無いと思います。デザインセンスに自信がないのであれば、ルールを作るのが無難な方法だと思います。ルールがあれば、統一感が…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その7 ジョブズがいなければ気づけなかったこと

盛り付けが綺麗なら食べてもらえる 美味しい料理を作る時に、調理以外で絶対に外せないポイントがあります。実際にどれほど美味しく出来た料理であっても盛り付けが駄目なら価値は半減です。逆に味はイマイチでも、盛りつけが綺麗であればとりあえず食べても…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その6 一通りのチェック完了。でも、まだ。

料理の時は皿までチェック 問題編に用意した材料はこれで全てです。後は盛り付けられたお皿もチェックしましょう。C#アプリに於けるお皿、それはフォームです。現状でフォームはサイズが変更出来てしまい変えられるとデザインが崩れます。 フォームのサイズ…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その5 複数行テキストボックスのこだわり

世の中にゃshift_jisの方が多い 選択したファイルはStreamReaderでロードしますが、ファイル名だけを渡すと文字コードはUTF-8です。しかし、通常のテキストファイルはshift_jisの方が多いです。殆どのテキストエディタでのデフォルトのセーブがshift_jisだか…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その4 ファイルを読み込む時のこだわり

テキストボックスへのこだわり 引き続き、コントロールへのこだわりを書きます。次のこだわりはテキストボックスです。テキストボックスもこだわりを込めるポイントが多いコントールだと思います。一行テキストボックスと複数行テキストボックスではポイント…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その3 ボタンへのこだわり点3つ

←押さずにはいられない こだわらない状態達へ 前回ファイルを選択して中身がテキストなら表示をするアプリを作りました。しかし、これはただ作っただけの状態です。なんのこだわりもありませんし、そもそもアプリとしては未完成と呼べる状態です。それでは1…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その2 シンプルアプリを作る

シンプルアプリを作る それでは最初にファイルを選択して中身がテキストなら表示をするアプリを作ってみましょう。何も考えずにただ作るだけなら5分もかからず作れてしまうと思います。しかし、たったこれだけのアプリでも実は多くのこだわりがあります。先…

C#アプリの作り方入門〜「きほん」の「ほ」〜 その1 神は細部に宿る

←C# 入門書の次に読むべき本 プログラマが入門書の次に読むべきだと思っている本はEffectiveシリーズです。森理は、C++,STL,C#を読みましたが、Effectiveシリーズに外れなしだと断言出来ます。入門書で言語仕様などを把握したら、次はその仕様の実践での使い…

久しぶりにTwitter用クライアントソフト「クッキーツイート」をバージョンアップしました。

久しぶりにTwitter用クライアントソフト「クッキーツイート」をバージョンアップしました。かなりのバグを直して、「mention、リツイート、お気に入り」などを取得可能にして、リツイート、お気に入り、返信機能もつけました。クッキーツイートのHPからダウ…

今年は関西でWindowsハッカソンを開催したい

今年は勉強会を自分で開催してみたい! 森理は2011年は、勉強会に12回出席して、話す方もLT(ライトニングトーク)を1回、50分のスピーチを1回やらせて頂きました。今年は、自ら勉強会の企画・開催をしたいと思っています。まだ、やろうと思っただけで、会場ど…

クッキーツイートの高速化 その21 わんくまスピーチのスライド #CookieToEat

わんくまでスピーチしました。スライドの内容は実際に話した時とは少し変えています。変えた理由は、話す前提じゃないと意味が分からない内容だったからです。これは、でも、スピーチの時点から資料だけで意味が分かるように作るべきだったと思います。今回…

クッキーツイートの高速化 その20 高速化は終わらない(終) #CookieToEat

←ここに行きたいさて、とりあえず今回でクッキツイートの高速化は最後です。またネタが溜まったら21回目もあるかも?元々わんくま同盟で高速化について話そうと思ったので、そのネタとして書き始めました。最初、そのスピーチはマルチスレッドとマルチコアに…

クッキーツイートの高速化 その19 ユーザーが望む高速化 #CookieToEat

←ユーザーサポートさて、高速化について色々書いてきました。しかし遅いかどうかを判断するのはプログラマではありません。ユーザーが高速化を望むのは何時でしょうか?この高速化は、速くする方ではなく遅くしない方です。 自作ツールについて他人と話して…

クッキーツイートの高速化 その18 先に入れる #CookieToEat

←個人的には後乗せサクサク派もう一つポイントとなるのはcontinueとbreakです。マルチコアの時この2つはどうなるでしょうか。実はマルチコア専用のStopメソッドとBreakメソッドがあります。しかし、森理がさわったところこれらは使わない方が良いと思いまし…

クッキーツイートの高速化 その17 インデクストラブル #CookieToEat

←気をつけろ!数字の順には進まない前回マルチコア化はループの置き換え1行と言いました。しかし、BackgroundWorkerで考えるとReportProgressの数は正しく渡りません。これはマルチコアでのループのまわり方が順番に増えていくのでは無いからです。例えばルー…

クッキーツイートの高速化 その16 一行書き換え、驚くべき速さ #CookieToEat

←驚きの白さに驚いたことない それではマルチコアの説明です。マルチコアプログラミングを組みたいのであればVisual C# 2010を使うことをお勧めします。2010であればExpress Edtionで問題ありません。2008以下でもそれほど難しいわけではないですが、2010の…

クッキーツイートの高速化 その15 マルチスレッドまとめ #CookieToEat

←一マル・チル・スレッド・みんな使うよこれでBackgroundWorkerによるマルチスレッドの使い方は説明しました。かなり簡単にマルチスレッドが実装出来たと思います。ただ簡単に実装出来ても、マルチスレッドはやはり難しい概念です。これを機にマルチスレッド…

クッキーツイートの高速化 その14 BackgroundWorkerの全盛りソース #CookieToEat

←全盛りは一般人の限界は超えてない?ではStatusStripを使ってToolStripProgressBarをつけたBackgroundWorkerのソースを書きます。ToolStripProgressBarは普段表示させないほうが自然です。使う直前に表示させましょう。初期化処理でToolStripProgressBarを…