水瓶座列車

どこまで行けるか、とりあえず発車します。

プログラミングを独学で勉強するためのLinuxパソコン準備手順

f:id:aquarius999:20201020232105p:plain

 

プログラミングを独学で勉強するためには、まずパソコン環境を整える必要があります。

例えば、Androidアプリを作成したいなら、OSはWindowsLinuxを準備し、iPhoneアプリを作成したいなら、MacOSを準備する必要があります。 

また、単にプログラミングと言っても、

・何をやりたいのか? もしくは何を作りたいのか?

・やりたいことをを実現するためのプログラム言語は何が使用されているのか?

を自分の中で目標や目的を明確しておく必要があります。

 

そして、プログラミングで使用されている言語には、

C、C++JavaJavaScriptPythonPHPなどいろいろあります。

これらのプログラムを勉強するには、Windowsパソコンでも可能ですが、勉強だけでなく就職や転職も考えているなら、やはりLinuxを使用することをおすすめします。 

何故なら、Linuxを触った経験があるだけで、かなり有利になる場合があるからです。

また、携帯電話やそのアプリ、カーナビなど、様々なものにLinuxAndroidが使用されているので、それだけ需要があります。

私の経験で、上位アプリや組み込み開発など様々なソフトウェア開発を約10年以上していましたが、開発環境としてWindowsパソコンから、SSHVNCなどのリモートでLinuxパソコンに接続して、Linuxパソコン上でプログラミングを行っていることがほとんどでした。 

なので、どの会社でもLinuxを扱うことが必然となっていると思います。

 

ただし、iPhoneアプリ開発などMac系の仕事や勉強をしたいなら、LinuxパソコンではなくMacOSパソコンが必要で、プログラミング言語XCodeやSwiftなどのプログラム言語になります。

MacOSiOSは、LinuxAndroidと異なりOSが異なりますので、Mac系のプログラミングについては、また別の機会にしたいと思います。

ここでは、C、C++JavaPythonのプログラムを独学で勉強したい方へ、

プログラミングを行うための前準備として、Linuxパソコンを準備する手順を書いていきたいと思います。

 

 

 

 

 

 

1.Linuxとは?

 

Linuxとは、WindowsiOSAndroidといったようなOS(オペレーティングシステム)の種類の1つで、ソフトウェア開発では、よく使用されています。

Linuxの種類には、UbuntuFedoraCoreCentOSなど様々あります。 

これらLinuxは、フリーソフトウェアなので、誰でも無料で使用することができますので便利ですが、Linuxが搭載されているパソコンは、あまり家電量販店やAmazonで販売していません。

Linuxサーバーマシンとしてはありますが、あまり汎用性がありません。)  

なので、自分でパソコンを用意して、Linuxをインストールする必要があります。

未経験からプログラミングを始めようとする方にとっては最初のハードルになります。

また、Linuxは、プログラミング以外にも、SambaやApacheなどサーバー構築の勉強にも役立ちます。 

 

2.Linuxで何ができるのか

 

Linuxパソコン準備手順の前に、Linuxで何ができるのか簡単に箇条書きにしてみますと、

・プログラム(C、C++JavaPHP、Swiftなど)のコンパイル/実行ができる。

・AndroidStudioを使用してAndroidアプリが作成できる。

・サーバーの構築ができる。(Samba、Apacheなど)

・画像編集や音楽再生などメディア関連操作はWindowsとほぼ同じようにできる。

などがあります。

 

ここでは、プログラミングのためのLinuxパソコン準備ということで、

Linux本体の準備からプログラムのコンパイル/実行確認までを説明していきます。

 

3.Linuxパソコンの準備

 

まずは、Linuxを使用するためのパソコンを準備する必要がありますが、下記の2通りの方法があります。

 

1.デスクトップパソコンを使用する方法

2.RaspberryPi(ラズベリーパイ)を使用する方法

 

どのようなプログラミングをしたいかによって、準備した方が良いパソコンのスペックが変わりますので、上記の方法で、どのようなプログラミングができるのかも含めて説明していきます。

 

3.1 デスクトップパソコンを使用する場合

 

Android向けアプリをプログラミングしたいのであれば、確実にデスクトップパソコンの方が良いです。

理由は、Androidアプリ開発で必要なAndroidStudioがRaspberryPiのスペックでは動作できないからです。

そうでなくても、やはりラップトップ(ノート)パソコンよりもデスクトップパソコンの方がコンパイル時間が早いので、Linuxを使用するならデスクトップパソコンを使用することをおすすめします。

 

