2011年10月18日

C# インストーラーのような画面切り替え機能を作る

 .NET Frameworkのフォームに配置するコントロールには、インストーラーのような1画面ずつ切り替える機能を実現する方法は特別に用意されてはいません。そこで、このような機能が必要になったときは自分が画面切り替えを実装するわけですが、[次へ]ボタンを押すたびに、関係するすべてのコントロールの表示、非表示を切り替えるようにコードを書いてしまうと、非常に保守性が悪くなるのは明らかです。

 実は、TabControlやPanelを使えば、インストーラーのような画面切り替え機能を割と簡単に実現できます。今回はそのやり方を紹介します。

手順1フォームデザイナで、インストーラの1画面目に相当するパネルpanel1を作成します。
手順2同様に、2画面目に相当するpanel2を作成します。
手順3panel2のVisibleプロパティをfalseにします(2画面目は最初に表示しないため)。
手順4次へボタンに相当するnextButtonを作成します。
手順5nextButtonのTextプロパティを[次へ]に変更します。
手順6nextButtonをダブルクリックし、次のコードを書きます。
人気ブログランキング

private void nextButton_Click(object sender,EventArgs e)
{
  switch(step)
  {
    case 1:
      panel1.Visible=false;
      panel2.Visible=true;
      step=2;
      return;
    case 2:
      MessageBox.Show("インストール終了");
      DialogResult=DialogResult.OK;
      return;
  }
}

 この時点でフォームエディタ上では次の画面1ように表示されます。手順には書いていませんが、説明の便宜上、ここではpanel1とpanel2の背景色(BackColor)を設定し、パネルの名前を表示するラベルを左上に追加しました。
Installer00.png
画像1

 実行すると、画面2のように表示されます。[次へ]をクリックするとpanel1が消え、panel2が表示されます。もう一度[次へ]をクリックすると「インストール終了」というメッセージを表示してフォームが閉じられます
Installer01.png
画像2

 さて、切り替え自体はできるようになりました。しかし、各パネルは画面の半分程度にしか表示されていません。これでは切り替えを使っている意味がありません。

 これをフォーム全体に表示させるには簡単です。各パネルのDockプロパティをFillにするだけです。しかし、本当にフォーム全体に表示すると[次へ]ボタンと重なってしまいます。

 そこで、もうひとつパネルを用意し、そのパネルの中で切り替わるように作ります。
手順7パネルouterPanelを作ります。
手順8panel1とpanel2をouterPanelの中に入れます。
手順9コンストラクターを次のように書きます。

public Form1()
{
  InitializeComponent();
  panel1.Dock=DockStyle.Fill;
  panel2.Dock=DockStyle.Fill;
}

 手順9でコンストラクターのコードを書く代わりに、フォームデザイナ上でpanel1とpanel2のDockをFillに設定しても構いません。

 この時点で、フォームデザイナ上では画面3のように表示されます。起動すると画面4が表示されます。
Installer02.png
画面3

Installer03.png
画面4

 画面4で、ようやく目的の機能の大半が実現できたと思います。これには[戻る]ボタンがありませんし、アプリケーションによっては[完了]や[インストール]ボタンが必要になるでしょうが、[次へ]ボタンと同じ要領で作れば問題ないと思います。

 問題なのは開発画面、つまり画面3の方です。フォームデザイナ上では個々のパネルのパネルが狭いので、パネルの中を編集するときにパネルを大きくしたり、他のパネルを小さくしたりすることになります。6画面くらいのインストールになると、1つ1つの画面を編集するのが非常に面倒になります。

 これを解決するには、TabControlを使用します。
手順10outerPanelの中に新しいTabControlを追加し、tabControl1という名前にする。
手順11tabControl1のtabPage1内にpanel1を、tabPage2内にpanel2を移動する。
手順12panel1とpanel2とtabControl1のDockプロパティをFillにする。

 画面5は、手順11まで、画面6は手順12まで実行したときのフォームデザイナ上のフォームです。
Installer04.png
画面5

Installer05.png
画面6

 さらに、コンストラクターを次のように書き換えます。
public Form1()
{
  InitializeComponent();
  panel1.Parent=outerPanel;
  panel2.Parent=outerPanel;
  tabControl1.Visible=false;
}

 実行結果は先ほどの画面4と変わらないのですが、フォームデザイナ上ではタブ切り替えができるのでずいぶん便利になりました。
