So-net無料ブログ作成
検索選択
プログラミング ブログトップ
前の2件 | -

検索にガンガンヒットするホームページの作り方―SEO(検索エンジン最適化)テクニックで効果的にPRしよう [プログラミング]

2005年4月に出版されたSEOの本。

SEOとはSearch Engine Optimizationの頭文字をとってもので、検索エンジン最適化などと訳される。具体的には自分のウェブサイトを検索結果の2ページ目以内に表示できるように作りかえるということ。

ネットユーザーの80%は検索エンジンを使っているが、最初の1・2ページしかみないので上位表示が重要になる。

検索エンジンはユーザーの役に立つページを上位表示しようとしている。
掲載順を決めるのはアルゴリズム。アルゴリズムに高く評価されるウェブサイトをつくるのがSEO対策。

SEOの利点
検索エンジンを使うユーザーが多い
検索キーワードで集客できるので興味ある顧客だけを集められる。キーワードの予想が大切になってくる。
興味のあるユーザーが多いのでコンバージョン率が高い。
ROI(費用腿効果)が優れている。検索エンジン上位に表示することは無料でできる。一方でアフィリエイト広告やメールは費用がかかり、やめればそれでおしまい。

検索エンジンは使う方からみるとどれでもいっしょ。
しかし大きく2種類ある。
ディレクトリ型とロボット型。

ディレクトリ型はカテゴリーによる分類で掲載される。登録にはこちらから検索エンジンにウェブサイトを申請し、エディターが眼でみて審査する。登録するときの簡単な紹介文はエディターが書く。
欠点は掲載サイトが不足している、検索が不便、ウェブページ単位で検索できない。

ロボット型検索エンジンは、スパイダー(クローラー)がディレクトリ型検索エンジンからはじめて巡回する。収集した文字情報を持ち帰りデータベースにする。クエリープロセスがデーターベースから最適な情報を探し出す。検索結果でランク付けをおこなうのはアルゴリズム。
長所は膨大なウェブページを収集、検索可能にする。
ウェブページ単位での検索ができる。
どんなキーワードでも検索できる。
短所は、返す情報が大きすぎる。新しい情報が検索できない。(クローラーがきていないので)
ディレクトリ型に登録してあるウェブサイトは基本的にロボット型に登録する必要はないが、念のためやっておくことをおすすめする。

ハイブリッドはディレクトリ型とロボット型で相互補完。
結果を何段階かにわけて表示する。
日本の主要検索エンジンを分類。この時点でロボット型はほぼgoogle。

SEOによる上位表示はロボット型でのみ可能。ディレクトリ型への登録も必要。


☆ロボット型検索エンジン対策
評価してほしい要素をロボット型検索エンジンに適切に伝えられるように、個々のウェブページのHTMLコーディングやウェブサイト構造を見直す。

ロボット型検索エンジンがウェブページを評価する視点
ページ内要因、ページ外要因。
以前はページ内要因だけで判断していたけど、やたらとキーワードをうめこむなどスパム行為が横行してかわりました。今はテキスト要素、リンク要素、テーマ要素で評価しています。

ページ内要因・・・含まれている文字や出現回数、文字の配置、titleタグに含まれている情報。画像のalt属性に含まれている文字といった要素

ページ外要因・・・評価対象のウェブページにリンクをはっているウェブページ。リンクの数、アンカーテキスト上の文字。

テキスト要素・・・クローラーはテキスト文字しかよめない。場所(title,strong b h1,h2)、密度(キーワードの出現割合)、位置関係(近い位置は相関が強いと判断)

