IPアドレス計算機を作りました


ipaddress

最近PHPのプログラミングが唐突に理解できたのでプログラミングにハマってるんですが、IPアドレスの計算ができるWEBページを作りました。

IPアドレス計算機 | IP Address Calculator (IPv4)
http://zassinojunin.jp/php/ipaddress_calculator.php

私の本業はネットワークエンジニアで、たまーにIPアドレスの計算をすることがあるんですが、どこのサイトも一個のIPアドレスしか計算できなかったり、IPとビットマスクを入力するフォームが分かれてたりと、なんか使いづらいなとずっと思ってたんです。

それで最近の仕事で、IPアドレスの計算を何百個何千個みたいな単位で計算する必要がある業務があって、これはとても一個一個計算していくのは無理だと感じて、最初はエクセルとかでなんとか計算してたんですが、これやっぱりWEB上でできたらいいよねと思ったのがきっかけです。

IPアドレス計算機の特徴

今回私が作ったIPアドレス計算機の特徴は以下の3つです。

・複数のIPアドレスの計算を一気にできる!
・入力する値がサブネットマスク表記でもビットマスク表記でも、どちらでも変換できる!
・計算結果が表形式で表示される!

まず「IPアドレス 計算」で検索できるサイトでどこも複数のIPアドレスの計算ができるところが無い。これが一番やりたかったことなので、ほんとうれしいです。尚、入力フォームには2000文字の制限をかけています。あんまり一気に計算してサーバーに負荷かかったら嫌だなと思いまして。ちなみに2000文字だと、約100個くらいのアドレスが一気に計算できます。

次に、サブネットマスク表記(255.255.255.0)でもビットマスク表記(/24)、どちらも計算できるのはこれも超うれしい! しかも混在可能! どこのサイトもどっちかの表記でしか入力を受け付けてなくて、不満だったんですよねー。

次、計算結果が表形式で表示される! これも超うれしい! これの何が嬉しいかというと、エクセルとかに貼ってデータをローカルで再整理しやすくなるんですよ。ほとんどのIPアドレスが計算できるサイトは、ローカルで編集するための二次利用を考えてないので、これも実現したかった機能のひとつでした。

IPアドレス計算でやりたかったことはほぼ今回のやつで実現できたので、ほんとプログラミングに目覚めて良かったと思ってます。

IPアドレス計算機で計算できる項目

このIPアドレス計算機で表示できる項目は以下の10個です。

・IPアドレス ビットマスク
・IPアドレス サブネットマスク
・ネットワークアドレス
・ブロードキャストアドレス
・IPアドレス数
・ホストアドレス数
・ホストアドレス範囲
・クラス
・アドレスタイプ
・ワイルドカードマスク

他の計算サイトだと、IPを2進数とか16進数にして表示してたりするんですが、あれってあんまり需要ないかなと思って今回は省いてます。自分がこれが表示されてたらいいなと思う項目を全て表示させました。

PHPで作った過程

作ろうと思い立った当初は一個一個のアドレスをちゃんと計算するプログラムにしようと考えてたんですが、PHPのライブラリでPEARってのがあって、それを導入するだけで簡単なコードで計算できるのが分かったので、PEARのNet_IPv4を使っています。

・Net_IPv4
https://pear.php.net/package/Net_IPv4

PEARのインストール方法に最初は上手くいかなかったので戸惑ったのですが、ここのサイトを見てやっとできました。

・さくらインターネットでPHPのPEARをインストールする – ysklog
http://ysklog.net/server/1668.html

他のサイトだとなんだか情報が古いみたいで上手くインストールできなかったので、こちらのサイトの記事見て上手く行った時は「ありがとう! ありがとう!」な気持ちでいっぱいになりました。

実際にプログラムする時は、こちらのサイトとかにお世話になりました。日本語で説明が書いてあるのでほんと感謝。

・Net_IPv4 – PHPプロ!マニュアル
http://www.phppro.jp/phpmanual/pear/package.networking.net-ipv4.html

そんで次は入力フォームから入力された値を分解して配列に入れたり、置換したうんたらかんたらして、なんとか完成。なんだ、PHP初めて間もない素人の俺でもできるじゃないか! って思いました。レベル的には超簡単なことしかしてないんですが、こんなに簡単に作れるなら本業の人なんかもっとパパッと作れるだろうに……なんで今までこのレベルのIPアドレス計算できるサイトなかったのかと疑問に思うくらいです。

そんな訳でもしかしたら入力された値によってはバグがあったり、間違った結果になることもあるかもしれませんが、気が付いたことなどあればご連絡頂ければ嬉しいです。ネットワークエンジニアの皆様、是非使ってみてください!