10日でおぼえるC♯入門教室(arton)|翔泳社の本
  1. ホーム >
  2. 書籍 >
  3. 10日でおぼえるC♯入門教室

10日でおぼえるC♯入門教室


形式:
書籍
発売日:
ISBN:
9784798128566
価格:
本体2,800円+税
仕様:
B5変・448ページ
分類:
プログラミング・開発

本書籍の他の形式を確認する

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

C#を基礎からしっかり学べる1冊

本書はC#を基本から学びたい人のための入門書です。サンプルを実際に作りながら学べるので、自分のペースできちんとC#を身に付けることができます。演算子やラムダ式から始まり、Windows 8タブレットアプリの開発手法までフォロー。C#初心者はもちろん、再学習をしたい人にもおすすめの1冊です。


CHAPTER01 開発環境の準備と操作ガイド

LESSON01 Visual Studioをインストールしよう
LESSON02 プロジェクトを作ろう
LESSON03 プログラムを実行しよう

 

CHAPTER02 対話型プログラムでC#の基本をマスターしよう

LESSON04 現在時刻を表示しよう
LESSON05 カウンターを作ろう
LESSON06 足し算をしよう
LESSON07 例外を捕まえよう
LESSON08 いろいろな計算しよう

CHAPTER03 電卓プログラムでオブジェクト指向とラムダ式をマスターしよう

LESSON09 クラスを作ろう
LESSON10 継承を使おう
LESSON11 ラムダ式を使って計算しよう
LESSON12 プッシュボタン式電卓を作ろう

CHAPTER04 情報収集プログラムでデータの取得と分類をマスターしよう

LESSON13 HTMLソースを表示しよう
LESSON14 HTMLからリンクを抽出しよう
LESSON15 データの管理方法をマスターしよう
LESSON16 コレクションからデータを抽出しよう

CHAPTER05 テキストエディターでファイルの読み書きをマスターしよう

LESSON17 テキストを保存しよう
LESSON18 テキストを読み込もう
LESSON19 複数の文字コードに対応しよう
LESSON20 安全にファイルを保存しよう

CHAPTER06 射的ゲームでオブジェクトの継承をマスターしよう

LESSON21 Formの上にオブジェクトを描画しよう
LESSON22 いろいろな的を作ろう
LESSON23 弾を飛ばそう
LESSON24 当たり判定を実装しよう

 

CHAPTER07 サウンドプレイヤーでデータの利用と同期を学ぼう

LESSON25 Waveファイルの内容を調べよう
LESSON26 逆再生Waveファイルを作ろう
LESSON27 非同期再生をしよう
LESSON28 音声合成をしよう

 

CHAPTER08 ソースコード閲覧プログラムで制御構造を学ぼう

LESSON29 ソースファイルのコメントと文字列を色づけしよう
LESSON30 行番号を表示しよう
LESSON31 状態をオブジェクトに変えよう
LESSON32 ソースコードをコンパイルしよう

 

CHAPTER09 リモコンプログラムで単体テストを利用した本格的なプログラミングを学ぼう

LESSON33 Webサーバを内臓したプログラムを作ろう
LESSON34 サーバ機能を切り離そう
LESSON35 HTML表示用リモコンを作ろう
LESSON36 ジュークボックスを作ろう

 

CHAPTER10 パラパラマンガでWindowsストアアプリのプログラミングを学ぼう

LESSON37 アプリケーションの枠組みを作ろう
LESSON38 お絵かきアプリケーションを作ろう
LESSON39 サスペンドから復帰できるようにしよう
LESSON40 パラパラマンガを完成させよう

付属データはこちら

書籍への問い合わせ

正誤表、追加情報をご確認の上、こちらよりお問い合わせください

書影の利用許諾について

