Linux 学習のススメ。プログラミング習得後の次のステップ

linuxのイメージ画像 技術コラム

Linuxを学習すると、自身が習得したプログラミング技術を生かして開発した実用的なサービスを、世界中に公開出来ます。

Linux 学習のススメ。プログラミング習得後の次のステップ

Linux (リナックス)とは

プログラミング言語は、コンピュータを操る為の言葉です。このプログラムを実行する為には、「プログラムを動かす環境」を必ず準備しなければなりません。

Linuxとは、Windowsや、Macの様なコンピュータのOS (オペレーティングシステム)であり、無料でも使える大変素晴らしいソフトウェアです。

GCP (google cloud platform) や、AWS (amazon web service) の様なクラウドサービスを利用して、コンピュータを外部でレンタルし、そこにLinux OSをインストールする事で、あらゆるWEBサービスを構築、持続的な運用が可能になります。

Linux OS の要点

・世界中で開発されており、種類が沢山ある。OSS (オープンソースソフトウェア)

・無料で使える。(Red Hatの様に、有料の種類もある。)

・クラウドサービスと相性抜群。ワンクリックで楽々インストール。

Linux OS おすすめの種類

Linuxには数えきれない程の種類(ディストリビューションと呼ばれます)があります。その中で、開発の現場で最もメジャーであり、個人開発でも使える物を厳選します。

Cent OS

Cent OSとは、有償であるRed Hatを元に、その無料版として公開されているディストリビューションです。Red Hat が更新された後に、その更新を追う形で一歩遅れて更新されます。2019年9月24日に、Cent OS 8 が公開されましたので、これから学習を行う方は、Cent OS 8 を始めるのが良いでしょう。Cent OS 7 であれば、情報が既に多く出回っていますので、不安な方はまずは 7 から始めるのも、良い選択肢です。

自宅の実機パソコンにLinuxをインストールしたり、GCP上で Linuxを学習される場合は、まずはCent OS で学習を始める事をおすすめ致します。

Amazon Linux

Amazon Linux とは、amazon がRed Hatをベースに開発したディストリビューションです。Cent OS と非常に近い関係にあるので、Cent OSを学習していると理解が早いです。

AWSでサーバーをレンタルする場合は、Amazon Linux を扱っていく事になります。

Linux の扱い方

Linux OSをインストールした時点では、最低限の機能しか入っていません。無駄な機能が無いので、非常に軽量です。PCスペックが低くても動くので、ランニングコストの低減に繋がるメリットがあります。

コマンドで操作を行う。

Linux には、OSとしての必要最小限の機能しか入っていませんので、Windowsの様に、フォルダの中身や、デスクトップ画面、管理画面はありません。真っ黒い画面に、文字を打ってOSを操作します。ヴィジュアルで表現出来る機能を盛り込む事も出来ますが、ランニングコスト低減の為に、今の内からコマンド操作に慣れておくと良いでしょう。

エディタの操作感が特殊、慣れが必要。

Windowsのメモ帳アプリの様に、Linuxには「Vi エディタ」という物が存在します。このエディタは、全てキーボードのみで操作するので、慣れない内はカーソル移動するだけでも大変です。しかし、一度慣れてしまうとわざわざマウスを使わなくて済むので、開発効率が物凄く上昇します。文字列検索、置換なども、正規表現を使う事で強力に機能します。

セキュリティ対策を行う。

クラウドサービスを使って外部にLinuxサーバーを設置する時は、TeraTermなどのフリーソフトを使って、SSH接続を行いパソコンを遠隔操作します。

この時、開放するポート番号や、許可するIPアドレスなど、ファイアーウォールを正しく構築しないと、ハッカーの餌食になってしまうので、注意が必要です。

WEBサーバーを設置して外部に公開する場合も、セキュリティ対策は更にしっかりと行う必要があります。この点に関しては、WindowsやMacにおいても同様です。

Linux 学習の進め方

Linux をインストールする。

Linuxを学習する為には、まずはLinux OSをインストールしたパソコンが必要になります。主に、以下の3つの選択肢があります。

・自宅PC (WindowsやMac) にLinuxをインストールする。(Hyper-V, VMwareを利用)

・自宅のサブPCにLinuxをクリーンインストールする。専用のディスプレイ、キーボードを用意しても良いですし、メインPCからTeraTermを使って遠隔操作も可能です。

・GCP、AWSなどのクラウドサービスを利用して、外部に学習用のLinuxサーバーを準備する。

セキュリティ設定を行う。

最低でも以下の設定を行った方が良いでしょう。

・SSH接続に、秘密/公開 鍵認証を導入する。

・root(管理者権限)で SSH接続を使って直接ログイン出来ない様にする。

・不要なユーザーは全て削除する。ログインする際にパスワード入力を必須にする。

・不要なポートは全て閉じる。

・SSH接続用ポート番号 (22) を変更する。

WEBサーバーを導入して、テストページを作ってみる。

Apache, Nginx, Node.jsなどのWEBサーバーを設置して、サンプルページを外部公開してみましょう。この時、ファイアーウォールの設定で該当するポート番号 (httpは80番) を公開する事で、アクセスが可能になります。IP制限なども変更して見て、自宅のIPアドレスからのみアクセス可能な状況を構築してみると、より理解が深まります。

データベースを導入して、より実用的なWEBサービスの作り方を学ぶ

データベースとは、データを綺麗に整理して管理し、それらを効率的に活用する為のソフトウェアです。

無料かつ開発に広く用いられている「MySQL」というデータベースを、是非学習しましょう。先程用意したテストページに、MySQLを連携させてみて下さい。WEBサービス開発の、より具体的なイメージを掴めます。

まとめ

・Linuxを学習すると、自身が習得したプログラミング技術を生かして開発した実用的なサービスを、世界中に公開出来る。

・セキュリティ対策をしっかり行う必要がある。

・データベースを活用すると、更に実用的なサービスを開発出来る。

コメント