見出し画像

4.プログラムファイルとプロトコルの話

こちら第4回「プログラマー養成講座」になります!
目次はこちらからご参照下さい!

プログラムファイル

拡張子の説明の際に「ファイルを開く」という動作は、「任意のソフトウェアで、対象のファイルを開く」ことをいうと説明をしました。

「ファイルを開く」という作業の正体
パソコン上で「ファイルを開く」という動作は、もう少し正確に言えば「任意のソフトウェアで、対象のファイルを開く」ことを言いますが、その仕組みについてです。

https://note.com/hisaki_cikou/n/n277d8299561d
2.パソコンと拡張子について:「ファイルを開く」という作業の正体 より

このときに「任意のソフトウェア」といったものが「プログラムファイル」になります。プログラムファイルのことは「プログラム」「アプリケーション」「ソフトウェア」などと言い、同じものを指していることが多いです。特に「アプリケーション」は「アプリ」と省略され、現在(2022年)においては「アプリ」と言えば「スマフォにインストールするもの」という認識が強いかもしれません。

「プログラムファイル」とは、多くの場合バイナリファイルで、実行形式のファイルです。拡張子に「プログラムファイル」を登録しておくことにより、その拡張子をダブルクリックすると「拡張子に登録されたプログラムファイルで、ダブルクリックしたデータファイルを開く」という動作をします。

データファイル

データファイルは「プログラムファイルで作ったファイル」であり、プログラムによって、テキストファイルかバイナリファイルかは異なります。画像操作プログラムの場合は、バイナリファイル(画像ファイル)がデータファイルになります。テキストエディタの場合は、テキストファイルがデータファイルになります。

色んなデータファイルがありますが、次の項目は「お約束」の話です。

例えば画像ファイルであればGIF、PNG、JPGなどの形式があります。それらのファイルを「ペイント」だったり「Adobe Photoshop」だったり「GIMP」だったり、ちょっと検索しただけで30個以上の画像編集ソフトがありますが、どのプログラムファイルでもGIFもPNGもJPGも開いて編集することができると思います。

それはなんででしょうか?

プロトコル

プロトコルは「お約束」「規定」「ルール」などの意味の言葉です。

ネジの例

例えば色んなメーカーがパソコンを作ってますが、パソコンにはいろんな場所にネジがあります。例えば、ネジを作ってるメーカーで、A社のネジ、B社のネジ、C社のネジと、太さと長さと形状のどれかが違ってしまっても、ネジがきっちりハマらないことになります。
3社とも違うサイズのネジを作っていると、パソコンメーカーは困ってしまいます。できればA社でもB社でもC社でも装着するパーツは同じもので作ってくれれば、パソコンメーカーとしてはありがたいです。

そういう「業界の健全な発展のための規定/お約束」もプロトコルです。

ちなみに良く使うネジで言えば、パソコンの箱によく使われるネジ、SATAのHDDで使うインチネジ、SATAのSSDで使うミリネジ、NVMeのSSDで使うネジ、あたりが良く使うネジです。

通信プロトコル(ネットワーク通信)

東京都でもワシントンでも、地球上の離れた場所でもインターネット回線で繋がれていれば、通信することが可能です。これはインターネット回線が「通信プロトコル」を守って整備されているからです。特にインターネットに関する重要なプロトコルは「IP」「TCP」「UDP」などです。

現在の世の中ではインターネット通信が止まってしまうと、安全な生活が脅かされてしまいます。このようなライフラインになっているものは「インフラ」(社会基盤)と呼ばれ、この仕組みを守ることはとても大事なことになります。

ファイル転送プロトコル(FTPなど)

ファイルの受け渡しにもプロトコルがあります。FTPプロトコルはファイル受け渡し専用のお約束になり、こちらの方が専用プロトコルとなります。

一見、利点がよくわからないかもしれませんが、例えばWindowsやLinuxやMacなどの異なるOS間でのファイルのやり取りについて、それぞれのOSが作っているファイル共有の仕組みだとちゃんとファイルの受け渡しができません。そこでFTPプロトコルという「ファイル転送プロトコル」を利用することで、WindowsでもLinuxでもMacでも安全にファイルの受け渡しをすることができるのです。

HTTPプロトコル

Google Chrome、AppleのSafari、MicrosoftのEdgeなど、各社が標準実装しているインターネットを行うためのソフトウェアがあり、それ以外でもFirefox、Opera、などがあります。
どのプログラムでも、どのホームページにアクセスしても、WEBページが、ちゃんと表示されるのは、WEBサーバーの通信がHTTPプロトコルを使っているからです。HTTPプロトコルはTCP/IPプロトコルのアプリケーション層のプロトコルです。

ちなみに、WEBページ自体も非営利団体のW3Cで標準化されたものが規定されています。今後、なんらかのWEBページを作るうえでは、意識していなくてもこのW3Cの作った「HTML 4.01」とか「CSS3」などのルールを元に作成していくことになります。

その他のプロトコル

メールについてはSMTP,POP3,IMAPなどのメールプロトコルが存在します。色んなメールをするプログラムがありますが、このルールを守ることでメール送信・受信することができます。このおかげでメールについてはA社からB社への移動なども比較的簡単にできます。

あとはパソコンの日時をあわせるのもNTPプトロコルというものがあり、パソコンでも時計でもエアコンでもネットワークに接続されていれば時刻合わせされます。特にエアコンなどは、オートスタートなどの設定をするなら、時間調整が自動でされると嬉しいですよね。

まとめ

これからプログラマーとして、システムを作る側になり場合に、色んなルール/プロトコルを守っていくことになります。なんか堅苦しく感じるかもしれませんが、プロトコルは制作物に「色んなパソコン、色んなシステムで、同じように使えるようにルールを作る」ことを目的としており、あなたの作るWEBページを制限するようなものではないです。例えば、あなたがパソコンでつくったWEBページは、スマフォでも、車でも、宇宙船内からでも、見ることや、利用することができるかもしれません。

プロトコルは窮屈なものではなく「自由のためのお約束」と覚えて下さい。
(その方が、夢があるでしょ?)

おまけ:チャットにはプロトコルがない

実は、チャットには専用のプロトコルはないので、LINE、Slack、Chatworkなどの異なるプログラムでチャットすることはできません。通信プロトコル自体はTCP/IPプロトコルを使っていますが、メールやFTPやHTTPのようにアプリケーション層のプロトコルはなく、各社でオリジナルの通信方法を実装しています。最近は各社で色々なチャットツールが使われていますが、プロトコルがないということは、その運営企業がなくなったら、そのデータは再利用できないことを意味します。

この記事が気に入ったらサポートをしてみませんか?