デスクトップパソコンのスペックについて

 

この記事では、LinuxUbuntuを使用します。

そして、Ubuntuが推奨している動作スペックが、Ubuntuのサイトにあり、

具体的には、

・2 GHzデュアルコアプロセッサ以上

・4 GBシステムメモリ

・25 GBのハードドライブ空き容量

・DVDドライブまたはUSBポート(インストールメディアとして使用)

・インターネットアクセス(推奨)

です。

 

上記を踏まえて、デスクトップパソコンのスペックの私のおすすめとしては、

・CPUは、Core i5以上ある方が良い。

・メモリは、4G以上ある方が良い。

・HDD(ハードディスクドライブ)の容量は1TB以上あると良い。

です。

 

デスクトップパソコンが良い理由は、

・プログラムをコンパイルする時間が、同スペックのラップトップパソコンよりデスクトップパソコンの方が早い。

Linuxをインストールする際にモニタの相性を考慮しなくて良い。

です。

昔は、ラップトップパソコンにLinuxをインストールする時にモニタとの相性で、画面が表示できないことが良くありました。

最近は、もうそのようなことは無いかもしれませんが、できればデスクトップパソコンの方が良いです。

そしてデスクトップパソコンのCPUやメモリは、コンパイルする時間やパフォーマンスなどに影響しますので、できれば性能が高いものを選ぶと良いです。

またWindowsとのデュアルブートはせずに、Linux専用にする方が良いです。

デュアルブートにするとWindowsが入ってるHDDのパーティションを調整するのが面倒ですし、WindowsLinuxを同時に使用することができません。 

WindowsLinuxを別々のパソコンにして、WindowsからLinuxにリモート接続するのが便利です。

 

Linux専用パソコンは、中古パソコンで十分で、

私の場合は、Amazonで中古のOS無しの本体のみデスクトップパソコンとHDD 1TBを購入して、Ubuntuをインストールして、Linux専用パソコンとして使用しています。

ただ、Amazonでもあまり、OS無しのパソコンはありませんので、下表のような中古パソコンサイトで探してみるのもありです。 

 

サイト名 OS無しパソコンのリンク場所など
ジャンクワールド

左側のメニューの少し下の方に「OS無しデスクトップPC」のリンクがあり、スペック検索で好みのPCを探すことができます。

Amazonには数少ないOS無しデスクトップPCが、数多くありおすすめです。(会員登録なしで購入することができます。)

 

パソコンディスプレイについては、既にWindowsパソコンを持っていると思いますので、LInuxをインストールする時だけ、Windowsパソコンのディスプレイを使用します。

そしてインストール完了後は、WindowsからTeraTermで、Linux専用パソコンにアクセスすることで、Linux専用パソコンのディスプレイは、基本的に無くてもプログラミングすることができます。

WindowsからTeraTermLinuxにアクセスする手順は、後述にもありますが、

SSHの設定手順(Ubuntu18.04)とWindowsからのアクセス確認手順 - 水瓶座列車

にアクセス手順を書いていますので、参考にしてみてください。

 

 

 

Linuxの種類と準備

 

デスクトップパソコンの準備ができましたら、Linuxのソフトウェア媒体を準備します。

Linuxには、UbuntuFedoraCore(昔のRedHat)、CentOSなど様々なディストリビューションがあります。

どれを使用するかは、個人の好みによりますが、私が使用しているのはUbuntuで、このブログのLinux関連の記事は、全てUbuntu上でやっています。

ここでは、私も使用しているUbuntuを準備します。

 

Ubuntuをインストールするためには、インストールDVDを準備する必要があります。

準備といっても方法が2通りあり、

・書店で売っているLinux書籍に付属しているインストールDVDを使用する。

・自分でインストールDVDを作成する。

があります。

 

書籍を購入する場合は、近くの書店で購入するか下記のようにAmazonなどで購入できます。

インストールDVDは、紙書籍にのみ付属しており、電子書籍版には付属していませんので注意してください。

 

自分で作成する場合は、

Ubuntu Desktop 日本語 Remixのダウンロード | Ubuntu Japanese Team

ダウンロードサイトから、isoイメージを取得して、そのisoイメージをDVDに焼くことで、UbuntuのインストールDVDを作成することができます。

isoイメージは、現時点での最新バージョンを取得すると良いです。

また、ダウンロードする際に、 「xxxx...isoは安全にダウンロードできません」と警告がでますが、気にせずに保存ボタンを押してダウンロードします。ちなみに、isoイメージサイズは、約2.6GBあります。

 

