【中級者~上級者用】プログラミングの開発環境はクラウドで

【中級者~上級者用】プログラミングの開発環境はクラウドでコラム

プログラミングもそうですが、IT技術というのは、ある程度習得しちゃえば
「あ、独学でいけるかな?」と思えるようになるかもしれません
とはいえ、やはりはじめはメンターから教育を受けた方が効率いいのは間違い無さそうてます

 

効率良く早く覚えるのは、やはり直接指導のもと質問しまくるということです
スクール通いが最も効果がでるのって、以下のような方が該当すると思います

・右も左もわからない初心者な方
・プログラミングに適性のない方
・飽きっぽい、または自信の無い人

思い当たる方は少し考えてみてはいかがでしょうか

【初心者用】ずぶの素人がプログラマーになる方法
初心者・未経験の方向けにプログラマーになる方法を記載しました。結局のところはじめが肝心で質の良い学習ができればいいと思います。また、言語にもよりますがプログラミングは未経験者の独学では厳しいと感じています。良いメンターと巡り合えれば問題ないと思っています。
【中級者用】プログラマーになるために必要なこと
プログラマーになるための事前調査はしましたがこのあと具体的にどうすればいいか説明します。コーディングの技術も大切ですが、コミュニケーションスキルや技術書の読解力やコードの読解力も必要になります。そこでいろいろなツールをご紹介します。

 

さて、今回は独学及び仲間で集まって、プログラミンの勉強や成果物作るようなときのおすすめの方法です

自宅でしこしこ作ることももちろんできますけど、設定めんどくさいし
仲間やリモートでやっていく上には敷居が高いと思います

なので、効率よく大人数でプログラミングしていく方法を説明します

結論を言ってしまうと、クラウド上のサービスを利用することをおすすめします

 

クラウドとは

私はインフラエンジニアなので、馴染みがある言葉ですが
プログラミングを志す人や、特化されている方はもしかしたら、あまり聞いたことないかもしれません

インターネットってよく「雲」であらわすことができますが
雲 = クラウド ですね(雲だけでなく大群、集団などの意味も持ちます)

つまり、インターネットのことをクラウドって言いかえれることができますが
インターネットそのままのことをクラウドっていうよりかは
インターネット上のサービスを総称してクラウドっていう認識の方が強いです

クラウドにはいくつか種類があるので軽くでいいので覚えておきましょう

 

パブリッククラウドとプライベートクラウド

これもまた概念的な言葉で仕様や状況により定義があいまいな環境もありますが、言葉の意味的に以下となります

「パブリッククラウド」
インターネットを通じてオープンにアクセスできるようになっているもの「プライベートクラウド」
インターネットを介してるとはいえ、クローズドな環境で運用されているもの

 

両者の違いを簡単に言うと、誰でもアクセスできるようなサービス、例えばWebサービスやクラウドのメールサービスなどは大抵パブリッククラウドに分類されます
アクセス先のサーバを共用で利用しています(共用サーバ)
これらは認証情報などでユーザー毎のアクセスを制限しています

一方プライベートクラウドはインターネット上にあるとはいえ、限定的なアクセスになってきます
筐体(サーバ)を契約者でシェアするように使用するのがパブリッククラウドですが、プライベートクラウドは筐体自体にその契約者だけしかアクセスできないようになっています(専用サーバ)

ですが、純粋に他の契約者がアクセスできないからプライベートクラウドともいえません
例えばパブリッククラウドだけど、IPなどでアクセス制限したりする場合もあるからです

正直サービスレベルは、利用するユーザ視点ではわからないことが多いです
(共用サービスは負荷がかかると利用している全ユーザに影響はあります)

 

SaaS/PaaS/IaaS

クラウドの種類として、大きく分けて「SaaS」「PaaS」「IaaS」というものがあります
これは機能面や利用できるレイヤーによって分類されています

 

「SaaS」(Software as a Service)・・・
クラウド上にあるソフトウェアをWebブラウザなどから接続してリモートで利用できるサービスです
大抵のアプリケーションはサーバ上に展開、構築されていますが、そのことを意識せず使えます

 

「PaaS」(Platform as a Service)・・・
「ミドルウェア」「OS」「データベース」などの部分を提供するサービスです
従来のホスティングサービス(レンタルサービス)がこれに当てはまり、ロリポップ、エックスサーバなどのレンタルサーバがイメージに近いです

 

「IaaS」(Infrastructure as a Service)・・・
サーバやネットワークなどのコンピュータのリソースまでも使えるサービスとなります
クラウド上のサーバをまるっと使えるので、イメージは専用サーバなどのサービスになってきます

 

プログラミングをクラウドサービスで行う利点

業務以外でプログラミングをするのであれば、自宅PCで作業する人も多いのではないでしょうか
プログラミングの勉強であればなおさらですね

ただ、有料でもクラウドのプログラミングできるサービス
もしくは、クラウド上に作業スペースを作ることをおすすめします

理由は以下となります

・クラウドサービスであれば、環境構築が楽、もしくは最初から準備されている
・パソコンやインターネット環境があれば、どこにいても接続可能
・特定のパソコンの仕様やスペック・スピードに依存しない
・クラウド上で公開することにより、多人数間で共有が可能
・多人数で行うときに開発環境をあわせられる

クラウドサービスを利用することで有料になってくる場合もありますが、学習・作業効率やチームなどの多人数で臨むときは検討の余地は大いにあるでしょうね

 

専用サーバ、共用サーバ、VPS

リモート上のサーバにアクセスするとして、どのようなものを選定すればいいのか
これは様々な要件があると思います