web拍手 by FC2
posted by 北条利彦 at 00:18 | Comment(1) | TrackBack(0) | C# | このブログの読者になる | 更新情報をチェックする

2011年09月19日

[PowerShell] 成分解析を行う

はじめに
 一時期流行した「成分解析」をPowerShellで実装してみました。
人気ブログランキング

オブジェクトの生成
$analysis = New-Object PSObject
$analysis | Add-Member NoteProperty IngredientNames `
  @(
     "アルコール","エネルギー","おいしい水","おとぎ話",
     "かさぶた","スリル","ぜい肉","みんなの願い",
     "やましさ","ワガママ","哀愁","安心感","羽毛","下心",
     "我慢","怪しさ","勘違い","感動","甘味料","岩石",
     "奇跡","気合い","強さ","筋肉","金目の物","苦労",
     "孤独","黒い計画","骨","子どもたちの夢","思いやり",
     "思い出","自由","秋の味覚","出来心","女らしさ",
     "消毒液","情熱","真心","清き一票","憎しみ",
     "大自然の恵み","大人の秘密","誰かの犠牲","男らしさ",
     "天のお告げ","天使の祝福","天然ボケ","怒り","毒物",
     "鈍感力","忍耐","粘膜","農作物","美しさ","魅力",
     "命の危険","優しさ","勇気","裏切り","涙"
   )
$analysis | Add-Member ScriptMethod CreateRandomUniqueValues `
  {
    param([int]$length,[int]$max,[Random]$random)
    $values = @()
    while($values.Count -lt $length)
    {
      $value = $random.Next($max-$values.Count+1)
      for($i = 0; $i -lt $values.Count; $i++)
      {
        if($value -ge $values[$i])
        {
          $value++
        }
      }
      $values += $value
      [Array]::Sort($values)
    }
    return $values
  }
$analysis | Add-Member ScriptMethod CreateRandomDevidedValues `
  {
    param([int]$sourceValue, `
      [int]$divisionCount,[Random]$random)
   
    $results = @()
    $rateRest = $sourceValue
   
    for($i=0; $i -lt $divisionCount; $i++)
    {
      $max = $rateRest-($divisionCount-$i-1)
      if($i -eq $divisionCount-1) { $rate = $rateRest }
      else { $rate = $random.Next($max)+1 }
      $results+=$rate
      $rateRest-=$rate
    }
    return $results
  }
$analysis | Add-Member NoteProperty ElementsMaxCount 5
$analysis | Add-Member ScriptMethod AnalyseRaw `
  {
    param([string]$name)
    $trimedName = $name.Replace(" ","").Replace(" ","")
   
    $random = New-Object Random $trimedName.GetHashCode()
    $elementsCount = $random.Next($this.ElementsMaxCount)+1
   
    $rates = @($this.CreateRandomDevidedValues( `
      100,$elementsCount,$random))
    $indices = @($this.CreateRandomUniqueValues( `
      $elementsCount,$this.IngredientNames.Length-1,$random))

    $results = @()
    for($i=0; $i -lt $elementsCount; $i++)
    {
      $result = New-Object PSObject
      $result | Add-Member NoteProperty Rate $rates[$i]
      $result | Add-Member NoteProperty Element `
        $this.IngredientNames[$indices[$i]]
      $results+=$result
    }
    $results | Sort-Object Rate -Descending
  }
$analysis | Add-Member ScriptMethod Analyse `
  {
    param([string]$name)

    $result = @($this.AnalyseRaw($name))
    if($result.Length -eq 1)
      { $format = "{0}はすべて{2}でできています。" }
    else
      { $format = "{0}の{1}%は{2}でできています。" }
   
    $this.AnalyseRaw($name) `
      | %{ $format -f $name,$_.Rate,$_.Element }
  }


実行例
 ちゃんと分析できています。やろうとすれば結果をある程度調整することもできますが、そのようなコードは入れていません。

PS U:\> $analysis.Analyse("谷垣禎一")
谷垣禎一の75%はやましさでできています。
谷垣禎一の17%は筋肉でできています。
谷垣禎一の6%は優しさでできています。
谷垣禎一の1%は怪しさでできています。
谷垣禎一の1%は子どもたちの夢でできています。
PS U:\>
web拍手 by FC2
posted by 北条利彦 at 16:24 | Comment(0) | TrackBack(0) | PowerShell | このブログの読者になる | 更新情報をチェックする

2011年07月07日