Linuxのインストール

 

インストールDVDが準備できたら、準備しておいたパソコンにディスプレイとキーボード、マウスを接続して、電源を入れて、そのインストールDVDを入れると、Ubuntuのインストールが始まります。

ここでは、Ubuntuのインストール手順を省略しますが、インストール手順は、UbuntuのサイトUbuntuのDVDが付属している書籍に、記載がありますので参考にしてみてください。 

 

Linuxの起動

 

Ubuntuのインストールが完了してログインすると、このような画面になります。 

f:id:aquarius999:20201015162101p:plain

 

 この画面からプログラムを作成するためには、まずターミナルを起動します。

ターミナルの起動手順は、この画面から右クリックするとWindowsのようなウィンドウが出ますので、

その中から「ターミナル」を選択します。

ターミナルの選択後、 下記のようなウィンドウが表示されます。

f:id:aquarius999:20201015162248p:plain


プログラミングは、この状態から始めることができます。

プログラミングで使用するエディタやプログラムの動作確認は、後の「4.プログラムの動作確認」で書いています。

 

 

 

3.2 RaspberryPiを使用する場合

 

Raspberry Piラズベリーパイ)とは、下の画像の緑色のボードで大きさは、右側の100円ショップで購入したSDカード入れより少し小さいぐらいのパソコンです。

f:id:aquarius999:20200520005238j:plain

 

突然、Raspberry Piって言われても良くわからないと思いますが、Raspberry Piに搭載されているOSは、LinuxをベースにしたRaspberry Pi OS(旧名Raspbian)というOSで、

主に組み込み開発で行われているデバイスドライバ開発やハード制御の勉強に最適なパソコンです。

そして他にも、Raspberry PiをWeb(Apache)サーバーなどサーバー機にしたり、Linux同様にサーバーの勉強もできます。

また、Raspberry Piは上記画像を見てもわかるように場所を取らず、価格は必要なものを揃えても1万5000円程度とデスクトップパソコンよりも低価格です。

 

Raspberry Piを使用する場合は、始めからRaspberry Pi OSがインストールされているものを購入すれば、電源ONするだけですぐにプログラミングを始めることができます。

もしプリインストールされていないSDカードを使用したい場合には、本ブログのRaspbianOSをインストールする手順に書いていますので、参考にしてみてください。

 

Raspberry Piは、Amazonで購入することが可能で、以下のような一式揃っているものがおすすめです。

 

このセットでは、あらかじめOSがSDカードにインストールされているので、

先ほど言いました通り、購入後電源を入れれば、後述の「4.プログラムの動作確認」で説明している、コンパイラの確認やインストールを自分で実施する必要がなく、すぐにプログラミングすることができます。 

ただ、購入後はRaspberry Pi OSのモジュールを最新にするために、

$ sudo apt-get update
$ sudo apt-get upgrade

を最初に行ってください。

また、

WindowsからRaspberryPiにリモートアクセスする手順

RaspberryPiでのLEDの点灯・消灯・点滅のやり方

RaspberryPiで赤外線データを受信してLEDを点灯する手順

RaspberryPiでI2CキャラクタLCD(1602) の動作確認

など、

Raspberry Piに関連している手順などを書いていますので、参考にして頂ければRaspberryPiの操作イメージが見えてくると思います。

ただし、Raspberry PiにAndroidStudioをインストールすることが困難でしたので、Androidアプリ開発をしたいならデスクトップパソコンを準備してください

 

 

 

 

 

4.プログラムの動作確認

 

4.1 デスクトップパソコンでの確認

 

Linux(Ubuntu)のパソコンの準備ができましたら、次にプログラミング環境について確認していきます。

まずプログラミングを始めるにあたって、ファイルの拡張子がそれぞれ下記のように決められています。

C言語 :ファイル拡張子は、「.c」

・C++ :ファイル拡張子は、「.cpp」

python  :ファイル拡張子は、「.py」

Java  :ファイル拡張子は、「.java

 

そしてプログラミングに使用するエディタは、ここではviエディタを使用します。

Linuxのviエディタは、自分でインストールする必要が無く、既に使用できる状態になっています。

また、viエディタの操作については、

私がviエディタを好きになった理由とその使い方に記載していますので、参考にしてみてください。

以下からは、viエディタを使用する前提で説明していきます。

 

C言語プログラムの動作確認

 

LinuxUbuntuで、C言語コンパイルができるかどうか下記で確認します。