タグ・・・最重要視される。ページごとにタグを変えた方が効果的。titleタグとbodyタグのテーマには一貫性を持たせる。また検索結果の見出しになるのでわかりやすく。固有名詞だけをいれるのは、会社名で検索されるほどの有名な企業でないと意味がない。 リスト内で目立たせようと☆などの記号をいれる、同じキーワードを複数並べる、テーマと違うキーワードを並べるなどは検索エンジンからの評価が下がる。また、ディレクトリ型エンジンには効果なし。 <meta>タグはクローラーにページの要約や関連キーワードを適切に伝えるために用意されたタグ。<description>は要約文、説明文。<keywords>は検索させたいキーワードを記述、複数いれたいときには半角カンマをいれる。これをheadタグに入れておくと有効になる。ディレクトリ型検索エンジンには効果なし。悪用するユーザーが多かったので今はあまり有効でない。 <a>タグ・・・検索エンジンはリンク元とリンク先で重要なキーワードとみなされる。だから「こちら」などをアンカーテキストにしない方がよい。 <hx>タグ・・・<h1><h2>などのタグで数字の小さい方が上位階層に位置する見出しになる。<h1>タグには<title>タグに記述したキーワードと同じキーワードをいれるとページの関連性を高められる。文書レベルを無視した使い方はNG。<h1>タグを利用できるのは基本的に1ファイルに一回。このタグはスタイルシートを利用できる。 <ul><ol>タグ・・・箇条書きに使う。項目に出現するキーワードが重視される。 <strong><em>タグ・・・論理的強調。多用すると強調する部分がわからなくなる。 <center><div align="center">タグ・・・文書の中央に表示するので他の部分より重視される。 リンク要素(Link Component)の評価の仕組み・・・リンクを貼られるサイトには価値がある。リンクには参照、紹介・推薦という意味があると考えられるから。そのため検索エンジンの会社はリンク構造に着目した評価方法を開発した。 リンクポピュラリティー・・・張られているリンクの質と数によってウェブサイトの重要度を判断する方法、代表的なのはGoogleが採用するPageRank技術、infoseekのマルチプロセススコアリング技術。多くのサイトからリンクされている、質のよいサイトからリンクされていることが評価をあげる。 リンクレピュテーション・・・リンクポピュラリティーをさらに発展させた評価指標で、他のサイトから張られたリンクのアンカーテキストで評価する。検索エンジンで軒並み採用されている。 PageRankとは・・・Googleの開発したサイト重要度を判定する仕組み。リンクを投票とみなしてリンクを張られたサイトを加点。こういったページ外要因をいれることで、ページ管理者の悪意ある操作を回避できる。 クリックポピュラリティー・・・ユーサーがどれをクリックしたのかをカウントして、掲載順位に反映させる。ただし故意に操作されやすいので影響は大きくない。 自分のサイトのPageRankを知る方法・・・Googleツールバーでみる。(2016年現在サービスなし) PageRankは絶対ではない。 Googleのウェブサイト評価方法 1検索キーワードを含むすべてのウェブページをリストアップ 2ページ内要因の評価による順位付け 3インバウンドリンクによる評価付け 4PageRankによって順位を調整 コラム Teomaと「Subject-Spedific Popularity」は関連テーマのリンクしか評価しない。 クローラーがサイト内全体を巡回できるようなサイト内リンクを構築しておく。 クローラーに優しいナビゲーション ・ナビゲーションメニューは<a>タグで設置 ・個々のメニューはテキスト文字で表現 ・メニューの名称はわかりやすく、できればキーワードを含んだものにすること ・JavaScriptやDHTML、Macromedia Flashで作らないこと 画像リンクにはalt属性にキーワードをいれておく。 JavaScriptなどは訪問者にアピールするが検索エンジンにはアピールしない。そして検索エンジンに表示されないなら存在しないも同然。もし作ってしまっていたら、取り除くのア困難なので各画面の別の場所にテキストベースのリンクを設置するとよい。例えばページの一番下にいれると、上に戻らなくてもよくなりユーザビリティを高めながらSEO対策もできる。 クローラーにサイト内の全ページを巡回してもうのにサイトマップを設置するのも効果的。 ユーザへのサイトマップと違うのはテキストで咲くシエすること。リンク先ページのキーワードを含んでいること。ユーザーにとってもわかりやすい見出しだとなおよい。 リンクが多すぎると全部巡回してもらえないので、リンクは50程度にとどめておく。それより多いときはページを分ける。 クローラーが不自由なく読めるリンク形式は<a>アンカータグ。 SEOにおけるリンク対策 ・外部サイトからリンクをもらうこと ・ディレクトリ型検索エンジンに登録すること リンクをもらいたいのは ・GoogleのPageRankの高いサイト ・リンク元のページに設定されている外部リンクが少ない方が高く評価してもらえる ・自分と同じトピック、テーマを取り扱っているサイトからリンクをもらうほうが高く評価してもらえる リンクしてくれるサイトを探す ・相互リンクを依頼する ・専門リンク集や検索エンジンを探す ・自分のサイトにコンテンツを増やす  コンテンツを増やすときには、   ・古くなった情報も必ずバックナンバーを掲載しておく   ・掲載するURLはできるだけルートドメインに近い階層(浅い階層)にする   ・サイトと関係のないコンテンツを増やさない 登録されていないサイトからのリンクは無効なので、自分のサイトにリンクを張っているサイトを調べ、もし登録されていなければ登録する。 自分のサイトにリンクを張っているサイトを調べるには、検索ボックスで「link:」のあとに自分のサイトのURLをいれる。 テーマ・・デパートのフロアのように、トピックや話題を絞り込んで情報の受け手が理解しやすいようにする。 新しい概念「サイトテーマ」・・・個々のウェブページには必ずある1つのテーマが含まれているはずであり、さらに複数のファイルで構成されるディレクトリやウェブサイトも、必ずその集合が1つのテーマを持っているはずだ」という考えに基づいて考案されたアルゴリズム要素。各ページがなんのテーマなのか、またそれがどの程度絞り込まれているのか同時に解析する。 例 トップページ=海外旅行    テーマ北米方面 テーマニューヨークのパッケージツアー 検索エンジンではユーザーがいれたキーワードから属するテーマを選びそのテーマと合致するウェブページをデータベースから抽出していく。ユーザーが「海外旅行」と検索したらトップページが上位ランクにはいるが、「海外旅行 北米」ならその下のページが上位ランクにはいるはずである。 検索キーワードのテーマに合致して、ちょうどいい具合にフォーカスされていると検索エンジンに評価してもらうには、サイトの中にできるだけ多くの「テーマ」をつくり、ユーザーや検索エンジンが理解しやすい形で配置する。 情報構築(情報アーキテクチャ)・・・ディレクトリやウェブページをサイトテーマに従って整理すること。 情報構築のルール ・サイト全体がある1つのテーマを持つような情報を掲載する。 ・ディレクトリごとに1つのテーマを持つようにウェブページを分ける ・個々のウェブページが一つのテーマを明確に持つように作成する。 基本的にはドメインとディレクトリによってある程度大まかな情報を分類したあと、コンテンツを載せるウェブページ一つ一つのテーマを明確にしていく。 検索エンジンはディレクトリごとに「index.html(あるいは同等のファイル)」を探そうとするので配置した方がよい。 テーマを情報で分類するのはSEOのため。 具体的にはキーワードを分類する。海外旅行のサイトを例に。 ディレクトリをわけると、ユーザーが一番しりたいページにダイレクトに誘導できるメリットがある。 情報がテーマで分類できなるテーマごとにディレクトリを分類する。階層が深くなるほどテーマが絞り込まれていけばよいので浅い階層はおおまかに。 各ウェブページのテーマはタグできっちり表現 ・<title>タグには重要なキーワードをいれておく。テーマの異なるキーワードは同時にいれない ・<hx>タグには重要なキーワードをいれておく、デザイン上使えないなら、<body>タグのできるだけ直後に重要なキーワードを記述する。 コラムKEIデータベースで、SEO対策を行うのに有効なキーワード選出を行うための1つの参考値。 SEOの第一歩はキーワードの選定 キーワード=ターゲットユーザー 顧客が使うキーワードを想定する 言い換えられる言葉を探す。「光」「光ファイバー」「FTTH」といったもの。類義語はシソーラスで探すのもよい。 キーワードは複数選ぶ。この時点でも60%のユーザーが複数のキーワードで検索している。 よく使われる組み合わせを探す。例「自動車保険 見積もり」「無料 英会話」「着メロ 作成」「メール マナー」 地域名を入れるのも有効。 例 「不動産 渋谷」「ディズニーランド近く」 Googleアドワーズ広告やオーバーチェアといった広告型検索サービスが提供するキーワード検索ツールを使うのも有効。 リストアップしたら、個々のキーワードでどのウェブページが上位に表示されるようにするか考えて、ユーザーが探し求めている情報に1クリックでたどり着かせるような配慮が必要になる。 ユーザーがみるのは検索結果の「見出し」と「説明文」、これは検索順位より重要。コピーライティングがクリック率を左右する。 ユーザーは見出しと説明文で、検索結果の正しさを判断する。またおもしろい方、役にたちそうな方を選ぶ。 見出しは<title>タグを表示する。説明文は<description>か、キーワードが出現する前後の文章を表示する。 効果的なコピーライティング キーワードを繰り返さない 重要なキーワードは2個程度に絞る 重要なキーワードから記述する コラム 漢字の送り仮名。「ひっこし」がいろんな変換がある。現在はGoogleも対応しているが、この時点では「引越し」「引越」は別の結果だった。 ランキングにマイナスの影響がある要素 クローラーは基本的にテキスト要素しか読み取らないので、デザイン的に凝りすぎるとSEO的にはマイナスになることが多い。 ・JavaScriptを<head>内におくと<body>タグが押し下げられてマイナス ・画像はクローラーは読み取れない。多用するとマイナス。 ・Macromedia Flash は評価されない ・動的ページ=ASPやPHP、JSPなどの技術を利用して生成されるウェブページ。URLに「&」や「?」などのパラメータがついている。多くの場合クローラーは動的ページをインデックスしない。 ・クローラーはフレームを嫌う。複数のファイルで一つのページを構成しているから。ユーザビリティからいってもお気に入りに入らないのでフレームは不向き。 JavaScriptはSEOにとっては邪魔。対策としては「.js」という拡張子で外部ファイルにする。<noscript>タグを使いクローラー用のリンクを用意するなど。 スタイルシート(CSS)は外部ファイル化する スタイルシートは見栄えを整えるがSEOには邪魔なので「.css」ファイルとして外部化する。 コラム カタカナ表記のゆれについて本の執筆時点では検索エンジンごとに対応が異なったらしい。 スパイダーは動的ページを読まない。理由はスパイダートラップを避けるためと、ユーザーにウソの情報を与えないため。 この本の時点でGoogleは動的ページをインデックスしはじめている。効果的に動的ページを巡回してもらうための方法 ・動的ページのURLパラメータを一つにする ・静的ファイルから動的ページにリンクを張る ・ペイドインクルージョンを利用する(有料) コラム アマゾンジャパンは動的ページの「&」や「?」をURLに書き換えるようにサーバーで処理しているので個別商品ページがインデックスされている。 フレームを利用した場合、親フレームはインデックスされず、子フレームが単体でインデックスされてしまう。ユーザビリティにもマイナスなのでフレームは使わない。 コラム 3分でできる簡単なページ最適化の方法 HTMLの原則に沿って書いた場合の例がのっていた。ヘッダにタイトル、ボディに見出し、中見だし、第一段落100文字、第二段落80文字、第3段落100文字、というスタイル。こういうシンプルなものが検索エンジン最適化。ただしユーザーにはまったくアピールしない。サイトテーマが明確になっているか考えるときに使おう。 SEOテクニックのまとめ ・ページごとにテーマをはっきりさせる。それを<title><body><a><h1>などのタグにキーワードで表現する。そのページを1語か2語のキーワードで表すと何になるのか考えるとよい。 ・<body>タグ直後にできるだけ文章がくるようにする。複雑なレイアウトがきたりしないように! ・各ページごとに200~400文字程度のテキストをいれる コラム フレッシュクロール、検索エンジンがインデックスするまでの間があるのでフレッシュクロールで巡回した日付を表示できるようにした。定期巡回は日付がはいらない。 フレッシュクロールは検索有効期限がある。 ☆ディレクトリ型検索エンジン対策 効果があるのはYahoo!ジャパンとDMOZ。 ディレクトリ型検索エンジンに登録されるということは被リンクをもらうことになるのでロボット型検索エンジンのランキングにも好影響がでる。 登録の仕方。 無料と有料がある Yahoo!ジャパンはハイブリッド型検索エンジンの最大手。自社製のディレクトリ型検索がメイン。 当時のYahoo!カテゴリを使った検索などの解説。 Yahoo!ジャパンで最適なカテゴリーを探し登録する方法の解説。 ・カテゴリーは検索キーワードと一致するものを選ぶ。検索キーワードを含むカテゴリ名、見出し検索、紹介文を含むウェブサイト。掲載数が少ないカテゴリーの方がよい。より詳細なカテゴリを選ぶ。賞用サイトなら「ビジネスと経済」のカテゴリから申請する。 申請には、連絡先のメールアドレスのドメインはサイトドメインと一緒がよい。タイトルには誇大広告的な表現を使わない。 URLはトップページのものだけを記入。 他にも項目ごとに何をいれるか細かく解説あり。 紹介文はエディターの手がはいあるので、エディターに考えさせない、そのまま掲載できそうな文章をエディターの文字数や癖から掴んで考えて申請する。 申請したら1か月まってみる。ビジネスエクスプレスでも確実に登録してもらえるとは限らない。 原則として1企業1URL。 登録申請のルールは必ず守ること。 DMOZに登録されるための方法 最適なディレクトリを探す。エディターのいるカテゴリーが審査が早いのでそこに申請する。フォームの項目ごとの細かい入力方法。 掲載されるまで3~6週間 有料の審査サービスはない。登録できるのは1サイト1URL。ルールを守り神聖視、外国サイトも登録できる。 ボランティアが運営しているので、あなたもDMOZエディターになれるかも。 Yahoo!とDMOZ合格度を診断するチェック項目 ・トップページはわかりやすいか?ユーザーになんの情報を提供しているかわかる。 ・サイト内ナビゲーションは適切か? ・コンテンツがわかりやすい形で提供されているか? ・取引に関する情報は明記されているか? ・十分なコンテンツはあるか?ユニークな情報を提供しているか? ・サイト内にリンク切れ、表示されない画像はないか? ・工事中のページはないか? ・主要なブラウザで閲覧できるか? ☆検索エンジンスパム 検索エンジンスパムとは、検索結果の上位に表示させることだけを目的に、検索エンジンアルゴリズムを悪用した手法を実践し、検索結果の精度を低下させる行為。 検索エンジンはユーザに短時間で正確な情報を提供することを目的にしているのに、それを邪魔するのでダメ。 検索スパムの悪質さでペナルティに段階がある ・検索結果ランキングの低下。 ・検索エンジンのインデックスから除外される ・スパム行為をしたサイトを運営しているドメインごと禁止される ・スパム行為をしたサイトをホストしているIPアドレスごと禁止される。 コラム 検索スパムをしたIPアドレスが中古ででていて、それを使うとインデックスされないので注意。 もしペナルティをうけたら ・スパムとみなされる要因をすべて取り除く。 ・取り除けたら、再度登録申請を行う ・ドメインやIPアドレスが抹消されたら、取り直すしかない。 検索エンジンスパムとみなされる基準は? ・検索エンジン会社によって異なる。 ・スパム行為は長期的には利益が薄い、スパム行為となる可能性があることはしない。 具体的なスパム行為 ・クローキング・・・クローラーか人か判別して、クローラー用のページをつくる ・背景と同色の隠し文字を使う ・人に見えない小さなフォントを埋め込む ・<noframe>タグを使って見えないキーワードをうめこむ ・<noscript>タグを使って見えないキーワードをうめこむ ・CSS-Positioningwoを使って画面外にキーワードを配置する ・ルールを無視した<meta>タグの記述。複数のdescription、keywordをいれる。大量のキーワードや文章を並べる。 ・リダイレクト・・・本来はURL移転の際などにつかうものを、検索上位に表示されるキーワードだけのページをつくり、そこから別のURLにリダイレクトで飛ばす。登録されたサイトと飛ばされるサイトが違う。大きなペナルティが課せられる。 ・Refreshによるリダイレクト・・・現在の検索エンジンには効果がないのでペナルティもない。 ・JavaScriptによるリダイレクト・・・Refreshタグの方法を改良したもので、スパムとみなされる。 Macromedia Flashによるリダイレクト・・・スパムとみなされる。 本当にウェブサイトが移転したとき以外はリダイレクトはスパムとみなされることが多いので注意。 ・ドアウェイページ・・・ウェブサイトへの入り口をたくさんつくること。ドメインを沢山とってドアウェイページをつくったり、ドアウェイページを自動生成するツールなどで大量生産されたが、ページ外要因がランクに影響するようになって有効性はなくなった。そのうえスパムとみなされる。 ・ドメインを利用したテクニック・・・検索エンジンがURL文字列も考慮して表示順位を決定するという点を利用してURLやディレクトリ名にいろいろな方法でキーワードを埋め込む方法。悪用するとスパムとみなされる。 ・フェイクコピーリスティング・・・上位に表示されているウェブサイトのHTMLソースを丸写しすること。ページ外要因をみるようになって通用しない上にスパムであり著作権侵害。 ・リンクスパム・・・作為的なリンクを操作して順位をあげる行為。ユーザーに利益がないリンクはリンクスパムとみなされる。 ・隠しリンク・・・ブラウザでは見えないリンク。スパムとみなされる。 ・リンクファーム・・・無関係なサイトが相互リンクを張る行為をするとスパムとみなされる。悪質なSEO会社は依頼者のサイトを勝手にリンクファームにいれたりするので注意。不特定多数のウェブサイトすべてにリンクを張るように指示してくるのはスパムのリンクファーム。内容を吟味した相互リンクは大丈夫。 ☆SEOを依頼するとき失敗しないコツ ・会社の評判を、メディアで調べる。変動が激しいので業務経験の長さも重要な要因。クライアントのサイトを検索して表示してみることで仕事ぶりがわかる。 ・SEO会社の提供するサービスはクライアント次第。目的を明確にして、提供サービスと合致しているか調べよう。 ・SEOサービスには相場がない。高いからよいということはない。かけられる予算と費用対効果をはっきりさせる。相見積もりをとり不明な点はつっこんできく。契約前に何に対して料金が発生するのか明確にする。 ・SEO会社が素人や部外者にわかりやすく説明できるかみる。意志の疎通が一番重要なのでコミュニケーションスキルをみること。 ・どのような手法でSEOをするか大まかでも理解しておく。スパムになっていないかチェックする。SEO会社のウェブページのHTMLソースを確認して、スパムがないかみておこう。 ・ランキング保証をする会社は怪しい。検索エンジンのシステムは日々更新されているからである。マイナーな検索ワードやマイナーな検索エンジンでの上位保証かもしれないので注意する。 <!-- amazon --> <div class="sonet-asin-area"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798103462/aaaaaaaaaaam-22/ref=nosim" target="_blank"><img src="http://ecx.images-amazon.com/images/I/510NVNSNEWL._SL160_.jpg" class="sonet-asin-image" alt="検索にガンガンヒットするホームページの作り方―SEO(検索エンジン最適化)テクニックで効果的にPRしよう" title="検索にガンガンヒットするホームページの作り方―SEO(検索エンジン最適化)テクニックで効果的にPRしよう"></a><div class="sonet-asin-info"><p class="sonet-asin-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4798103462/aaaaaaaaaaam-22/ref=nosim" target="_blank">検索にガンガンヒットするホームページの作り方―SEO(検索エンジン最適化)テクニックで効果的にPRしよう</a></p><ul><li class="sonet-asin-label">作者: 渡辺 隆広</li><li class="sonet-asin-label">出版社/メーカー: 翔泳社</li><li class="sonet-asin-label">発売日: 2003/04/10</li><li class="sonet-asin-label">メディア: 単行本</li></ul></div></div><div class="sonet-asin-break"></div> <!--/ amazon --> </noscript></noframe></body></h1></a></body></noscript></body></head></description></body></hx></a></a></div></center></em></strong></ol></ul></h1></h1></h2></h1></hx></a></keywords></description> <br clear="all" /> <div class="bookmark" data-url="http://yo-yaku.blog.so-net.ne.jp/2016-08-09" data-subject="検索にガンガンヒットするホームページの作り方―SEO(検索エンジン最適化)テクニックで効果的にPRしよう"></div> </div> <div class="posted"><span class="postDate">2016-08-09 16:48 </span> <a href="http://yo-yaku.blog.so-net.ne.jp/2016-08-09#favorite">nice!(0)</a>  <a href="http://yo-yaku.blog.so-net.ne.jp/2016-08-09#comments">コメント(0)</a>  <a href="http://yo-yaku.blog.so-net.ne.jp/2016-08-09#trackback">トラックバック(0)</a>  <br /><span class="postTheme">共通テーマ:</span><a href="http://blog.so-net.ne.jp/_contents/genre/0013/recent_articles/0001.html">本</a> </div> </div> <div class="articles-bottom"></div> <div class="articles-top"></div> <div class="articles"> <!-- <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:Trackback="http://madskills.com/public/xml/rss/module/Trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/"> <rdf:Description rdf:about="http://yo-yaku.blog.so-net.ne.jp/2016-04-01" trackback:ping="http://blog.so-net.ne.jp/yo-yaku/2016-04-01/trackback" dc:title="だれも書かなかったVisualBasicプログラミング入門" dc:identifier="http://yo-yaku.blog.so-net.ne.jp/2016-04-01" dc:description="Visual Studio.NET2003のVisualBasic(本書ではVB7と記述)の本。 著者は個人で開発をしたり講師などをしてきた方。実践的な教え方。.NETらしいプログラミングを教えたいとしていた。使いこなせば、プログラマを補助して生産性が高く、読みやすく、訂正がしやすい、ユーザーにやさしいアプリケーションを早く作ることができるという。 第1章入門編では、実際にプログラムを作りながら、基本的な操作を解説。 第2章はプログラミング最低限必要なことを説明。著者が開.." dc:creator="よよ" dc:subject="プログラミング" dc:date="2016-04-01T13:35:02+09:00" /> </rdf:RDF> --> <h2 class="articles-title"><a href="http://yo-yaku.blog.so-net.ne.jp/2016-04-01">だれも書かなかったVisualBasicプログラミング入門</a> <a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300515359-1">[プログラミング]</a></h2> <div class="articles-body"> Visual Studio.NET2003のVisualBasic(本書ではVB7と記述)の本。<br /> <br /> 著者は個人で開発をしたり講師などをしてきた方。実践的な教え方。.NETらしいプログラミングを教えたいとしていた。使いこなせば、プログラマを補助して生産性が高く、読みやすく、訂正がしやすい、ユーザーにやさしいアプリケーションを早く作ることができるという。<br /> <br /> 第1章入門編では、実際にプログラムを作りながら、基本的な操作を解説。<br /> 第2章はプログラミング最低限必要なことを説明。著者が開発したレクチャ用プログラムも使う。<br /> 第3章はコーディンうが楽しくなる操作の秘訣。VB7にはプログラマを助けてくれる機能がたくさんある。<br /> 第4章 クラスとオブジェクトの基礎的な概念とヘルプの読み方<br /> 第5章 クラスの作成と処理。クラスの多くの内容は別の書籍で。ここでは基本だけ。<br /> 第6章 データベース処理の初歩の基本、上と同じく別書籍で詳細を解説。<br /> 第7章 コントロールでは、4つのコントロールを解説。とくにテキストボックスの多彩な機能を紹介。<br /> <br /> 付録 すべてのコントロールを短い解説付きで紹介。アイコンの一覧紹介。ショートカットの紹介。<br /> <br /> 索引 用語と操作<br /> <br /> 第1章 Visual Basic.NET入門<br /> スタート画面では、ネットにつながっていると、新しい情報も表示してくれる。慣れてきたら便利に感じるはず。<br /> プロフィールで、慣れているキーボード配列やウィンドウレイアウトを選べる。ヘルプも今行っている操作にあわせて選べる。初心者はVisualBasicドキュメントにするのがよい。<br /> ソースコードの保管場所を「ツール」⇒「オプション」から設定。<br /> 変更を加えたところが自動的に保存されるように。上の同じオプションから「開いたドキュメントの変更の保存を確認」を選ぶ。<br /> <br /> 新しいプロジェクトをつくる。プロジェクトの種類⇒VisualBasicアプリケーション。テンプレート⇒Windowsテンプレート。ラベルやボタンを配置して、ボタンをおされたら文字列を表示する。Halloプロジェクトを作る。<br /> 実行させてみて、できているコードを確認。ソリューションの中にプロジェクトができる形になっている。<br /> <br /> テキストボックスに名前を入力すると、名前入りで文字列を表示してくれるアプリを作る。<br /> 開発環境の説明。著者が使いやすいと思う開発環境の設定。画面中央がドキュメントウィンドウ。右側の上に「ソリューションエクスプローラー」「ヘルプのキーワード」「ヘルプの検索」「ヘルプの目次」。下側に「プロパティウィンドウ」「ダイナミックヘルプ」「お気に入り」<br /> プロジェクトのファイルには、ディフォルトの名前を使わず、リーディングタグのついた名前に変更する。<br /> リーディングタグの例<br /> フォーム・・・frm<br /> クラス・・・cls<br /> モジュール・・・mod<br /> 作業中はダイナミックヘルプを表示しておくと作業中のヘルプの項目を表示してくる。<br /> コントロールを配置し、プロパティを設定する手順を解説。<br /> コードを書くときは、Meを使うと、そのクラスをさすことができる。そして「Me.」と打てば、後ろに選択できるメソッドがプルダウンで表示される。<br /> 変数の宣言の方法。これも開発環境が助けてくれる。<br /> 変数にもリーディングタグを。<br /> プログラムを実行する前に、「ソリューションエクスプローラー」からプロジェクトのプロパティを開き、スタートアップ設定の名前を、自分が付けた名前に変更する。そうしないとディフォルトが入っている。(Form1など)<br /> <br /> デジタル表示のアラーム時計を作る。<br /> デジタル時計の表示画面をつくる。<br /> Timerコントロールを配置する。1秒毎に起動するように設定。アラーム時計の表示画面が起動したら(frmClock_Load)タイマースタート。<br /> タイマーが起動したら、現在の時刻を表示画面に表示。<br /> 最小化されたら(Me.WindowState=FormWindowState.Minimaized)、そこ(Me.Text)に時刻を表示するようにする。(最小化されていなければ、表示画面に時刻を表示する)<br /> このとき、最小化してもとに戻したら、そのまま時刻が表示されてしまうのResizeイベントを使って、元の「アラーム時計」を表示するようにしておく。<br /> アラームの設定をするフォームを付け加える。一番上にチェックボックス。チェックがいれられたら時刻と分をNumeralUpBoxで、キャンセル、終了ボタンを配置。<br /> コード内には、アラームの設定あるなしのフラグ変数(BooLean)とアラームの時と分の変数(Integer)を設定。<br /> コードを書きながら開発環境がコードのインデントなどを自動であわせてくれることを体験。<br /> チェックボックスがクリック(CheckedChanges)されたら、設定ボタンがみえるようにするコード。時刻や分が変更されたら(ValueChanged)変数に設定するコード。<br /> フォーム間でデータをやり取りするにはPablicではなく、「Pablic ReadOnly Property」でGetを使う。こうすると変数の適用範囲が狭くなる。.NETらしいプログラムになる。<br /> 最初のアラーム画面がダブルクロックされたら、アラーム設定画面が表示されるようにする。Showを使うと、開いた画面の入力が終わるらなくても、元の画面の操作ができてしまうので、ダイアログボックスを使う(ShowDialog)。このとき、デバッガの「F5=実行」と「F8=1行実行」と、ブレークポイントの設定方法を解説。<br /> With構文で、くくるとイチイチ頭にオブジェクトを指定しないでよくなる。<br /> 最後に開いたダイアログボックスをDispose()。<br /> アラームを設定しているときは、時計の横に、アラームという文字と設定時刻が表示されるように設定。<br /> 最後に時刻になったらユーザーに時刻を表示する画面を作成。他のフォームから時刻を得るために、受け取り用の変数(mstrTime)を設定し、「WriteOnly」なプロパティ(pstrTime)を使う。このコード内で、受け取った時刻を受け取り用の変数にSetsる。(mstrTie = Value)。<br /> 最後にタイマーが起動したときのコードの最後に、設定した時刻になったら、アラーム通知の画面を開くようにする。このとき時刻をアラーム通知画面に渡す。(ユーザに時刻を表示する画面.pstrTime = mstrTime)<br /> <br /> アプリケーションの配布用のプログラムをつくる、デプロイメント機能。<br /> 単にアプリをインストールするバージョン<br /> ショートカットを作って、デスクトップに配置するバージョン<br /> 取扱説明書をつけて、プログラムメニューを作るバーションを作成。<br /> <br /> プログラムの中からエクセルを使う方法。<br /> 「ソリューションエクスプローラー」⇒「参照設定」右クリック、「参照の追加」⇒「COM」からExcelのObjectLibraryを選ぶ。入っているエクセルのバージョンによって名前が違う。<br /> フォームのコードの一番上の「Public Class Form1」のさらに上に、「Import Excel」をいれると以後「Exel.Application」と書かなくてよい。<br /> ここでは、ボタンを押すとエクセルに書き込めたという簡単な例をあげていた。それでもかなりコードは書く。<br /> 筆者は裏でエクセルを起動して表形式の複雑な書式を印刷させたり、ピボットを使った複雑な集計をやらせているそうである。<br /> <br /> VBプログラムから他のアプリケーションを起動する方法の本道はProcessクラスだか、初心者用に「Shell」関数で例をあげていた。Try...End Try構文を使っていたが、解説はあとで。例ではメモ帳を立ち上げて、SendKeysで文字列を表示させるもの。<br /> <br /> <br /> <br /> 第2章 プログラミングの基礎技術<br /> スタートページの便利な機能。プロジェクトタブでは最近開発したプロジェクト(ソリューション)の名前と最後の更新日時一覧が見れる。オンラインリソースでは、たくさんのサンプルコードがみれるので、これを見るだけでも勉強になる。キーワード検索もできる。マイプロフィールでは開発環境の働きを自分の使用する言語や環境に合わせて最適化できる。<br /> <br /> 新しいプロジェクトダイアログボックスの中を散歩するとVisualStudio2003で何ができるか理解できる。<br /> <br /> 変数の使い方。データ型一覧、宣言の仕方。変数への代入方法。定数の宣言方法と使い方。プログラムの中で決まった値を使うときは定数として宣言して値をいれておくとわかりやすい。<br /> <br /> 制御構造と演算子の説明。条件式、文字列のパターンの一致、算術演算子、代入演算子、論理演算子、ビットシフト演算子、その他の演算子。演算子の優先順位。条件判断構造。繰り返し構造。<br /> <br /> プロシージャの説明。種類(Sub、Function、イベントハンドラ、Property)、宣言。引数。<br /> プロシージャを作成してみる。引数なし⇒引数あり⇒値渡しと参照渡し⇒位置と名前による引数渡し、引数の省略、不特定<br /> 戻り値のあるプロシージャの例<br /> オーバーロードで三角形の面積を計算するのに二つの方法がある場合の例で説明。<br /> <br /> 命名規則。<br /> 接頭辞+タグ+基本名+修飾子+接尾辞<br /> m + lng + RecNum + Max⇒mlngRecNumMax<br /> それぞれの例。<br /> 基本名のつけ方。プログラムの中での働きを明確に理解できるように記述。長くなっても「Ctrl+Space」で一覧から呼び出す習慣をつければ打鍵数も抑えられ、スペルミスもなくなる。<br /> 要素を並べるときは、「オブジェクト名+動作」 例 FormProAdd これは×AddFormProp<br /> メニューの名前は構造にあわせてつける。 例 mnuFile,mnuEdit<br /> 名前の関連性、データベースの処理で「Price]というフィールドがあったら、列名=clmPrice, 変数名=lngPrice,表示のタイトル=StrPrice,表示する場所=txtPrice、場所のタイトル=lblPrice<br /> コーディングも楽だし、読みやすいコードになる。<br /> 漢字は使わない。略語は規則にこだわらずわかりやすいほうがよいだろう。<br /> <br /> プログラム要素の宣言と有効範囲。<br /> 名前の付け方。大文字と小文字は区別されないなど。<br /> 要素の特性。データ型、有効期間、スコープ、アクセシビリティ。<br /> プログラミング要素は宣言した領域で使える、上位の領域で宣言してあれば、下位の領域で使える。下位の領域からブロック、プロシージャ、モジュール、名前空間。Paplicはほかのプロジェクトからも使えるのでグローバルという呼び方もある。<br /> 有効期間。モジュールのレベルで宣言された変数⇒アプリケーションの実行時間全体。クラスまたは構造体⇒インスタンスごとにコピーとして存在、インスタンスと同じ有効期間。プロシージャ⇒宣言されたプロシージャが実行されている間だけ。Staticで宣言した変数はプロシージャが終了しても破棄されず値を保持する。<br /> 変数の初期化の値。数値変数なら0、日付なら西暦1年1月1日午前0時など。<br /> スコープは領域のレベルとアクセシビリティできまる。<br /> Public=同じプロジェクト内からも、そのプロジェクトを参照している他のプロジェクトからも、そのプロジェクトからビルドされたアセンブリからもアクセスできる。グローバルとも呼ぶ。<br /> Protected=同じクラス、または派生クラス。<br /> Friend=同じプロジェクトからはアクセスできるが、外からはアクセスできない、通常はグローバルと考える変数はFreindで宣言し、Pablicと使い分けよう。<br /> Protected Friend=派生クラス、同じプロジェクト、またはその両方からアクセスできる<br /> Private=同じモジュール、クラス、または構造体だけからアクセスできる。<br /> Dimだけで宣言した変数はPrivateになるが、明示的に記述した方がいい。<br /> <br /> エラー処理。<br /> Try...Catch...End Tryの説明。<br /> When と Finallyの説明。<br /> <br /> フォーカスイベント<br /> フォーカスイベントの発生順序。Enter⇒GotFocus⇒Leave⇒Validating⇒Validated⇒LostFocus<br /> これを検証するプログラムで発生の順番を確認。Validatingのバグを指摘していた。回避方法も。VS2005ではなおっているらしい。<br /> フォーカスイベントでも検証プログラムを使って、LoustFocus、GotFoucusはうまく動いていないことを指摘していた。なるべく使わないほうがいいそうだ。<br /> Debug.WriteLineを利用すると予期しないイベントの発生によるバグやパフォーマンス低下を発見しやすい。<br /> <br /> データ型と型変換。宣言の方法。データ型の説明。チュートリアルプログラムを使って型変換を実際に値を使ってやってみる。<br /> Option StrictスイッチをOnにして使うと暗黙の型変換ができなくなる。<br /> 型変換の機能と実験をチュートリアルで説明。<br /> <br /> 数値演算についてはOption Strict Onの場合例外が発生しやすい。実験で解説。<br /> <br /> 文字列の処理。チュートリアルプログラムで説明。+とか&とかTrimの説明。<br /> charの説明。<br /> <br /> 日付時刻処理もチュートリアルで説明。DateTime型とTimeSpan型。Date型。<br /> <br /> 数値の書式指定。日付・時刻の初期式。チュートリアルで説明。<br /> <br /> 配列の使い方。一次元配列と多次元配列。最大32次元まで指定できる。添え字は0から連続番号。配列のサイズは固定されていない。無駄に大きな次元の配列をつくるとメモリの浪費。オブジェクト型の配列では複数の要素をもてるがバグになりやすいので注意。配列の初期化方法。代入。<br /> Arrayクラスの解説。コピーしたり並べ替えたり、検索したりの例。<br /> <br /> 列挙型の使い方。曜日の列挙型の例。Enumクラス解説。<br /> <br /> 構造体。宣言、メンバのアクセシビリティ、配列、初期化、プロシージャ、変数の宣言、アクセス、構造体の代入、クラスと構造体。<br /> <br /> イベントとハンドラ。<br /> VB6のイベントプロシージャとVB7のイベントハンドラでの異なる動きを例で解説。<br /> 複数のオブジェクトで動作するハンドラの例。一つのイベントに対して複数のハンドラの例。<br /> <br /> コードが動かなかった時(デバッグ)<br /> デバッグ環境の確認。「ツール」⇒「オプション」デバッグ全般で、「起動時にシンボルが見つからないときに警告」「Intellisenseを使用して、ブレークポイントを確認」「プロパティ評価を変数ウィンドウで行う」をチェック。<br /> 青い破線は文法の誤り。ビルド時のエラー、「F5」で実行時のエラー。<br /> 論理的なミスで予想と外れた動きをしているときの原因を探すのが本来のデバッグ。Traceクラスを使う方法を解説。<br /> ブレークポイントの設定、中断モード解説。<br /> <br /> <br /> 第3章 コーディングが楽しくなる操作の秘訣<br /> IDE(統合開発環境)の概略。画面を水平に分割する方法。ツールウィンドウの表示。ドッキングのコツ(一度壊れると戻しにくい)。<br /> <br /> ツールウィンドウの内容。Windowsフォーム、クリップボードリング(クリップボードの内容を表示してくれる)、ソリューションエクスプローラ、プロパティウィンドウ、クラスビュー。ヘルプの目次。ヘルプのキーワード検索、ヘルプの検索、ダイナミックヘルプ。ヘルプは困ったとき開くだけでなく、系統的な勉強にも使える。一度みたトピックをお気に入りに追加できる。<br /> <br /> いろいろなツール<br /> VB6のイミディエイトウィンドウはコマンドウィンドウに統合。<br /> オブジェクトブラウザはF2で気道。<br /> コントロールをグリッドに合わせて整列させる方法。サイズを統一する方法。デザインを固定する方法(プロパティからLockedをTrueにする)。<br /> プロジェクトの終了は「AltQ」<br /> <br /> 楽々コーディング<br /> クラス名を打ってドットを打つと、そのクラスのプロパティやメソッドの一覧がでるのが自動メンバ表示。ここでTなどをうつくTextなどが自動で検索される。間違って入力したら「BackSpace」や「Delete」キーが使える。<br /> 見つかった名前をエディタ上に呼び出す方法は、Tab、Enter、Space,「=」「,」など文法的に意味のあるキーを押すなど。<br /> 名前にリーディングをタグをつけておけば、頭の部分を打って、「Ctrl+Space」で入力候補が呼び出せる。<br /> パラメータヒントもでてくるので引数も説明を読みながら入力できて便利。この機能が使えないときは「ツール」⇒「オプション」 「テキストエディタ」⇒「Basic」⇒「全般」で自動メンバ表示、パラメータヒント、をチェック。「右端で折り返す」もチェックしておくと便利。<br /> <br /> コードエディタの便利な機能<br /> ウィンドウの分割<br /> 名前の定義を表示。「Shift+F2」で定義にジャンプ。元に戻りたいときは「Ctrl+Shift+F2」<br /> 折り返しは「右端で折り返す」にチェックがはいっていれば自動で「_」が入る。<br /> ブックマークのつけ方。<br /> コメントにする。「Ctrl+K」,C  元に戻す。「Ctrl+K」,U<br /> 任意の長方形を選択するには、「Alt」キーを押しながらマウスでドラッグ。キーボードなら「Alt+Shift」を押しながら矢印キーを押す。<br /> <br /> アウトライン機能。「Windowsフォームデザイナで生成されたコード」などのように四角で囲まれた文字列を「+」ボタンをクリックすると定義が現れる。これがアウトライン機能。<br /> #Region "<説明文>"・・・#End Region で囲んだ部分を折りたたんで非表示にできる。<br /> 一括おりたたみは、コードエディタの何も書いてないところで右クリックして「定義に縮小」。<br /> 検索のときには「非表示のテキスト検索」をチェックしておくと折りたたんだ部分も検索してくれる。<br /> 「+」で展開「-」で折り畳みだが、「Ctrl」を押しながら「M」を2度うちするとトグルになって開いたり閉じたりする。<br /> <br /> 検索と置換。ショートカットキー。検索、置換ダイアログボックスの詳細説明。<br /> インクリメンタル検索。一文字入力するたびに検索してくれるので、長い名前を検索するときに便利。折りたたんだところは探さないので注意。<br /> ファイル内検索で検索する対象を選ぶ。<br /> <br /> <br /> 第4章 クラスとオブジェクトを理解する<br /> オブジェクトはモノ。プログラミングの世界ではオブジェクトと対照的な言葉は「手続き」、従来の手続き指向プログラミングでは「処理」と「データ」は別なので、データ処理のミスがシステム全体に影響する。データを中心として「手続き」をその回りに配置して一つのパックとする考え方がうまれた、それがオブジェクト指向プログラミング。<br /> <br /> オブジェクトの内容。<br /> 特徴がプロパティ。色や大きさなど<br /> 操作がメソッド。電源をONするなど。<br /> 操作や動きがあったときイベントが発生したして、対応するイベンドハンドラを用意。<br /> メソッド、プロパティ、イベントをオブジェクトのメンバーという。<br /> オブジェクトは機能(メソッド)とデータ(プロパティ)が一体化したものと考える。これをカプセル化という。<br /> そして金型にあたるのがクラス、クラスからものを作るのをインスタンス化するという。できたオブジェクトは製品にあたる。<br /> <br /> クラスの定義と継承<br /> 従業員の例で説明。現実の世界からどのような要素を取り出すかを「抽象化」という。<br /> Newでクラスのインスタンス、つまりオブジェクトをつくる。<br /> 継承を天と線のクラスで説明。(Inherits Point)<br /> フォームにコントロールを配置するのは実は、クラスのインスタンスを作っていることをコードから説明。<br /> Excelのオブジェクト構造を使って階層構造を説明。Worksheetを一度に処理したいときは、「Worksheets」=コレクションを使う。<br /> ・「オブジェクト」とは処理とデータを一つにまとめてカプセル化したもの<br /> ・「オブジェクト」は「プロパティ」と「メソッド」と「イベント」をもっている<br /> ・「オブジェクト」は「クラス」で定義する<br /> ・「クラス」の「インスタンス」が「オブジェクト」である<br /> ・「クラス」は「継承することができる<br /> ・「オブジェクト」は階層構造をもっている。<br /> <br /> 名前空間と参照設定<br /> 「.NET Framework」の提供するライブラリはすべてクラス。<br /> 名前空間はクラスをカテゴリー別に階層的に分類するのに使う。<br /> 先に名前空間を指定しておいてから、Textboxなどどして使う。そうでないと、Windowアプリケーションのテキストボックスや、Webアプリケーションのテキストボックスなどがあるのでわからない。<br /> Importsステートメントで指定。<br /> 実際のプログラムでどんな名前空間がインポートされているか、プロパティウィンドウで確認していた。<br /> <br /> クラスに関するヘルプ。<br /> ヘルプの読み方を説明しながら、.NET FrameWorkの提供するクラスの利用の仕方を説明。<br /> ヘルプのインデックスの検索する文字列に「system.object」=クラスの祖先をいれて、そこから説明していた。<br /> クラスのメンバ。オーバーロード(引数で区別する同じ名前のメソッド)、オーバーライド(継承したメソッドやプロパティを拡張したり変更したりする)の説明。<br /> Sharedがついてプログラミング要素は、特定のインスタンスに関連付けられることなく、自由に使える。(詳しくは5章)<br /> <br /> <br /> 第5章 クラスを作ってみる<br /> 人を表す「Human」クラスをつくり、姓、名、生年月日、性別をもつようにする。属性をプロパティプロシージャで作成。宣言しただけで自動でコードを作成してくれる。<br /> ここに外からプロパティを設定するためにコードを書く。ここでテスト。属性をいれて設定する、取得する、終了する、クリアするボタンを配置して処理を書く。<br /> クラスの中で、姓と名を合体させて表示させるコード、年齢を計算するコードを書いて、フォームに表示させる。<br /> 日付にならない入力がエラーになるの、これを「Validating」イベントハンドラで処理する。Try...Catch...End Try<br /> 姓名に長いデータがはいってしまうと、保存などに問題がおきることがある。クラスでチェックしtはじくようにして使えば、プログラム全体を通してデータを使っても安全。チェックのイベントをつくる。イベントを発生させる部分を書く。実際にイベントを発生させて「F8」でおいかけてみる。<br /> <br /> システム全体で有効な定数や変数は標準モジュールを使うが、同じことがSHあrdでもできる。年度情報をSharedで宣言する例で解説。著者はこれで標準モジュールをほとんど使わなくなった。<br /> <br /> コレクションとは。<br /> 先ほどの人クラスでは一人しかつくっていないが、今度はコレクションにする。<br /> コレクションのなかでもSortedListをとりあげて解説。<br /> フォームも改造して、人を追加したり検索したりできるようにする。対応するコードの書き方と動作の解説。<br /> 解説用なのでユーザインターフェースはよくないそうだ。<br /> <br /> 便利な継承。<br /> 「人」のクラスから「従業員」のクラスを作る例。<br /> 「人<br /> クラスをクラスライブラリで作成して、継承して利用する。人クラスはどこにあってもよい。<br /> <br /> <br /> 第6章 データベース処理の初歩<br /> ADO.NETのごく簡単な利用法を紹介。MicrosoftAccessの「.mdb」を使う。<br /> 新しいプロジェクトから、VisualBasicプロジェクトのWindowsアプリケーションをつくり、フォームを開いて、「データフォームウィザード」を利用して「.mdb」に接続する。このウィザードにそっていくだけで、Accessの内容を表示するフォームが簡単につくれる。<br /> <br /> データをグリッドに表示するプログラムを作りながら、データベースの処理手順を解説。<br /> SQLを使って、DataSetを生成するプログラムが1行もコードをかかずにできてしまう。しかし名前は自分で変更しておいたほうが、のちのち役に立つ。<br /> ADO.NETの概要として、データソースとの接続はOleDBConnection、データ処理のコマンドは、OleDBAdapter の Select Insert Update Delete、取得したデータはDatasetとまとまっていた。<br /> ADOとの大きな違いは、動作中に継続的に接続を維持する必要がなく、データソースの内容を読み込む際と変更を加える際だけ接続を行い、読み込みや書き込みが終わると接続を自動的に切ること。<br /> よみとったデータをグリッドに表示するコードを書く。<br /> <br /> データベースの管理はテキストボックスを中心に、データの新規入力、消去、編集を行う。プロジェクトを作成して説明。<br /> プログラムを作成する際に<br /> 「使いやすく、誤操作の心配のないユーザインターフェース」<br /> 「膨大な取り扱い説明書の要らないプログラム」<br /> 「訂正が簡単で読みやすいコーディング」<br /> を考慮した、本格的プログラミングについて解説。<br /> 前につくったものを借用して名前を変える。フォームを改造してデータを表示。<br /> 移動ボタンで前後のデータを表示。<br /> Windowフォームにデータソースの内容を表示し、データソースの処理を行うための最も簡単な方法は、連結コントロール。これには単純データ連結と、複合連結がある。<br /> Windowフォームにはデータソースごとに「CurrencyManeger」というオブジェクトがあってデータソースの場所を追跡して監視。これは複数の連結コントロールがあっても一つだけ。<br /> ADO.NETにはカレントレコードという概念はない。「CurrencyManeger」の「Posion」プロパティが現在位置を差す。複数のデータソースがあるとき「CurrencyManeger」が複数あり、「BindingContext:オブジェクトが管理する。<br /> これらを利用して表示している行を移動するたびに表示がかわる部分のイベントを作成。<br /> データの入力・訂正・削除のボタンをつくる。そして立ち上がったときは訂正などの処理ができない「ブラウズモード」にする。<br /> 新規作成の部分を作成。データのチェックをする。キャンセル、更新確認ボタンのコードを書く。新規入力のテスト。<br /> 連続入力ボタンをつくる。現在の入力を終えて、新しいインスタンスをつくるだけ(AddNew)こうするとValidationの問題でうまくいかない(フォーカスの問題。実際に動かすとわかる)そこで、Tabでフォーカスを動かすようにコードを書く回避策を解説。<br /> 「削除」ボタンの機能を書く。<br /> 「訂正」ボタンの機能を書く。訂正モードのとき重複チェックでうまくうごかないのを回避する方法を解説。<br /> 「保存」ボタンでデータベースに変更を加える。<br /> 「もとに戻す」ボタンで、データセットの「RejectChange」を使って変更を破棄する。<br /> 日付の表示の難しさについて解説。<br /> <br /> データ処理のコードよりユーザインターフェースやエラートラップのコードのほうが多い<br /> 。コンピュータを導入した時、最も費用のかかるのが入力やデータのメンテのための人件費。こうしたユーザに親切なプログラムが人件費節約に役立つが、多くのクライアントは評価してくれないと書いてあった。<br /> <br /> <br /> 第7章 コントロール<br /> MessageBoxを使う。ヘルプの解説でShowの下に青いアンダーラインがあるのでここをクリックして参照をよむと詳細な使い方がわかる。<br /> <br /> ラベルの使い方と「Anchor」プロパティ。Lockedで位置や大きさが変えられなくなる。Anchorでフォームの上、右、左、どちらかからの固定位置を指定できる。ラベルの形状を変えられる。文字列が長くなった時折り返して全体を表示するか指定できる。<br /> 選択されたテキストボックスなどにあわせて表示を変更するラベルの例。<br /> 画像の扱い方。直線をラベルで扱う方法。<br /> VB7のラベルはなかなか奥が深い。<br /> <br /> テキストボックスの使い方。外観、文字列の内容と長さ、フォントとIME、操作の制限、元に戻す。複数行のテキストボックスと配列に取り込む方法。文字列の選択。<br /> Appendメソッド<br /> HideSelectionプロパティでフォーカスを失ってもテキストボックスの選択部分の反転がきえない。<br /> <br /> データグリッドのデザインの外観を美しくする。<br /> コレクションエディタのプロパティを使った例。<br /> <br /> メニューの作り方。<br /> メニューエディタはない。自分でフォームからメニューをつくる方法を解説。<br /> ショートカットキーやイベントハンドラなど。<br /> <br /> 付録<br /> 1ショートカットキー<br /> グローバルショートカットキー<br /> ソリューション関係<br /> テキストエディタのショートカットキー/移動<br /> テキストエディタのショートカットキー/選択<br /> テキストエディタのショートカットキー/コードエディタ<br /> 検索と置換のショートカットキー<br /> デバッグのショートカットキー<br /> フォームデザイナのショートカットキー<br /> <br /> 2オブジェクトアイコン一覧<br /> <br /> 3Windowsフォームコントロールの機能別一覧<br /> テキストの編集 TextBox RichTextBox<br /> データの表示(読み取り専用) Label LinkLabel StatusBar Notifylcon ProgressBar<br /> などという風に分類していた。<br /> <br /> <!-- amazon --><br /> <div class="sonet-asin-area"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774123897/aaaaaaaaaaam-22/ref=nosim" target="_blank"><img src="http://ecx.images-amazon.com/images/I/51ZX29ZX2PL._SL160_.jpg" class="sonet-asin-image" alt="だれも書かなかったVisualBasicプログラミング入門" title="だれも書かなかったVisualBasicプログラミング入門"></a><div class="sonet-asin-info"><p class="sonet-asin-title"><a href="http://www.amazon.co.jp/exec/obidos/ASIN/4774123897/aaaaaaaaaaam-22/ref=nosim" target="_blank">だれも書かなかったVisualBasicプログラミング入門</a></p><ul><li class="sonet-asin-label">作者: 西田 雅昭</li><li class="sonet-asin-label">出版社/メーカー: 技術評論社</li><li class="sonet-asin-label">発売日: 2005/06/01</li><li class="sonet-asin-label">メディア: 大型本</li></ul></div></div><div class="sonet-asin-break"></div><br /> <!--/ amazon --><br /> <br clear="all" /> <div class="tag-word">タグ:<a href="http://yo-yaku.blog.so-net.ne.jp/tag/%E8%A5%BF%E7%94%B0%20%E9%9B%85%E6%98%AD" rel="nofollow">西田 雅昭</a> </div> <div class="bookmark" data-url="http://yo-yaku.blog.so-net.ne.jp/2016-04-01" data-subject="だれも書かなかったVisualBasicプログラミング入門"></div> </div> <div class="posted"><span class="postDate">2016-04-01 13:35 </span> <a href="http://yo-yaku.blog.so-net.ne.jp/2016-04-01#favorite">nice!(0)</a>  <a href="http://yo-yaku.blog.so-net.ne.jp/2016-04-01#comments">コメント(0)</a>  <a href="http://yo-yaku.blog.so-net.ne.jp/2016-04-01#trackback">トラックバック(0)</a>  <br /><span class="postTheme">共通テーマ:</span><a href="http://blog.so-net.ne.jp/_contents/genre/0013/recent_articles/0001.html">本</a> </div> </div> <div class="articles-bottom"></div> <div class="archive-bottom"> <span class="previousLink"><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300515359-2">前の2件</a></span> | - <span class="archive-name">プログラミング</span> <span class="archive-links"><a href="http://yo-yaku.blog.so-net.ne.jp/">ブログトップ</a></span> <br style="clear:both" /> </div> <div id="balloonBox"></div> <script type="text/javascript" charset="utf-8" src="http://blog.so-net.ne.jp/_js/bl-bookmarks.js?20150414"></script> <script type="text/javascript" charset="utf-8"> var bookmark_services = "ha,tw,fb,go,mi,twSP,miSP,htSP,goSP,fbSP,liSP".split('-').join('').split(","); var seesaaBookmarks = new blBookmarks({bookmark_services:bookmark_services, blog_url:"http://blog.so-net.ne.jp"}); seesaaBookmarks.exe(); </script> <!-- /Content --> </div> <div id="side-b"> <div class="sidebar" id="latestEntry"> <h3 class="sidebar-title">最新記事一覧</h3> <div class="sidebar-body"> <ul> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2017-04-19">今すぐ使えるかんたん ぜったいデキ..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2017-04-16">ニセ科学を見抜くセンス</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2017-01-10">ジヴェルニーの食卓</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2016-12-08">数学的思考の技術 (ベスト新書)</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2016-12-07">NHKサイエンスZERO 長寿遺伝..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2016-11-25-3">しょうがLife-カラダを温めるし..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2016-11-25-2">好評の「すっきり片づく収納ワザ」を..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2016-11-25-1">高校時代にしておく50のこと (Y..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2016-11-25">好評の「家事のコツ」を222集めま..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2016-10-28">サラバ!</a></li> </ul> </div> <div class="sidebar-end"></div> </div> <div class="sidebar" id="category"> <h3 class="sidebar-title">マイカテゴリー</h3> <div class="sidebar-body"> <ul> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c63370-1">ビジネス</a>(154)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c66977-1">思考</a>(82)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300137540-1">資産</a>(62)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300141890-1">健康</a>(128)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300294699-1">雑学</a>(197)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300387723-1">子育て</a>(148)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300515359-1">プログラミング</a>(43)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300577155-1">家事</a>(68)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2300988640-1">小説</a>(65)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2301158395-1">自然科学</a>(81)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2301655003-1">語学</a>(16)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/c2301655075-1">農業</a>(12)</li> </ul> </div> <div class="sidebar-end"></div> </div> <div class="sidebar"> <h3 class="sidebar-title">広告</h3> <div class="sidebar-body custom-body"> <center> <a href="http://px.a8.net/svt/ejp?a8mat=1ZP42S+1YUYVU+348+699KH" target="_blank"> <img border="0" width="160" height="600" alt="" src="http://www21.a8.net/svt/bgt?aid=120424420119&wid=018&eno=01&mid=s00000000404001051000&mc=1"></a> <img border="0" width="1" height="1" src="http://www16.a8.net/0.gif?a8mat=1ZP42S+1YUYVU+348+699KH" alt=""></center> </div> <div class="sidebar-end"></div> </div> <div class="sidebar"> <h3 class="sidebar-title">広告</h3> <div class="sidebar-body custom-body"> <center> <a href="http://px.a8.net/svt/ejp?a8mat=1ZRBVO+AQEPI2+50+3T1K0X" target="_blank"> <img border="0" width="160" height="600" alt="" src="http://www27.a8.net/svt/bgt?aid=120527844649&wid=018&eno=01&mid=s00000000018023018000&mc=1"></a> <img border="0" width="1" height="1" src="http://www14.a8.net/0.gif?a8mat=1ZRBVO+AQEPI2+50+3T1K0X" alt=""> </center> </div> <div class="sidebar-end"></div> </div> <div class="sidebar"> <h3 class="sidebar-title">PRローテバナー</h3> <div class="sidebar-body custom-body"> <center> <iframe src="http://rcm-fe.amazon-adsystem.com/e/cm?t=aaaaaaaaaaam-22&o=9&p=11&l=ur1&category=amazonsale&f=ifr" width="120" height="600" scrolling="no" border="0" marginwidth="0" style="border:none;" frameborder="0"></iframe> </center> </div> <div class="sidebar-end"></div> </div> <div class="sidebar"> <h3 class="sidebar-title">リンク集</h3> <div class="sidebar-body"> <ul> <li><a href="http://yonda-ehon.blog.so-net.ne.jp/" >昨日子どもに読んだ本</a></li> <li><a href="http://boardgamekids.blog.so-net.ne.jp/" >子どもと遊んだゲーム</a></li> <li><a href="http://book-ranking.lolipop.jp/book-note/index.html" >面白かった本ランキング</a></li> </ul> </div> <div class="sidebar-end"></div> </div> <!-- Massage --> <div id="rssRegistBox" class="sidebar"> <span id="myblog-display-area-no-login"> <div id="rssRegist" style="margin-bottom:3px;"> <a href="https://www.so-net.ne.jp/blog/_toh/regist/?campaign_no=911:220603">ブログを作って読者登録</a> </div> <div style="font-size:x-small; text-align:center;"> <p style="margin-bottom:6px;">このブログの更新情報が届きます</p> すでにブログをお持ちの方は[<a href="https://blog.so-net.ne.jp/MyPage/blog/user_rss/list?url=http://yo-yaku.blog.so-net.ne.jp/index.rdf">こちら</a>] </div> </span> <span id="myblog-display-area-login" style="display:none;"> <div id="rssRegist" style="margin-bottom:0;"> <a href="https://blog.so-net.ne.jp/MyPage/blog/user_rss/list?url=http://yo-yaku.blog.so-net.ne.jp/index.rdf">読者になる(RSSに登録)</a> </div> </span> </div> <div class="sidebar" id="search"> <h3 class="sidebar-title">検索ボックス</h3> <div class="sidebar-body"> <form action="http://yo-yaku.blog.so-net.ne.jp/search/"> よよ さんの記事から<br /> <input value="" name="keyword" type="text" class="search-tbox" /> <input value="検索" type="submit" class="input-submit" class="search-button" /> </form> </div> <div class="sidebar-end"></div> </div> <div class="sidebar" id="profile"> <h3 class="sidebar-title"><a href="http://yo-yaku.blog.so-net.ne.jp/">よよ</a> さん</h3> <div class="sidebar-body"> <dl> <dt class="profile-img"><img alt="よよさんの画像" src="http://blog.so-net.ne.jp/_profile/_35e/yo-yaku/_m_yo-yaku.png?2017-06-2216:46:17" border="0" width="72"></dt> <dd class="profile-status"> <span class="nice">nice!</span> 211 <br /> 記事 1059 <br />テーマ <span class="blogthemeLink"><a href="http://blog.so-net.ne.jp/_contents/blog_theme/0013/">本</a> (17位)</span> <br /> <span class="profileLink"><a href="http://yo-yaku.blog.so-net.ne.jp/_pages/user/profile/index">プロフィール</a></span> <br /> <span id="blog-introduction-area-login" style="display:none;"> <a href="" id="blog-introduction-button" onclick="blogIntroductionInProfile(this); return false;">ブログを紹介する</a><a href="http://blog-help.blog.so-net.ne.jp/introduction"><img border="0" alt="?" src="/_common/img/myblog/icon_help.gif" style="vertical-align: middle; margin-right: 3px;"></a> <p id="blog-introduction-msg-area"></p> </span> <span id="blog-introduction-area-no-login"> <a href="" id="blog-introduction-button-no-login" onclick="blogIntroductionInProfileNoLogin(this); return false;">ブログを紹介する</a><a href="http://blog-help.blog.so-net.ne.jp/introduction"><img border="0" alt="?" src="/_common/img/myblog/icon_help.gif" style="vertical-align: middle; margin-right: 3px;"></a> <p id="blog-introduction-msg-area-no-login" style="display:none;" > ログインすると自身のブログで本ブログを紹介できます </p> </span> </dd> </dl> </div> <div class="sidebar-end"></div> </div> <div class="sidebar" style="text-align:center"> <!-- --> </div> <div class="sidebar" id="favoredMember"> <h3 class="sidebar-title"><a href="http://yo-yaku.blog.so-net.ne.jp/">よよ</a> さんの記事をnice!と思った人 (全53人)</h3> <div class="sidebar-body"> <ul> <li><a href="http://tetsuwangenshi.blog.so-net.ne.jp/">鉄腕原子</a></li> <li><a href="http://atmick.blog.so-net.ne.jp/">@ミック</a></li> <li><a href="http://doraken.blog.so-net.ne.jp/">はじドラ</a></li> <li><a href="http://takeaction.blog.so-net.ne.jp/">サイトー</a></li> <li><a href="http://akibaduga.blog.so-net.ne.jp/">ゆりかサイト</a></li> <li><a href="http://ikujiji.blog.so-net.ne.jp/">しゅわっち</a></li> <li><a href="http://makimaki56.blog.so-net.ne.jp/">makimaki</a></li> <li><a href="http://brightness.blog.so-net.ne.jp/">brightness</a></li> <li><a href="http://fxshufoo.blog.so-net.ne.jp/">ゆきママ</a></li> <li>ゆなお</li> <li><a href="http://mi--ma.blog.so-net.ne.jp/">みな</a></li> <li><a href="http://daydekigoto.blog.so-net.ne.jp/">さきまる</a></li> </ul> </div> <div class="sidebar-end"></div> </div> <!-- Massage --> <div id="send-message"> <a href="https://www.so-net.ne.jp/blogcruiser/message/post/edit.do?toPersonalId=000211639993" target="msg"><img src="http://blog.so-net.ne.jp/_common/img/btn_msg.gif" alt="メッセージを送る" /></a> </div> <div id="powered"> <script type="text/javascript"><!-- (function() { var p=(('https:'==document.location.protocol)?'https:':'http:'); var s=p+'//www.accanalyze.com/js/tracking.js'; document.write('<scr'+'ipt src="'+s+'?ti=3388&'); document.write('referrer='+encodeURIComponent(document.referrer)+'&'); document.write('width='+screen.width+'&'); document.write('height='+screen.height+'&'); document.write('color='+screen.colorDepth+'"></scr'+'ipt>'); })(); // --> </script><span id="myblog-poweredby-no-login"><a href="https://www.so-net.ne.jp/blog/_toh/regist/"><img src="http://blog.so-net.ne.jp/_css_header/img/btn_join.gif" border="0" alt="ブログを作る(無料)" style="margin:0;" /></a> <table border="0" cellpadding="0" cellspacing="0" class="common-link"> <tr> <td> <ul> <li><a href="http://www.so-net.ne.jp/blog/about/">はじめてガイド</a></li> <li><a href="http://www.so-net.ne.jp/blog/about/moving.html">ブログお引越しガイド</a></li> <li><a href="http://blog.so-net.ne.jp/_contents/theme/">デザインテンプレートを見る</a></li> </ul> </td> </tr> </table> <a href="http://blog.so-net.ne.jp/"><img src="http://blog.so-net.ne.jp/_images/blog/_523/filestore/powered.gif" border="0" alt="powered by So-netブログ" /></a></span> <span id="myblog-poweredby-login" style="display:none;"><a href="http://blog.so-net.ne.jp/"><img src="http://blog.so-net.ne.jp/_images/blog/_523/filestore/powered.gif" border="0" alt="powered by So-netブログ" /></a></span> </div> <div class="sidebar" id="archive"> <h3 class="sidebar-title">月別表示</h3> <div class="sidebar-body"> <ul> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/201704-1">2017年04月</a>(2)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/201701-1">2017年01月</a>(1)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/201612-1">2016年12月</a>(2)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/201611-1">2016年11月</a>(4)</li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/archive/201610-1">2016年10月</a>(7)</li> </ul> </div> <div class="sidebar-end"></div> </div> <div class="sidebar" id="latestComment"> <h3 class="sidebar-title">最近のコメント</h3> <div class="sidebar-body"> <ul> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2012-01-05-3">こんにちは。突然のコメントすみませ..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2008-08-30">コメントに気がつくの遅くてすみませ..</a></li> <li><a href="http://yo-yaku.blog.so-net.ne.jp/2008-08-30">わたくしも使っています。 来..</a></li> </ul> </div> <div class="sidebar-end"></div> </div> <div class="sidebar"> <h3 class="sidebar-title">PR</h3> <div class="sidebar-body custom-body"> <center> <script charset="utf-8" type="text/javascript"> amzn_assoc_ad_type = "responsive_search_widget"; amzn_assoc_tracking_id = "aaaaaaaaaaam-22"; amzn_assoc_marketplace = "amazon"; amzn_assoc_region = "JP"; amzn_assoc_placement = ""; amzn_assoc_search_type = "search_widget"; amzn_assoc_width = "auto"; amzn_assoc_height = "auto"; amzn_assoc_default_search_category = ""; amzn_assoc_default_search_key = ""; amzn_assoc_theme = "light"; amzn_assoc_bg_color = "FFFFFF"; </script> <script src="//z-fe.amazon-adsystem.com/widgets/q?ServiceVersion=20070822&Operation=GetScript&ID=OneJS&WS=1&MarketPlace=JP"></script> </center> </div> <div class="sidebar-end"></div> </div> <div class="sidebar"> <h3 class="sidebar-title">広告</h3> <div class="sidebar-body custom-body"> <center> <a href="http://px.a8.net/svt/ejp?a8mat=25IRSZ+G7GTMA+D8Y+6IP2P" target="_blank"> <img border="0" width="120" height="600" alt="" src="http://www26.a8.net/svt/bgt?aid=130206275980&wid=001&eno=01&mid=s00000001717001095000&mc=1"></a> <img border="0" width="1" height="1" src="http://www16.a8.net/0.gif?a8mat=25IRSZ+G7GTMA+D8Y+6IP2P" alt=""> </center> </div> <div class="sidebar-end"></div> </div> <div id="rssfeed"> <img src="http://blog.so-net.ne.jp/_common/img/rssfeed_s.gif" alt="RSS" align="absmiddle" /> <a href="http://yo-yaku.blog.so-net.ne.jp/index.rdf">RSS1.0</a> | <a href="http://yo-yaku.blog.so-net.ne.jp/index.xml">RSS2.0</a> </div> </div> </div> </div> <span id="iphone-link" style="display:none; padding-top:3px;text-align:left;"><a href="javascript:document.cookie='force_pc=0; max-age=15768000; path=/'; document.location='/'">スマートフォン専用ページを表示</a></span> <script type="text/javaScript"><!-- if ((0 <= navigator.userAgent.indexOf('iPhone')) || (0 <= navigator.userAgent.indexOf('Android'))) { document.getElementById('iphone-link').style.display = 'block'; } //--></script> <script type="text/javascript" src="http://www.so-net.ne.jp/search/javascripts/research/research.js"></script> <script type="text/javascript"> new ResearchBox({from:'blog_sarani'}); </script> <script type="text/javascript" charset="UTF-8" src="http://blog.so-net.ne.jp/_common/js/select_search.js"></script> <script type="text/javascript"> <!-- new SelectedSearchBox({from: 'blog_select', linkTarget: '_blank'}); // --> </script> <div id="footer"> <p class="footlink"><a href="http://blog-help.blog.so-net.ne.jp/">使い方</a> - <a href="http://faq.blog.so-net.ne.jp/">Q&A</a></p> <p class="copyright"><a href="http://www.so-net.ne.jp/">So-netトップ</a> - <a href="http://blog.so-net.ne.jp/" title="So-netブログ">ブログ</a> - <a href="http://www.so-net.ne.jp/point/" title="ソネットポイント">ソネットポイント</a></p> </div> <script type="text/javascript"> var name = "i-aad"; var dc = document.cookie; var prefix = name + "="; var begin = dc.indexOf(prefix); if (begin != -1) { var dom_obj = document.getElementById('ad-days-area'); if (dom_obj) dom_obj.style.display = "none"; } </script> <div id="ad-tablet"> <script type="text/javascript" src="https://sda.seesaa.jp/frame/TfYm1D7V34" charset="UTF-8"></script> </div> <script type="text/javascript"> function getCookieByMatch(regex) { for (var cs = document.cookie.split(/;\s*/), i = cs.length - 1; i >= 0; i--) { if (cs[i].match(regex)) { return cs[i]; } } } if (getCookieByMatch(/sonet-sid-L1|blog-sid/)) { var dom_tablet = document.getElementById('ad-tablet'); if (dom_tablet) dom_tablet.style.display = "none"; } </script> </body> </html>