Thunderbird 3でメール本文内を検索する [電子メール]

 Thunderbird 3では、Ctrl+Fを押してもクイックフィルタの入力に移ってしまい、これでは1つのメッセージの本文内を検索することができません。[編集]メニューの[検索]にある[このメッセージを検索]をクリックすれば本文内検索ができそうな気がしますが、これもやはりクイックフィルタになってしまいます。
人気ブログランキング
 実は、クイックフィルタの入力欄にキャレットがある状態でCtrl+Fを押したり、[編集]→[検索]→[このメッセージを検索]をクリックすると、本文内検索ができるようになります。
TbFind1.png

 別の方法として、メッセージを別のタブで表示しているときに、Ctrl+Fや[編集]メニュー→[検索]→[このメッセージを検索]でも本文内検索ができるようになります。
TbFind2.png
web拍手 by FC2
posted by 北条利彦 at 00:29 | Comment(1) | TrackBack(0) | 電子メール | このブログの読者になる | 更新情報をチェックする

2011年06月08日

[C言語] ランダムな順列を出力する

 0〜5の6通りの値から重複のないように、かつランダムに数字を3つ選び、選んだ順番に表示します。

 これを実装するときに難しいのは、どうやって重複を避けるかということです。単純に0〜5の6通りの値を3回乱数で選んでしまうと、もちろん一定確率で重複する数字が出てくるので目的の機能を実現できません。過去に出現した値を記憶しておいて、乱数で選んだ数字が重複していたら選び直す……という方法も可能ですが、重複したときに無駄な感じがします。

 これから紹介する方法は、「表示できる候補」を配列の中に格納しておき、数字を1つ表示するたびにその数字を配列から削除するというものです。この方法の概要を次の図に示します。
Permutations.png

 図に出てきた変数を解説していきます。まず、iはループ変数で、1件出力するたびに1増えていきます。ここでは3桁出力するので0〜2の値をとることになります。patternsは、初期状態における表示可能な候補数です。ここでは0〜5の6通りですから、常にpatterns==6となります。stockは出力できる値の候補を格納しておく配列です。1度出力した値はもう出力できないのでstockから削除していきます。stockに格納されている値のうち、先頭からpatterns-i個のみが出力可能です。最後に、indexは、stockの何番目の値を出力するかを表す変数で、この値は乱数で決まります。

 ソースコードは次の通りです。実行すると、3桁の順列が出力されます。
人気ブログランキング

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main(void)
{
  int i,j;
  int patterns=6; /* 6通りの数字を表示 */
  int stock[]={1,2,3,4,5,6}; /* この中の数を表示 */
  
  srand(time(NULL)); /* ランダムにする。 */
  for(i=0; i<3; i++)
  {
    /* stockの何番目か決める */
    int index=rand()%(patterns-i);
    /* index番目を出力 */
    printf("%d",stock[index]);
    /* 出力した値はstockから削除 */
    for(j=index; j<patterns-1; j++)
      stock[j]=stock[j+1];
  }
  return 0;
}
web拍手 by FC2
posted by 北条利彦 at 23:52 | Comment(1) | TrackBack(0) | C言語 | このブログの読者になる | 更新情報をチェックする

2011年05月29日

更新しないことの問題、勝手に更新されることの問題

人気ブログランキング

■古いバージョンを使い続けることの問題

 古いソフトウェアをいつまでも使用しているといろいろと問題が出てきます。

 その代表格がサポート切れです。バージョンが古すぎてサポートが打ち切られてしまうと、ソフトウェアに欠陥が見つかっても修正されなくなるのです。そのまま使うのは危険ですからソフトウェアの更新が必要になります。

 パソコンに詳しくない人はこのような事情を知らず、長らく更新しようとしない人が多々います。

 長期間更新しない理由をもうひとつ挙げると、新旧のバージョン間の互換性があります。古いバージョンにしか存在しない機能が必要であるとか、あるいは機能自体は存在しても、動作が異なるから新しいバージョンが使えないということです。以前の記事で取り上げた「IE6でしか正しく表示できないウェブサイトを作ってしまったから更新できない」というケースもこれに該当します。

 このようなことが原因で利用者はソフトウェアを更新しないという実体があります。一方で、開発元にとっては早めに利用者が更新して最新版に乗り換えてくれた方が都合がよいのです。なぜなら、自社製品に欠陥が見つかったらそれを修正する必要が出てくるためです。

 たとえばFirefoxはバージョン4.0と3.6がサポートされていますが、Firefoxに欠陥が見つかった場合、開発元であるMozillaは両方に対して更新版を作るする必要があります。もし利用者全員が4.0に乗り換えていたら、Mozillaは4.0の更新版を作ればすむので楽になります。