今回は細かい要件に沿ったものというよりかは、結論として「専用サーバ」をおすすめします
専用サーバとはクラウド上の1つのサーバを専用的に使うことです
ただ、それだとサーバを独占して使うので、コストがかかりすぎます

なので、一台のサーバを仮想マシンに分割して専用サーバとして貸し出す「仮想専用サーバ(VPS:Virtual Private Server)」を選定します
メニューによってですが、CPUやメモリの拡張および縮小を容易に行えることも魅力です

「共用サーバ」も似たようなものですが、こちらは一つのサーバ(OSを含む)を共用として使うので、他のユーザの影響は受けやすくなってきます

あと多人数でやるならリモートデスクトップライセンス(RDライセンス、旧ターミナルサーバライセンス(TSライセンス))が別途必要になってくるケースもあります

リモートデスクトップライセンスと言うのは、Windowsでいうリモートデスクトップ(RDP)で同時ログインできる人数ですね
これはお金がかかるので、リモートデスクトップでログインしてメンテナンスする人をあらかじめ決めておくか、メンバーが別々の時間帯で作業するようにルール作りするか
または、開発環境を構築して、Webアクセスさせるようにするかといろいろあります(Webアクセスさせる場合は別途ライセンスは必要ありません)

ちなみにLinuxの場合だと、sshでログインすることになると思いますが、それ自体はライセンス費用はかかりません(とはいえ、契約次第なので事前に調べておきましょう)

専用サーバと共用サーバとVPSの違いがわからない方は下記の図を見てください

また、VPSはゲストOSを動かすためにはホストOSまたはハイパーバイザーで管理することになってきますが、ここでは深くふれません
サービスを利用する側として大きく気にしなくていいからです

 

サーバの選定基準

サーバのスペックとしての選定基準を説明します
自分が実現したいこと(つまり「要件」ですね)で変わってきます

プログラマーと言えど、PCやサーバ上で作業するので
自分が選定するサーバの仕様、性能はもちろん、OS、CPU、メモリー、HDDやSSDは、最低限把握しておきたいところです

OS

コンピューターを運用するための基本システムのことOSと言います
CPUやメモリー、HDDなどのハードウェア(H/W)やソフトウェア(S/W)の仲介を行っています
専用サーバやVPSなどで使用するOSは大半がWindows系かLinux系になります
開発環境の要件に合わせたOSを使用することがマストとなってきます
専用サーバやVPSを利用することによって、簡単に使用OSを変えることができるのも利点の一つですね

メモリー

コンピューターで処理するデータを一時的に保管しておくための場所で、コンピューターの処理速度を高速にする役割となります
同時処理や処理時間を向上させたいのであれば、このメモリーが大容量になってきます

HDD(SDD)

HDD(Hard Disk Drive)はデータを保存するための機器です
コンピューターを使うということは、たくさんの大切なデータが保存されています
その出し入れを行うために必要となってきます
容量の大きさ=データ を多く収納できるですが、データ出し入れのスピードも重要になってきます

そこでSSD(Solid State Drive)の登場です
こちらはデータの読み書きがHDDより早く、OSやソフトの処理時間も変わってきます

帯域幅

帯域幅は通信スピードです
一度にどのぐらいの容量を転送できるかになってきます
大容量のファイルをサーバにアップロードするときは帯域幅が狭いと遅く感じるかもしれませんね

サーバの使い方によって、直接影響は少ない可能性がありますが、データ転送をするようなアプリケーションを開発する場合はこの値に注意しましょう

 

選定基準としてのイメージ

CPU、メモリ、HDD(SDD)はよく、作業机にたとえられます

メモリが机の広さで、HDDは机の引き出し
CPUは作業している人の能力ですかね

机が広くなければ、一度にできる作業量が減りますし
引き出しだって、多く(広く)無かったら、しまう資料が減ってしまいます
また、実際に作業する人の処理能力が低かったら作業スピードが遅くなります

・・・イメージとしてこんな感じですかね

 

帯域幅を例えていうなら、別の作業机で作業している人(別のPCやサーバ)との情報伝達のスピードでしょうかね
帯域幅が狭かったら、相手との情報のやりとりが遅くなるということですね

 

各スペックの具体的な値が決まっていないのであれば、費用感との相談になってきます

下記は費用面を優先として考えた時のおすすめのVPSサービスとなっています
ただ、専用サーバも取り扱っているので、高スペックな開発環境や検証環境作りたい人もどうぞ

 

カゴヤ・ジャパン

低価格でVPSを提供しているので、手軽にアプリの動作環境するにはおすすめです
もちろん、Windowsもありますよ

さくらのVPS

上場企業なので、普通に安心安全ですね
どのメニューを利用するかにもよりますが、純粋に価格だけで決められない理由がそこにあります

どちらも無料お試し期間があるので、その期間内で試してみてはいかがでしょうか
※メニューによって異なりますので、事前に確認願います

 

まとめ

プログラミング開発環境を作るのであれば、クラウド化をおすすめしました

環境構築にかかる時間や今後の開発や学習を続けていくのならVPSサーバを契約した方がトータルのコストパフォーマンスが良いからです

また、プログラミングの勉強を始めたばかりの方やプログラマー初心者の方も是非とも環境構築作りには力をいれてほしいですね

手軽にさわれなかったり、利便性に欠くようなものだったら、挫折する方も5割ほど増えるような気がします

一旦使用感を試していただき、判断してみてはいかがでしょうか

タイトルとURLをコピーしました