本書籍に関する利用許諾申請はこちらになります

  • Lesson14~16のサンプルエラーについて

    chapter4「情報収集プログラムでデータの取得と分類をマスターしよう」のLesson14~16で扱うサンプルについて
    本書掲載内容のままプログラムを記述すると、高い可能性でCodeZineからエラーが返されることが判明いたしました。

    CodeZineのサイトがWebリクエストに含まれるUser Agent(ブラウザの種類を示す文字列)情報を確認しているため、
    本書のサンプルのようにUserAgentを含まない要求を拒否するようです。
    また、複数のリクエストを連続的に実行した場合も高頻度でエラーとなります。
    このため、本文のリストを以下のように修正し、ダミーのUser Agentの設定と、各リクエストの間に待ち時間を
    入れるようにしてください。
    具体的なコードの修正は下記の通りです。

    P.144 リスト2
    24行目と25行目の間に、User Agentを設定するコードを挿入します。
    client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");

    上記のコードで、ClientオブジェクトのHeadersコレクション(Webリクエストのヘッダ情報)に、UserAgent文字列を
    設定します。

    P.155 リスト3
    47行目と48行目の間に、User Agentを設定するコードを挿入します。
    client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");

    P.158 リスト5
    110行目と111行目の間(上記の47、48行目の間に1行挿入しているため、実際は111行目と112行目の間となります)で、
    System.Threading.ThreadクラスのSleepメソッドを呼び出して、実行を一時停止します。
    ThreadクラスのSleepメソッドはstaticメソッドで、パラメータで指定したミリ秒間、呼び出したスレッドの実行を
    スリープ(停止)させます。

    この箇所に挿入することで、各言語ページのリクエストを送信する前に必ず指定した時間の待機時間を設定します。
    ここでは300を指定して、300ミリ秒を待機時間に設定しています*1。
    System.Threading.Thread.Sleep(300);

    なお、ここでは行番号のずれを最小にするために、System.Threading.Threadと表記しています。
    System.Threadingの部分はソースの先頭で、他のネームスペースと一緒にusingしても構いません。

    P.169 リスト3
    61行目と62行目の間に、User Agentを設定するコードを挿入します。
    client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
    P.171 リスト5
    147行目と148行目の間(実際は上記の61行目と62行目の間に1行挿入しているため、148行目と149行目の間となります)
    System.Threading.Thread.Sleep(300);

    *1Webアクセスを行うプログラムでは、サイトに連続してリクエストを送信して過剰な負荷をかけないように
    プログラミングするのが鉄則です。
    本書のサンプルではリクエスト数が限定されていることから、この処理を怠っていました。
    このため、読者の皆様にご迷惑をおかけしたことをお詫びします。
  • CodeZineのHTMLの変更などにより、Lesson13から16のサンプルが動作しなくなった件への対応

    ★サンプルの更新
    CodeZineのHTMLの変更などに合わせて、Lesson13から16のサンプルが動作しなくなった件への更新情報です。

    ●Lesson13-16.zipについて

    [ Lesson13-16.zipのダウンロード]

    ○Lesson13

    第1刷
    ----------------------------------------------------
    ・CodeZineのサーバーアプリケーションの変更により、HTTPクライアントからのリクエストにユーザーエージェント
     (Webブラウザーの種類を示す情報)が無い場合、応答が返りません。
     Lesson13-16.zipのように、WebClientオブジェクトの生成後、ユーザーエージェントを指定してください。
     なお、指定する文字列には特に決まりはないため、このサンプルではMyUserAgentを指定しています。

    ▲Form1.cs:25行目を追加。HttpRequestHeader(HTTPリクエストヘダー)のUserAgentに、MyUserAgentを追加


    24: var client = new WebClient();
    25: client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
    26: try



    第2刷
    ----------------------------------------------------
    ・上記の点について、本文中では修正してありますが、他のLesson14以降およびサンプルはそのままとなっているため、
     同様に修正が必要です。

    ○Lesson14

    第1刷、第2刷
    ----------------------------------------------------
    Lesson13同様、ユーザーエージェントの設定が必要です。

    ▲Form1.cs:84行目を追加


    82: using (var client = new WebClient())
    83: {
    84: client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
    85: var uri = GetCsharpUri(ReadPage(client, "http://codezine.jp/"));



    また、CodeZienのHTMLの記述方法が変わったため、そのままではリンクの抽出ができません。55行目の正規表現を以下の
    ように修正してください。

    ▲Form1.cs:55行目を修正


    55: var regex = new Regex(@"(<a¥s+)(href=""(/article/detail/[^""]+"">[^<]+</a>))");



    この正規表現では、/article/detail/で始まるURIを抽出するように変えています。

    ○Lesson15

    第1刷、第2刷
    ----------------------------------------------------
    Lesson13同様、ユーザーエージェントの設定が必要です。

    ▲Form1.cs 108行目を追加


    106: using (var client = new WebClient())
    107: {
    108: client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
    109: var toppage = ReadPage(client, CodeZineTop);



    また、Lesson14と同様にHTMLの記述方法の変更に伴う修正が必要です。
    また著者の表示がなくなったことに対応する必要もあります。
    以下のように正規表現を修正することで、URI、タイトル、サマリーの抽出が可能となります。

    ▲Form1.cs 83行目を修正


    83: var regex = new Regex(@"<a¥s+href=""(/article/detail/[^""]+)"">([^<]+)</a>[^p]+p>¥s*([^<]+)</p", RegexOptions.Singleline);



    上記の修正により正規表現のグループ番号がずれることと、著者名が取得できなくなったことから、88行目以降を次のように
    修正します。


    88: list.Add(new Article
    89: {
    100: Uri = match.Groups[1].Value,
    101: Title = match.Groups[2].Value,
    102: Author = String.Empty,
    103: Summary = match.Groups[3].Value
    104: });



    102行目では、著者名として空文字列(StringクラスのEmptyプロパティを利用します)を設定しています。

    ○Lesson16

    第1刷、第2刷
    ----------------------------------------------------
    Lesson13~15と同様に修正が必要です。

    ▲Form1.cs:97行目の正規表現を修正。106行目、著者名にString.Emptyを設定。107行目グループ番号を3にする。


    97: var regex = new Regex(@"<a¥s+href=""(/article/detail/[^""]+)"">([^<]+)</a>[^p]+p>¥s*([^<]+)</p", RegexOptions.Singleline);
    98: try
    99: {
    100: foreach (Match match in regex.Matches(html))
    101: {
    102: list.Add(new Article
    103: {
    104: Uri = match.Groups[1].Value,
    105: Title = match.Groups[2].Value,
    106: Author = String.Empty,
    107: Summary = match.Groups[3].Value
    108: });
    109: }
    110: }



    ▲Form1.cs 145行目を追加


    143: using (var client = new WebClient())
    144: {
    145: client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
    146: var toppage = ReadPage(client, CodeZineTop);



    ●Lesson15-16-new.zipについて

    [Lesson15-16-new.zipのダウンロード]

    Lesson13-16.zipの修正では、著者名に空文字列を設定することでとりあえず動作するようにしています。
    しかし、それではLesson16のListBoxの選択変更によって表示を変更する処理の動作を見ることができません。
    この修正では、Authorプロパティの代わりにDateプロパティを使うように修正してあります。
    これによって、Lesson16ではリストボックスに表示された日付を選択して記事を変更することができます。
    それ以外の点、ユーザーエージェントの設定などはLesson13-16.zipと同様なため、詳細については説明を割愛します。

ご購入いただいた書籍の種類を選択してください。

書籍の刷数を選択してください。

刷数は奥付(書籍の最終ページ)に記載されています。

現在表示されている正誤表の対象書籍

書籍の種類:

書籍の刷数:

本書に誤りまたは不十分な記述がありました。下記のとおり訂正し、お詫び申し上げます。

対象の書籍は正誤表がありません。

最終更新日:2015年07月30日
発生刷 ページ数 書籍改訂刷 電子書籍訂正 内容 登録日
1刷
練習問題Q9Testプロジェクト
Q9Testプロジェクト-UnitTest1.cs内のTestCallAsyncメソッド、およびTestCallSyncメソッドを複数回テスト実行すると失敗することが判明しました。
下記より修正を施したUnitテストのファイルをダウンロードのうえ、差替えをお願いします。 http://www.shoeisha.com/book/hp/10days/down/index.html#9784798128566
2013.07.04
1刷 053
側注*4の3行目
2刷
-演算子をデクリメント演算子と呼びます。
--演算子をデクリメント演算子と呼びます。
2013.04.03
1刷 053
「数値のカウントアップ」8行目
2刷
C#には同様に1減少させる-演算子が用意されています。
C#には同様に1減少させる--演算子が用意されています。

53ページで「-演算子」となっている箇所はすべて「--演算子」です。
2013.02.19
1刷 076
表1 演算子
2刷
& 論理積 左項と右項の論理和を求める | 論理和 左項と右項の論理積を求める
& 論理積 左項と右項の論理積を求める | 論理和 左項と右項の論理和を求める
2013.04.08
1刷 096
側注*1の6行目
2刷
overrite(上書き)
overwrite(上書き)
2015.07.30
1刷 127
側注*4の5行目
2刷
IActionButtonを
IButtonActionを
2015.07.29
1刷 135
リスト2の24行目の次にコード1行とその注釈を追加
2刷
var client = new WebClient(); try
var client = new WebClient(); client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent"); ―Webサーバーがブラウザーの種類を判断できるように、UserAgentプロパティを設定する
try

これに伴い、p.136 リスト3の25行目も上記の追加した1行となります。
2015.07.29
1刷 144
リスト2 24行目と25行目の間
2刷
{
try
{
client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
try
2013.07.08
1刷 146
61行目
2刷
builder.Append(match.Groups[1].Value);
builder.Append(match.Groups[2].Value);
2015.07.30
1刷 155
リスト3 47行目と48行目
2刷
{
try
{
client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
try
2013.07.08
1刷 158
リスト5 110行目と111行目の間
2刷
{
var uri = GetLanguageUri(toppage, language);
{
System.Threading.Thread.Sleep(300);
var uri = GetLanguageUri(toppage, language);
2013.07.08
1刷 169
リスト3 61行目と62行目の間
2刷
{
try
{
client.Headers.Add(HttpRequestHeader.UserAgent, "MyUserAgent");
try
2013.07.08
1刷 171
リスト5 147行目と148行目
2刷
{
var uri = GetLanguageUri(toppage, language);
{
System.Threading.Thread.Sleep(300);
var uri = GetLanguageUri(toppage, language);
2013.07.08
1刷 198
2つめのコードブロックの1行目
2刷
var toal = 0;
var total = 0;
2015.07.30
1刷 258
096行目
2刷
AvarageBytesPerSecond
AverageBytesPerSecond
2015.07.30
1刷 259
122行目
2刷
AvarageBytesPerSecond
AverageBytesPerSecond
2015.07.30
1刷 260
155行目
2刷
AvarageBytesPerSecond
AverageBytesPerSecond
2015.07.30
1刷 269
コード223行目
2刷
AvarageBytesPerSecond
AverageBytesPerSecond
2015.07.30
1刷 289
49行目、51行目、58行目(3か所)
2刷
AvarageBytesPerSecond
AverageBytesPerSecond
2015.07.30
1刷 290
116行目
2刷
AvarageBytesPerSecond
AverageBytesPerSecond
2015.07.30
1刷 397
38行目、47行目(2か所)
2刷
AddMediaOpend
AddMediaOpened
2015.07.30
1刷 399
90行目、93行目(2か所)
2刷
MediaOpend
MediaOpened
2015.07.30
1刷 399
91行目
2刷
AddMediaOpend
AddMediaOpened
2015.07.30
1刷 400
111行目のコードと注釈
2刷
MediaOpend
MediaOpened
2015.07.30
1刷 419
手順8の1行目
2刷
エディターからデザイナーへ戻って
続けて
2013.02.05
1刷 442
リスト8への補足説明
2刷
「from the text 'マウス」という文言が含まれたStandardStyles.xamlのエラーが表示される場合は、1767行目にある「マウス」を半角の「Mouse」に置き換えてください。
2015.07.30