■強制的に更新されるソフトウェアの問題

 そこで、「強制的に更新してしまえ」という発想に出るソフトウェアもあります。新しいバージョンが出ているか勝手にチェックを始めて、出ていれば勝手に更新するわけです。こうすることで、先に挙げたような更新されないことによる問題は解決します。しかし、強制的に更新されるとそれはそれで問題があります。

 ソフトウェアの更新は、バグの修正のような小さなものでも、ソフトウェアの利用者にとってリスクが伴います。バグを修正するための更新版自体にバグが含まれている可能性があるためです。どんなにテストをしようとその可能性をゼロにすることはできません。また、機能の追加や変更を伴う更新の場合は先ほど指摘したような互換性の問題があり、更新することで古い機能が使えなくなることもあります。

 こういう場合、普通のソフトウェアであれば、コンピューターの管理者が更新の可否を判断し、利用者に対して「この更新は実施しないでくださいね」と通知したりするわけです。

 しかし、強制的に更新されるソフトウェアの場合はそれができません。最新版のソフトウェアに欠陥が含まれていた場合は次のバージョンが出るまで危険にさらされることになります。また、最新版になって必要な機能がなくなってしまったら、同じような機能を持つ別のソフトウェアを使うか、その機能自体をあきらめることになります。

 強制的に更新されるソフトウェアの例としてGoogle Chromeがあります。そしてGoogle Chromeには、それまで存在していた機能を削除してしまった例があります。H.264という形式の映像ファイルの再生機能がそれで、ウェブは無料であるべきというGoogleの思想に反するため、特許料が必要なH.264の再生機能は削除されました。特許料が払えないからという理由ではないのです。これは利用者不在の決定といえます。
web拍手 by FC2
posted by 北条利彦 at 18:30 | Comment(0) | TrackBack(0) | システム管理 | このブログの読者になる | 更新情報をチェックする

2011年04月25日

オープンソースより高いものはない?

 オープンソースのOSであるLinuxのカーネル(中枢機能)に特許違反があるということで、それを利用しているGoogleがBedrock Computer Technologiesという企業に訴えられていたようですが、最近、Googleが敗訴しました。

Linuxコードの利用をめぐる特許訴訟でグーグルが敗訴
http://japan.cnet.com/news/business/35002053/
人気ブログランキング
オープンソースとは

 まずオープンソースの「ソース」とは「ソースコード」の略です。ソースコードは、人が英単語や記号の羅列を入力してできたテキストファイルで、コンピューターがどのように動けばいいのか事細かに書かれています。

 ソースコードは作者の考え次第で世間一般に公開されるものもあれば、公開されないものもあります。公開されている場合、スキルさえあれば元の作者でなくても、そのソースコードを編集することで、独自に機能を拡張したり余計な機能を削除することができます。

 オープンソースソフトウェアはそれを発展させたもので、単に1人(または1企業)がソースコードを書いて公開するというだけではなく、ソースコードの作成に誰でも関われるようにして、みんなで開発していくようにしたソフトウェアです。

 Linux以外のオープンソースソフトウェアの例として、ウェブブラウザーのFirefoxがあります。

なぜGoogleが訴えられたのか

 通常、ソフトウェアに特許違反があった場合、そのソフトウェアを作っている会社が訴えられます。しかし、オープンソースの場合、特定の企業や特定の個人がつくっているわけではありません。そのため、訴えるべき開発元というのは定まらないのです。

 かといって、オープンソースソフトウェアによって特許や著作権が侵害されたら泣き寝入りで、まるっきり無法状態になっているというわけではありません。開発元か定まらない以上、ソフトウェアを使用している企業や個人が責任を持たなければならないためです。GoogleもLinuxを使用していているのですから、特許に違反している機能を使っていることになります。そして、その特許違反はGoogleが責任を負うことになります。そのためにGoogleは訴えられ、敗訴したのです。