$ gcc -v

 で、gcc のバージョン情報が出力されれば、コンパイルできます。

もし「Command "gcc" not found, ・・」が出力された場合コマンドが無いので下記でgccをインストールします。

$ sudo apt install -y build-essential

そして、ターミナルからC言語のプログラミングを始めるには、

$ vi sample.c

を入力してエンターキーを押すとsample.cとしてファイルを開きます。

まずは、「Hello C World」と表示するプログラムを作成し、コンパイル、実行してみます。

#include <stdio.h>

main(){
printf("Hello C World\n");
}

 

viエディタの入力モードにして、sample.cに上記のプログラムを書いた後、ファイルを保存して閉じます。

保存後、このファイルを実行できるようにコンパイルします。

$ gcc sample.c

 

を実行すると、コンパイルが始まりエラーが無ければsample.cと同じフォルダにa.outという実行ファイルが生成されます。

実行の仕方は、下記のようにします。

$ ./a.out

 

実行後、標準出力で「Hellow C World」が表示されます。標準出力とは、ターミナル上に出力されることを言います。

main()は、C言語で一番最初に実行される関数で、全てのプログラム処理は、ここから始まります。

printf()は、文字を標準出力する関数で、プログラムのデバッグや動作確認などでよく使用されます。 

 

C++プログラムの動作確認

 

C++コンパイルは、C言語コンパイルができていれば、既にコンパイル環境が整っていることになります。

ターミナルからC++のプログラミングを始めるには、

$ vi sample.cpp

 

で、viエディタを起動します。

そして、C++オブジェクト指向言語なので、クラスを使用した「Hello C++ World」を表示させる下記プログラムを書いて、ファイルを保存します。

#include <iostream.h>

using namespace std;

class Programing {
public:
print();
};

Programing::Programing(){};
Programing::~Programing(){};

void Programing::print(){
printf("Hello C++ World\n");
}

main() {
Programing *programing = new Programing();
programing->print();
}

 

コンパイルは、C言語と同様に、下記でコンパイルします。

$ g++ sample.cpp

 

コンパイル後、エラーが無ければ、C言語と同様に、a.outが生成されます。

C言語と同様にa.outを実行すると、「Hello C++ World」が標準出力で表示されます。

C++のプログラムもmain()から始まりますが、C言語と異なるのは、ここからクラスオブジェクトを生成してプログラミングしていくことになります。

また、C++のファイル内で、C言語も使用することができます。

 

 

 

Pythonプログラムの動作確認

 

Pythonがプログラミングできるかどうか、下記で確認します。

$ python3 --version 

 

Ubuntuのインストールをするとデフォルトで使用できる状態になっています。

ターミナルからPythonのプログラミングを始めるには、

$ vi sample.py 

 

で、viエディタを起動し、下記を書いて、ファイルを保存します。

print("Hello Python World");

 

コンパイルは必要なく、ファイル名を引数にして実行します。

$ python3 sample.py 

 

構文が簡単なのでプログラミング未経験者には、始めやすい言語です。

 

Javaプログラムの動作確認

 

Javaコンパイルできるかどうか、下記のコマンドで確認します。

$ javac -version 

 

もし「Command 'javac' not found、・・・」が出力されたらJavaJDKを下記でインストールします。

$ sudo apt install -y openjdk-11-jdk

 

インストール後、再度「$ javac -version」で確認してjavaのバージョンが表示されることを確認します。

更に、一応コンパイルしたJavaの実行形式ファイルを実行できるかどうか、下記のコマンドで確認します。

$ java -version 

 

ここでも、バージョンが表示されれば完了です。 

 

ターミナルからJavaのプログラミングを始めるには、

$ vi Sample.java 

 

で、viエディタを起動し、下記を書いて、ファイルを保存します。

public class Sample {
    public static void main(String[] args) {
        System.out.println("Hello Java World!!");
    }
}

 

コンパイルは、下記のようにします。

$javac Sample.java

 

Javaコンパイルでは、ファイル名とクラス名が一致していないと、コンパイルエラーになりますので注意してください。

なので、新しいクラスを作成する毎にファイルも作成する必要があります。

コンパイル後、実行するには、下記のようにします。

$java Sample

 

実行後、標準出力で「Hello Java World」が表示されます。

 

 

 

 

 

4.2 RaspberryPiでの確認

 

RaspberryPiでは、既にC、C++PythonJavaコンパイルができる状態になっていますので、すぐにプログラミングすることができます。

