Linux Programming

プログラミング学習環境にNASのLinuxコンテナが超絶便利だった

更新日:

私は初心者のプログラミング学習者です。

プログラミング学習のためにMacbookを買ったのですが、Macの素の環境及びリソースをできるだけ汚さず学習・開発できないかと思い、ラズパイ3b+での開発環境構築を試していました。しかし、ラズパイ3b+は開発するには非力です。

そこで思い出しました。我が家には写真や音楽保存用に買ったQNAPのNASがあるじゃないか!あれもLinuxOSだ!!と。

で、、、実際にQNAP NAS内に開発環境を構築してみたところ、割とすんなり希望の環境ができてしまいました。QNAPシリーズはもともとそのような開発用途での利用が考えられているんですね。本当に素晴らしかったので情報共有します。

プログラミング学習環境としてのQNAP NAS:なにが便利なの?

引用:www.qnap.com

QNAPここが素晴らしい!

  • PC(ローカル)のリソースを食わない
  • PC(ローカル)の環境汚さない
  • NAS上に開発環境をいくつでも作れる
  • 世界中の開発者が公開したアプリを使える

QNAPのコンテナを使う一番のメリットは「PC(ローカル)の環境はそのままに、NAS内にいくらでも開発環境を作れる」というところでしょう。

私がプログラミング学習のために購入したMacはSSD・256GBです。256もあれば十分かと思いますが、SSDは空き容量が多いほど高速に稼働しますので、できれば半分は空にしておきたいと考えていました。写真や動画を扱わなくても、昨今のプログラミング環境はIDEや、各々の言語のモジュール、プラグイン、ライブラリの容量が爆発的に増えており、あっという間にストレージを食い尽くすと考えました。

考えすぎかもしれませんが、私はPCが軽いと心も軽い人間なので、開発環境の外出しは実現したいと思っていました。あまりネットでの情報が無い「NASでの開発」ですが、実際にやってみると快適そのものです。

たとえばこんな使い方ができます。

1.プロジェクトごとにコンテナを立ち上げる

コンテナ=ひとつのサーバと考えることができます。QNAPに入っているContainer StationアプリはUbuntuやCentoOSなどのLinux環境の他、IoTやAI用のアプリが入っています。ワンクリックでそれらの環境を作るだけです。

そして素晴らしいのが、仮想環境ということでいくつも同時に立ちあげられることです。(もちろん作成したコンテナを停止しておくことも出来ます)。バーチャルEthernetにも対応していますので、コンテナごとに固定IPアドレスを振ることも出来ます。

開発プロジェクト(アプリ)ごとにコンテナを作成することで、そのアプリ専用の環境をインストールできます。通常はNodeやPythonなどのバージョン管理ツールを作って、プロジェクト毎にバージョンを切り替えて使うものですが、コンテナでプロジェクト専用環境を作ってしまえばその手間すら不要です。アプリ開発素人の私は、これには本当に助けられました。

pyenvやpipenvを駆使してバージョンを切り替える必要が無いんですね。すばらしい!!

ローカルPC-コンテナ間のファイルのやりとりもGUIで!

非常に便利だなと感じたのが、ローカルPCとQNAP内に作成したコンテナとのファイルのやりとりがブラウザ上(GUI)で行えること。Linuxベースで開発すると、けっこうファイルの行き来が面倒なのですが、この機能を使えばコマンドを知らなくてもLinuxコンテナ上のファイル操作ができます。

QNAP NASにデフォルトで組み込まれている「File Station」というアプリを使うだけです。

たとえば、コンテナ上でWEBサイト等の開発をしている場合。ローカルPCの写真などをコンテナに送りたいケースがあるかと思います。そんなとき、通常ならばSSHしてscpコマンド叩いて・・・とやるのですが、その手間すらありません。

下記のようにQNAPのメニュー画面からFile Stationを起動するだけでコンテナ内の階層までたどり着くことができます。よくやりとりするフォルダなら、そのフォルダをリモートマウントして、ローカルPCに登録しておくことができます。超絶便利です!!

File Station5画面

2.誰かさんが作ってくれた環境をワンクリックでインストール

QNAP NASのアプリ「Container Station」の素晴らしい点はDocker Hub Registry対応ということです。Docker Hub Registryとは公式や有志によって作成されたDockerイメージの配布サービスです。この配布元に最初からアクセスできるのです。膨大なDockerイメージから好きなものを選んで試すことができます。

Dockerになじみの中い方には??かもしれませんが、Dockerにプログラミングに最適な環境を構築するには、手間と知識が必要です。これを誰かが構築していたら、そっくりそのまま自分の開発環境としたいと思いませんか??それを可能にするのがDocker Hub Registryなのです。

無数に公開されたDockerイメージから希望のものを検索する方が大変ですが、環境がそのままいただけるというのは、本当にありがたいサービスですね。

ただし!!

NASが使えるのは同じネットワーク上にPCもNASもある場合のみです。インターネットにつながっているNASですから、外部(たとえば出先)からアクセスする方法もあります。しかし、速度が遅くなることと、セキュリティの確保がシビアなのでおすすめしません。僕もやってません。

プログラムの学習ってわざわざスタバや図書館でやりませんよね??^^;

QNAP NASいっぱいあるけどどれがいいの?【プログラミングするなら】


NAS内に開発環境を構築するならズバリ上記のモデル(以上)がおすすめです。