オープンソースを使用するリスク

 CNETの記事にはYahooやAmazonなどの有名企業の名前が挙がっていますが、ここに挙げられた企業以外でも、Linuxを使っている限り特許違反で訴えられる恐れがあります。しかも特許違反は1つや2つではなく283件あるのではないかと言われています。

 オープンソースソフトウェアは、どこの誰が書いたのか分からないソースコードで作られているわけですから、どこかに特許違反や著作権違反があるか把握しにくいところがあります。さらに悪いことに、オープンソースソフトウェアの多くは無料であるために、何か問題が起きたときに責任を取ってくれる人がおらず、使用者が自己の責任において使用しなければならないのです。
web拍手 by FC2
タグ:特許 Linux
posted by 北条利彦 at 22:08 | Comment(0) | TrackBack(0) | ソフトウェア | このブログの読者になる | 更新情報をチェックする

2011年04月23日

iPadとiPhoneとAndroidは位置情報を勝手に送信している

 記事タイトルに挙げた製品はここのところ売れ行きが好調な人気商品ですが、GPSで取得した情報を密かに端末に保存していたり、それを勝手にAppleやGoogleに送信しているそうです。これらの製品は買わないことを推奨します。
人気ブログランキング

・ITmedia : iPhoneがユーザーの位置情報をこっそり記録――研究者の指摘で発覚
 http://www.itmedia.co.jp/news/articles/1104/22/news019.html

・ITmedia : Androidもユーザーの位置情報を記録、Googleに送信か
 http://www.itmedia.co.jp/news/articles/1104/22/news063.html


 iPadやiPhoneを作っているAppleは、Mac OS、iMac、iPodなどの製品を出してきました。Mac OSは利用者にとって扱いやすいパソコンを目指していて、Windowsほどのシェアはないにしても、根強いファンを持っています。iMacはスケルトン仕様のディスプレー一体型パソコンとして始まり、ブームを巻き起こしたことがありました。iPodも、CD媒体で高値で音楽を売ろうとする業界に対し、ネットワークを経由して安値で音楽を売る手法を確立した製品でした。どれも消費者本意の製品であり、Appleは消費者に目の向いた企業だったはずですが、今回のような問題を起こしてしまったのは残念でなりません。

 一方のGoogleは、プライバシーをぞんざいに扱っているのようで、たびたび問題を起こしています。Googleマップのストリートビュー機能では、街中を車で撮影して回ってそれをインターネットに公開しているため、各地で訴訟を起こされています。さらに、その撮影車で各家庭の無線LANの情報を収集していたこともありました。同じくGoogleマップのマイマップ機能は、Googleマップの好きな位置に好きな情報を追加できるというものですが、初期設定値が「一般公開」となっているためにプライバシーを意図せず公開してしまう人が続出するというトラブルがありました。そこに、今回の位置情報を勝手に送信する問題が起きたわけですから、Googleの製品やサービスを利用すること自体にリスクがあると考えた方がよいでしょう。
web拍手 by FC2
posted by 北条利彦 at 07:09 | Comment(0) | TrackBack(0) | コンピューター本体 | このブログの読者になる | 更新情報をチェックする

2011年03月23日

アドオンなしでFirefoxのユーザーエージェントを変更する

 Firefoxでユーザーエージェントを変更する方法の一つに「User Agent Switcher」というアドオンを使う方法があります。しかし、単純にユーザーエージェントを変更するだけならアドオンをインストールする必要はなく、Firefoxの設定変更だけで実現することができます。
人気ブログランキング
 この設定はabout:configを使うものですが、余計なところを変更するとFirefoxの動作に支障をきたす恐れがあります。設定変更は自己の責任で慎重に行って下さい。

1. ロケーションバーに「about:config」と入力します。

2. フィルタに「general.useragent.override」と入力します。

3a. ここで「general.useragent.override」が表示されなければ値を作成します。ウインドーの何もない部分を右クリックして「新規作成」→「文字列」で「新しい文字列の設定名」ダイアログでは「general.useragent.override」と入力、「文字列を入力して下さい」ダイアログでは設定したいユーザエージェントを入力します。

3b.「general.useragent.override」が表示されれば、表示された項目をダブルクリックして「文字列を入力して下さい」ダイアログで設定したいユーザーエージェントを入力します。

4. 次の画面のように表示されればOKです。
FirefoxConfig.png


5. 「診断くん」というサイトでユーザーエージェントを確認することができます。赤枠は説明用に付け足したもので、正しく設定されていればHTTP_USER_AGENTの値が先ほど設定した値になります。
FirefoxConfig3.png
web拍手 by FC2
タグ:Firefox
posted by 北条利彦 at 20:45 | Comment(0) | TrackBack(0) | ウェブブラウザー | このブログの読者になる | 更新情報をチェックする