コンパイル/実行のやり方は、デスクトップパソコンの場合と同様です。

 

余談ですが、注意点として、デスクトップパソコンのLinux上でコンパイルを行った、

CやC++の実行ファイルをRaspberryPiにそのまま移動して実行しても下記のようにエラーになります。

理由は、CPUの種類が異なるからです。

 

f:id:aquarius999:20201023032837p:plain

 

上記画像は、WindowsパソコンからRaspberryPiにTeraTermでリモート接続したものですが、上の枠は、RaspberryPi上でコンパイル、実行、結果表示ができており、その実行ファイルの種類をfileコマンドで見てみると、ARM EABI5になっていることがわかります。

下の枠は、RaspberryPi上にLinux(Ubuntu)でコンパイルした実行ファイルa.outをそのまま移動して、実行した結果です。

結果は、実行エラーとなり、実行ファイルの種類を見てみると、Intel製のx86-64となっており、ARM用ではないので、RaspberryPi上で実行できません。

実際の開発現場では、Linux(Ubuntu)上で他のCPUの実行ファイルを生成することができるクロスコンパイルを行って開発しています。

ARMのクロスコンパイルをしたい場合は、デスクトップパソコンのLinuxに、ARM用のgccをインストールするだけでできます。

 

Pythonの場合は、CやC++と違ってコンパイルという動作が無いので、x86とARM間をそのままファイル移動して実行しても問題ありません。

Pythonファイルを実行する時に使用するpythonコマンドがそれぞれのCPU用になっているので、PythonのプログラムファイルがどのCPU上で作成されたとしても実行することができます。

C、C++もプログラムファイル自体はそのままファイル移動しても問題ありませんが、ファイル実行については、実行させたいCPU上でコンパイルを行うかクロスコンパイルする必要があります。 

 

Javaの場合も、あるCPU上でコンパイルした実行ファイルをどのCPU上にそのまま移動しても、エラーが出ずにそのまま実行することができます。

 

5.WindowsからLinuxをリモートアクセスする手順

 

一通り、C、C++PythonJavaのプログラミングの準備ができましたが、日常生活でネットサーフィンをしたり、テレビを見たり、ゲームをしたりパソコンを触るのは、Windowsパソコンがメインになると思います。

わざわざプログラミングをするために、モニター画面をLinuxに切り替えるということが、徐々に面倒になってきます。

そのような時に、WindowsパソコンからリモートでLinuxパソコンにアクセスできれば、画面切り替えの面倒がなくなります。

どうやってアクセスするかというと、SSHを使用してLinuxパソコンにアクセスします。

SSHの設定手順の詳細は、本ブログでデスクトップパソコンの場合とRaspberryPiの場合の各々で、 下記のリンクに記載していますので、参考にしてみてください。

 

Linuxデスクトップパソコンの場合

SSHの設定手順(Ubuntu18.04)とWindowsからのアクセス確認手順

  

RaspberryPi(ラズベリーパイ)の場合 

簡単にできるWindowsからラズパイ3B+にリモートアクセス(VNC,SSH)する手順

 

6.最後に

 

プログラミング未経験の方がプログラミングを独学で行う準備として、まず何から準備すればよいかの手順を、Linuxのソフトウェアの準備から各言語のコンパイル準備、コンパイル手順、実行手順を1つの記事にまとめてみましたが如何だったでしょうか。

プログラム言語の詳細については、ここでは書ききれませんので、また別の機会に書きたいと思っています。

また、将来組み込み系の開発をしたい方にもRaspberryPi(ラズベリーパイ)を使用することで、GPIO制御、I2C、UART、SPI、LED制御、LCD制御など、ハードウェアに関連した技術も勉強できると思います。

 

<関連・おすすめ記事>

Linux勉強用の中古パソコンおすすめショップランキング - 水瓶座列車

組み込み知識の「割り込み」について簡単解説 - 水瓶座列車

組み込み知識の「GPIO」について簡単解説 - 水瓶座列車

Linuxローダブルカーネルモジュールの作り方とアクセス手順 - 水瓶座列車

RaspberryPi (ラズパイ)の購入時に最低限必要なものとおすすめセット

Bluetoothでマルチペアリング(複数台接続)できるマウスのおすすめランキングベスト5

Bluetoothでマルチペアリング(複数台接続)できるキーボードのおすすめランキングベスト5

画面分割できるパソコンディスプレイのおすすめランキングベスト5

ピボット機能(90度回転)があるパソコンディスプレイのおすすめランキングベスト5 - 水瓶座列車