実は私が持っているモデルはTS-231P2という家庭ユーザーには人気のモデルです。写真や音楽・動画を撮りためるには全く問題無いモデルです。しかし、このTS-231P2の残念なところはメモリが1GBでCPUがARM製というところ。

TS-231P2はメモリは増設不可ですし、CPUがARM製だとNAS内にLinuxコンテナを立ち上げる時に使えるコンテナ(UbuntuやらCentoOSやら)が限られるのです!!これは盲点でした。Linuxなら何でも良い、というわけではなく、たとえUbuntuが立ち上がったとしても、Node.jsなどをインストールする際にアーキテクチャエラー(要するに対応していないCPUですよ、ということ)が出るんですね。仮想環境が立ち上がらないことはないものの、開発途中でエラーが出ても、それがCPUによるものなのか、自分のソースコードによるものなのか判断がつきません。

そこで、おすすめするTS-251B-2Gを見てください。(引用:QNAP

CPU Intel® Celeron® J3355デュアルコア2.0 GHzプロセッサ(最大バースト2.5 GHz)
CPUアーキテクチャ 64ビットx86
グラフィックプロセッサ Intel® HD Graphics 500
システムメモリ 2 GB SO-DIMM DDR3L(1 x 2 GB)
最大メモリ 8 GB(2 x 4 GB)
メモリスロット 2 x SO-DIMM DDR3L
ドライブベイ 2 x 2.5インチまたは3.5インチ SATA 6Gb/s、3Gb/s
ドライブの互換性 3.5インチSATAハードディスクドライブ
2.5インチSATAハードディスクドライブ
2.5インチSATAソリッドステートドライブ
ギガビットイーサネットポート(RJ45) 1
USB 2.0ポート 3
USB 3.0ポート 2

CPUは天下のIntel製、メモリは2GB(最大8GB)です。メモリは自分で交換できますので、不足を感じた時に増設すれば良いでしょう。たとえば、Dockerをいくつも同時に立ちあげるようなときには、最低でも8GBは欲しいと言われています。私のようにプログラミングの学習用途なら2GBでそうそう足りなくなることは無いでしょう。

何れにしても現時点(’19/6)でQNAPシリーズでIntel製CPUが載っている最安のモデルになります。これより安いARM製CPU搭載モデルもいくつもありますが、開発用途では苦労するのでおすすめしません。私の経験則です。

QNAPシリーズはハードディスクが別売りです。ご自宅に余っているHDDがあればそれを使うことも可能かと思いますが、とくに手持ちがなければ、NAS用に開発されたWD製のREDシリーズが一番無難ですね。私もREDの2TBを2本購入し、RAIDを組んでミラーリング(データの常時バックアップ・・・のようなもの)を組んでいます。NASはHDD1本でも稼働できますが、家族のたいせつな写真のバックアップ用途も、と考えるとRAIDで不測の事態に備えたいですね。

ちなみにQNAP NASのRAID設定は超簡単で、2本のHDDを用意して取説に通り設定するだけで、標準的なRAID環境が勝手にセットアップされます。ここまで簡単にできるからこそ、企業にも一般にも選ばれているんでしょうね。

下記、おすすめのHDDを紹介しておきます。

QNAP NASの用途はプログラミング以外にもたくさん

冒頭で触れていますが、QNAPに限らず、NAPはたくさんの用途に使えます。

  • ミュージックサーバ
  • ビデオサーバ
  • フォトアルバム
  • データベース
  • ウェブサーバ(wordpressなども)
  • メモ帳(ノート)

スマホ用にそれぞれ無料アプリが出されていて、設定すればインターネットもしくはWifi経由で利用できます。たとえば、こんな使い方です。

  1. NASに撮りためた写真を出先で見る。
  2. スマホの写真・ビデオをNASに自動バックアップ
  3. NASのメモ帳に書いた内容を出先から見る&編集
  4. NASにある動画や音楽をスマホから試聴する

家族みんなで使うことができますよね。音楽の共有や、スマホに撮りためた写真のバックアップなんかは誰でもうれしいんじゃないでしょうか?使ってみると、その多機能さと便利さに驚きます。

紹介したQNAP NASは少々お高いですが、これだけのメリットがありますから、「自分のためじゃなく、家族みんなのために買いたいんだ!!」と言って一家の財務省(おかーちゃん)を説き伏せ泣き落としましょう!必要なのはみんながハッピーになるというストーリーです(笑)

TS-251B-2GとREDのHDD×2本でおおよそ6万円弱。あなたの熱意の見せどころですね^^HDDは価格が乱高下しますので、お安い今がグッドタイミングかと!!

さいごに

NASって馴染みの無い方にはほんと「ただのネットワークドライブでしょ?」「ファイルサーバと違うの?」という感覚でしょう。しかし、その実は、高性能なLinux PCそのものです。

Linuxは今や世界のサーバやIoTデバイスには無くてはならないOSとなりました。NASはLinux学習にも有用ですし、特に私のように「Web開発」を勉強されたい方に向いていると思います。WebサーバのほとんどはLinuxですからね。ぜひご検討を!!

タグ

カテゴリー

  • この記事を書いた人
アバター

from-age35

中小企業エンジニアです。35歳で急遽プログラミングを覚えることになり、PythonやJavaScriptなどをゆっくりマイペースに覚えています。先端スキルには疎いですが、楽しくコーディングしてます♪最近の興味は【WEB開発】です

-Linux, Programming
-, ,

Copyright© 35からのプログラミング , 2019 All Rights Reserved Powered by AFFINGER5.