2011年03月05日

ツイッター(Twitter)とは

 ご存じのように、ツイッターは有名人が何人もユーザー登録していたり、テレビのニュースでも取り上げられたほど有名なサービスです。いまさらなのですが、最初は私もいろいろととっつきにくいと感じたことがあるので、今回はツイッターを解説したいと思います。
人気ブログランキング
■(ブログ+チャット)÷2=ツイッター?

 まず、基本的なところですが、ツイッターは自分で投稿した文章(ツイート)を他人に見てもらったり、あるいは他人のツイートを見たりするためのサービスです。

 これを聞いただけなら同じようなサービスはいくつもあって、たとえばブログも自分で書いた文章を見てもらったり他人のを見たりします。基本的に、ブログに集まってくる人に人数制限はなく、書いた記事は(削除しない限り)ずっと残ります。

 インターネットのサービスは他に、チャットというものもあります。こちらは、少人数でチャットルームに集まり、その人たちと会話を交わすというものです。そのときの会話は、その瞬間しか見れません。

 ツイッターはその両方の特徴を持ち合わせています。ツイッターは人数の制限がなく大人数で参加ができます。みんなが投稿したツイートが大量に一覧表示され、古いものは流れていってしまうので、古いツイートを見ることはまずありません。そのため、「その瞬間に起きていること、思ったこと」が重要になってきます。

■検索が重要

 ブログでは、各人のブログにアクセスすれば投稿した記事がいくつも表示されますし、ブログ以外でもニュースサイト、ショッピングなどなど、アクセスしただけでいろいろと有用な情報がたくさん表示されます。しかし、ツイッターは検索しないと何も見れないといってもいいです。登録してから何もしないと、他の人のツイートは表示されません。他の人のツイートを見るには何といっても検索が大事です。それと関わってくるのが「ハッシュタグ」などです。

 ツイッターは何か検索するとその検索結果が表示されるのですが、検索結果を見ていると新しいツイートが刻一刻と表示されていきます。これを利用した機能がハッシュタグで、#から始まる半角英字の列が使われます。たとえば #tbs はTBSの番組を見ている人が検索に使用しているハッシュタグなので、テレビ番組を見ている他の人のツイートが見れるわけです。他にも #nhk #ntv #tvasahi #fujitv などがあります。

 そもそも他の人が何のハッシュタグを検索しているのか分からないのですが、ハッシュタグは忘れて普通に単語を検索しているうちに、ちょうどいいハッシュタグが見つかることがあります。誰かのブログなど、ツイッター以外のサイトにツイッター投稿ボタンがついていることもありますので、それをクリックしてみるという方法もあります。

■フォロー:読者登録

 さて、検索が重要なツイッターですが、検索しなくてもツイートを見れる方法があります。それがフォローです。フォローは実際に使ってみないとどういう機能なのか分かりにくいところがあるのですが、要するに読者登録です。誰かのツイッターアカウントを「フォローする」と、その人のツイートが自分の画面に表示されるようになるのです。逆に誰かにフォローされることもあり、この場合は自分のツイートがその人に表示されるようになります。
web拍手 by FC2
posted by 北条利彦 at 21:48 | Comment(0) | TrackBack(0) | ウェブ | このブログの読者になる | 更新情報をチェックする

2011年02月04日

中央在庫が枯渇したIPv4とは

 報道機関やネットのニュースサイトが報じていますが、ICANNが管理しているIPv4のアドレスが枯渇したそうです。この記事では、IPv4とはそもそも何なのか、それが枯渇したというのは何を意味するのかを解説していきます。

ITmedia:IPv4アドレスの中央在庫が完全に枯渇
http://www.itmedia.co.jp/news/articles/1102/04/news024.html
■通信するとき、何が起きているのか

 まずIPv4というのは「IPアドレスのバージョン4」ということですが、IPアドレスというのは通信相手を指定する番号のことです。ISP(インターネット・サービス・プロバイダー)と契約してネットに接続すると、このIPアドレスが割り当てられ、通信ができるようになります。

 個人のユーザーがパソコンを使う場合でもIPアドレスがISPから割り当てられますし、インターネットを使ってウェブサイトを運営する業者もISPを契約してIPアドレスをもらっています。

 どこかのウェブサイトにアクセスするときにはURLを入力しますが、ウェブブラウザーはURLをもとにして通信先サーバーのIPアドレスを求めて、そのIPアドレスが割り当てられているコンピューターからデータをもらってきます。もらったデータをウェブブラウザーが読み込むとウェブページが表示されるという仕組みです。細かな違いはありますが、メールを送信するときもやはりIPアドレスを元にインターネット上のコンピューターに接続しにいきます。

■IPアドレスの管理団体

 IPアドレスを持つ機器はルーターやサーバー、パソコンなどがあり、総称してホストと呼ぶのですが、同じIPアドレスをもつ複数のホストがあると正常な通信ができなくなってしまいます。なぜなら、複数あるホストのどれに接続すれば良いのか分からなくなってしまうためです。そこで、世界的にIPアドレスが重複しないように管理している団体があります。それがICANNです(正確には、その下部組織のIANA)。

 重複しないように管理しているといっても、全世界のホスト1台1台のIPアドレスを管理しているわけではありません。1つの機関で管理しきれるほど簡単なものではないのです。

 それではどうしているのかというと、ICANNはIPv4アドレスをいくつかの範囲に小分けにして、その小分けにした範囲の管理を別の組織に委託しているのです。IPv4アドレスは0〜255の数値を4つ使って表しますので、「〜から〜の番号のアドレスを管理して下さいね」と頼むわけです。

 その頼まれる方の組織というのは、アジアと太平洋あたりを管理しているAPNICや、北アメリカを管理しているARINなどのように地域ごとに分かれていて、RIR(地域インターネットレジストリー)と呼ばれています。RIRはICANNから管理を委託された範囲をさらに小分けにして、国ごとにIPアドレスを管理している組織に委託します。さらにその組織は、その国のプロバイダーに管理を委託する……ということになります。

 さて、ICANNは、小分けにしたIPアドレスをすべてRIRに割り当てていたわけではありません。RIR側でIPアドレスが足りなくなったらICANNがRIRに順次割り当てる……という方針をとっていました。今回のニュースは、ICANNがRIRに割り当てられるアドレスの範囲がすべて使い尽くしましたよ、という意味です。RIRが各国に割り当てることができなくなった訳ではないので、まだ新しいIPアドレスが使えますが、近いうちにそれもできなくなる見通しです。

 IPアドレスを割り当てることができなくなってしまうと、つまり新しくインターネットを始めたい人がいても始められませんし、新しいウェブサイトを作ろうとしても作れなくなってしまいます。通信をするには接続先のIPアドレスを指定する必要があるのですから、IPアドレスに余りがなければ、それ以上、新たにネットワークに接続するホストを増やすことはできないのです。

■これからの通信

 実は、そうならないようにするための対策があります。それがIPv6です。IPv4ではアドレスを32ビットで表すのに対し、IPv6では128ビットを使って表すので、事実上、無限にアドレスがあるようなものです。

 IPv6を使う通信方式は結構前からありました。そして、今すぐ必要になっています。ですが、各企業や団体が管理しているサーバーのIPv6対応状況はどうかというと、対応はかなり遅れているといわざるを得ません。

 サーバーやパソコン、あるいはOSなどの製品そのものはIPv6に対応しているものが多いのですが、それを運用・管理しているシステム管理者は、IPv6は実績がないからと、製品の設定を変更しIPv6を無効にしてしまうことが多いのです。いつまでも古い方式を使い続けるわけにはいかないのですが、なにかと事なかれ主義に陥りがちなシステム管理者にとって、実績のないIPv6に乗り換えるのは気が進まないのです。このような状況を打破すべくGoogleやYahoo!などは、今年の6月8日をIPv6デーとして、いっせいにIPv6でサービス提供することを決めています。

 IPアドレス管理団体のいうように、IPv6は「今や選択肢ではなく、必須」なのです。一刻も早く世の中のホストがIPv6に対応することを願います。
人気ブログランキング


外部サイトの関連ページ
IMPRESS:IPv4アドレス枯渇で「Google マップ」が“虫食い”に!?
http://internet.watch.impress.co.jp/cda/event/2009/06/10/23748.html
Geekなページ:IPv4アドレス枯渇。その意味と恐らくこれから起きること
http://www.geekpage.jp/blog/?id=2011/2/1/1
web拍手 by FC2
posted by 北条利彦 at 20:05 | Comment(0) | TrackBack(0) | 通信 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。