Skip to main content

仮想サーバーってなに?

今回、Linuxサーバで開発を勉強してみようかな。まずは仮想サーバーを立てて・・・

りょうじ殿!仮想サーバーってなんでござるか!?

おぉう。凄い勢いですね。
どうしたんです?やる気満々ですね。

日に日にITへの知識欲がわいてくるでござる!!スーパーITマンになるでござる!

それで、仮想サーバーってなんでござるか?

(あ、暑苦しい・・・)

分かりました!今回は、仮想サーバーについて熱く語っていきましょう!!楽しい分野ですよ!!

仮想サーバーとは

仮想サーバーとは、一台のサーバー上に複数のOSを起動できるようにする仕組みです。

OSって、一つのPCやサーバに、一つ乗っているやつでござるな?

はい。基本的にはそうです。

過去にこちらで話をしましたね。

仮想サーバは以下のような感じです。

複数のサーバーを違うOSで配置できるわけでござるな!

これって、どれくらいの数まで仮想サーバーを並列で設置出来るでござる?

その辺りは、物理的なサーバのスペック次第ですね。

大量のHDDで、高性能のCPUを積んでいて、容量のあるメモリを積んでおく必要があります。

例えば、WindowsのOSは、メモリは4GByteはほしいところです。

もし、WindowsのOSを4つ起動させたい場合は16GByte以上のメモリが必要になります。

ううむ。お金がかかるでござるな・・・

仮想サーバのメリット・デメリット

では、ここでは仮想サーバのメリットデメリットをお伝えします。

メリット

・複数の物理サーバーを買うより安くなりやすい

・メモリやCPUなどのリソース配分を仮想化ソフトでコントロールできるので、スペックの調整がしやすい

・サービスを終了するときに、物理サーバーを他に使いまわせられる

デメリット

・機械的な故障があった場合、仮想サーバー全体に影響を及ぼす可能性がある。

・仮想化ソフトやネットワークなどの設定にひと工夫が必要。

・オーバーヘッドで性能が少し落ちがち(CPUやメモリなどが複数の仮想OSを相手にするので、処理が増える)

ふむふむ。善し悪しがあると。。。

例えばクラウドサービスでサーバーを借りた時も、この技術が使われていたりします。

ハイスペックで大容量のサーバーが沢山あって、仮想化OSを利用者に配布するようなイメージです。

もはや一般的な技術で、どこでも使われています。

仮想サーバを試しに使ってみたい

情熱があるうちに、勉強をつづけたいでござる!仮想サーバーって簡単に利用できるでござるか?

できますよ。

Windowsパソコンの場合、以下の物を使うことができます。

VirtualBox

比較的簡単に仮想マシン(サーバー)を立てることが出来るツール。

VMware Workstation Player

仮想化技術で昔から有名な企業。無料試用版もある。

Hyper-V

Windowsの標準機能(pro以上)に搭載されている機能。

個人的には、「VirtualBox」が使いやすくてお勧めです。

分かったでござる!!とりあえずはVirtualBoxについて調べてやってみるでござる!!

うぉぉぉ!!


仮想化技術は、便利な一方、初心者には複雑な技術です。このため、最初は図書などの手順通りにやってみることをお勧めしてます。

​Visual Studio Codeを活用してみよう

お侍さん。

ひょっとしてですが、プログラミングを「メモ帳」機能でやっていますか?

うむ。拙者、シンプルイズベストでござってな。

な、なるほど・・・?

実はコードエディターというものがあるのは、ご存じですか?

コードエディター?うむ。知らん。

じゃあ、今回はコードエディターの一つである「​Visual Studio Code」についてざくっと解説します!

プログラミングが早くなるので、是非使ってみてください。

①コードエディターって何?

そもそも「こぉどえでぃたぁ」って何でござるか?

メモ帳は文字を書くことができますが、コードエディターはプログラムを書くことに特化したソフトウェアです。

VSCODE以外では「Sublime Text」や「Atom」もあります。

それって絶対使わないといけないでござるか?

絶対使わなければいけないというルールはありません。

お侍さんのようにメモ帳でもプログラムを作って、拡張子を変更すればコードは書けます。

しかし、以下のようなメリットが、「コードエディター」にはあります。

1.言語に合わせて間違った文字列を判別する
2.言語によって使用する関数など提案・表示してくれる
3.各種プラグインを利用することで、さらに使い勝手が向上する

ううむ。良いことづくめでござるな。

はい。
なので、まずはVSCODEをダウンロードして使用してみましょう!

②ダウンロード・インストール

以下のURLからダウンロードして自分のpcにインストールしましょう。

https://azure.microsoft.com/ja-jp/products/visual-studio-code/

ちなみに、日本語への対応方法は以下を参照してみてください。

https://rfs.jp/sb/vsc/vsc-japanese.html

と、とりあえず、いんすとーるしてみるでござる。

③実際にプログラミングに使ってみる

操作に慣れてきたら、各種プラグインを導入していけばOKですが、試しにhtmlファイルを開いてみましょう。

おぉ。。。タグや属性に色がついてるでござる。

便利な機能で言うと、RGB値をマウスで選択することもできます。

また、タグの数が足りない時や使用する属性候補なども予測で表示してくれます。(下図は <l のみ入力した時)

ひえー。いままで拙者がタイプミスしてきたのはなんだったでござるか。

このため、コードエディターを使うだけで、ケアレスミスによるコーディングミスを防いでくれます。

開発効率が絶対高くなります!!

今度からぜったいVSCODEを使っていくでござる!!

ちなみに、上述したように、他にもコードエディターはたくさんあるので、自分の好みで使ってください!!

初心者には、JavaScriptがお勧め!

HTMLとCSSでウェブサイトを作れたでござる。

この後、何をしようかでござる。

おお、いい感じのウェブサイトですね。

じゃあせっかくなので、JavaScriptでプログラミングするのはどうでしょうか。

じゃばすくりぷとっていうのがいいんでござるか?

じゃあ、プログラミング初心者のお侍さんに、なぜJavaScriptがお勧めなのか、ざくっと解説します。

①環境構築がほぼ要らない

プログラミング言語はたくさんあります。
その多くは「開発環境」を整備してあげる必要があります。

かいはつかんきょう・・・

プログラムというのは、人間に読みやすくできていますので、それを機械に読んでもらうために「コンパイラ」の使用が必要だったりします。
また、ライブラリという別のプログラムの塊を準備したりする必要があります。

ううむ・・・カタカナで頭痛が痛くなりそうでござる・・・

しかし、JavaScriptは普段から利用しているブラウザ(ChromeやSafariなど)があれば動きます。

また、メモ帳でも書くことでプログラミングもできます。
(できればVisual Studio Codeのようなエディタを使った方が効率的です)

おぉ!なんだか簡単そうでござる!

②HTMLを作った人ならば、いろいろできる

また、JavaScriptはHTML上で動作させます。

このため、WEB画面を作れた人は、JavaScriptで開発することで、さらにWEB画面を進化させられます。

おぉ。。。拙者のシステムが超進化するでござるな

実際どんなものを作れるんでござるか?

例えば・・・

A.Web画面を動的におしゃれに動作させたい
B.簡単なブラウザゲームを作る
C.ちょっとしたツールを作って、便利なものを公開したい

などがあります。

Cがよくわからんでござる・・・

じゃあ、私が最近趣味で作ったプログラムで見てみましょう!

③管理人が学生時代を思い出しながら作成したサンプル

作成途中で恥ずかしいのですが、学生時代を思い出して、ちょっとしたプログラムをJavaScriptで作成してみました。

その名も「積立投資の簡易計算つーる」です。
(税金計算が入っていなかったり、エラー処理がなかったりで半端ものです。すいません)

↓↓↓動作をお試しの際は、こちらをクリック↓↓↓

おぉ。銭の計算ができるでござる!

これくらいなら、拙者でも作れそうな気がするでござるよ!

(DOMの考えとかで時間かかるかもだけど、、、)
頑張って作成してみて下さい。きっとできますよ!!

上述したように、HTMLの次はJava Scriptを個人的にオススメしてます。

別の言語でもOKなので、どんどんコーディングしていきましょう!

物が出来上がるというのは、とても楽しいですよ!!

アジャイル開発工程をざくっと解説

以前、システム開発方式の一つとして、ウォーターフォール型開発について解説しました。(過去記事はこちら

たしか、滝の流れのように一方通行で仕事が進むんでござったな。

そうです。
しかし、以下のようなデメリットが、ウォーターフォール型開発にはありました。

<デメリット>

・途中で作りたいシステムの内容が変わると、大幅なやり直しが必要

・各役割(顧客, PM, SE, PG)の間で、コミュニケーションミスをすると、違ったものが作られる

・顧客は、リリース時にシステムを確認することが多く、間違ったものを開発すると大変

うむ。開発が一方通行に進むから、手戻りやコミュニケーションミスがあると困るでござる。

これらの問題に解決するために、アジャイル開発という方式が米国を中心に作り上げられました。

あじゃいる開発。なんだか凄そうでござるな。

日本でも、アジャイル開発を採用する企業が年々増えてきています。
これは、ウォーターフォール型開発の限界(デメリット面に述べた)があり、また、DX(Digital Transformation)の推進が推奨されているからです。

この辺りの話は別の機会にしてしますが、アジャイル開発はどんなものか解説しますね。

上の図のように、くるくると開発工程を繰り返すことが特徴的です。

ざっくりアジャイル開発の工程>
①要件定義の部分で、一定期間での開発内容を決めます。

②すぐに黄色の部分の開発作業を開始します。

③開発中は、必ず設計から行う必要はなく、すぐさまプログラミングをすることが多くあります。設計文書などが必要な場合は、プログラムを作った後に整備します。

④開発完了したものをリリースし、顧客などの依頼主を中心に確認します。

⑤レビュー・リリースを通して継続して開発をする予算と必要性があれば、①に戻ります。これ以上開発の必要が無いと判断されれば、プロジェクト終了となります。

うむ。この開発によるメリットはなんでござるか?

ウォーターフォール型開発と比べ、以下のメリット・デメリットがあります。

<メリット>

・時間経過による要件変更に対応できる

・後戻りや要件変更も対応が速やかにできる

・人員のアサインが時間で固定のため雇用しやすい

・重要な部分から開発を進めるため、無駄な機能等をそぎ落としやすくなる

・自動テスト機能や自動デプロイ機能等を活用することで、超高速に開発が進めることが可能

<デメリット>

・日本国内では経験者が少ない

・アサインされた人員は多能工が求められる、しかし日本にはこの考え方が少ない

・請負契約による発注が難しく、発注元のプロジェクトコントロールが大切

・大きな企業では、すでに存在する開発マニュアルとの齟齬が大きく、アジャイル開発導入のハードルが高い

ううむ。なんだか良い面が多い気がするでござるな。

著者としては、良いところばかりの開発手法だと思っています。
しかし、アジャイル開発の工程を理解し、実践したことのある技術者まだまだ不足しています。
また、多能工という技術分野を跨いだ働き方など、熟練の方ほど二の足を踏んでしまうやり方だと思います。

今後、日本のIT発展遅れを取り戻すために導入する企業も多いと思われますため、アジャイル開発について、今後も情報発信していきますね。

RPAというロボットが、仕事をするらしい

最近、RPAというロボットがいて、人間に代わってPCを操作すると聞いたのだが?

はい。RPAは「ボティック・ロセス・ートメーション」という名称になります。
人間が繰り返し行うPC作業を、プログラム(ロボット)が代行してくれるものになります。

ざくっというと、毎日行うルーチンワークをロボットにお願いすることができます。
しかし、あくまでロボットなので、人間のような経験による判断や行動の変化はできません。

ふむ。人間の仕事が完全に置き換わるわけではないのだな

はい。
しかし、PC利用者の脳の情報が、完全にシミュレーションされたAIが開発できれば、人間によるPC操作は必要なくなるかもしれませんね。
しかし、そんな時代がいつ来るのかは、まだ誰にも分りません。

また、このRPAはパソコン側にロボットを配置する製品と、サーバーでロボットを一元管理する製品と色々なバリエーションがあります。
これらのRPAは、無料や試用可能な製品も出てきていますので、まずはそちらをお試しいただけると、勉強になると思います。
私も、一部のRPAは触ったことがありますので、今後RPAを試用してみて、記事にできたらと考えておりますので、引き続きよろしくお願い致します。

<おススメ図書>

ウォーターフォール型開発

システムやアプリケーションを作る際、いろんな開発方法があります。
日本で、現在も主流な手法として、ウォーターフォール型開発というものがあるので、こちらをざくっと紹介します。

うぉたぁふぉおる・・・英語ですな。水が落ちる・・・?>

そうです!
以下の図のように、滝の水が落ちるように開発を進めていきます。

※補足 PM・・・プロジェクトマネージャ、システム開発全体を管理する人
    SE・・・システムエンジニア、システムの設計やPGに開発を依頼などをする人
    PG・・・プログラマー、プログラミングやテストをする人

こんな感じに、水が下に落ちるように一方的に進んでいく開発手法です。以下のメリット・デメリットがあります。

メリット

・開発が一方通行で進むため、スケジュールの計画が立てやすい
・スケジュールの計画通りに進めば、人員の確保がしやすい
・やることが明確になっているので、GOALも明確

デメリット

・途中で作りたいシステムの内容が変わると、大幅なやり直しが必要
・各役割(顧客, PM, SE, PG)の間で、コミュニケーションミスをすると、違ったものが作られる
・顧客は、リリース時にシステムを確認することが多く、間違ったものを開発すると大変

なるほど。良い点も悪い点もあるのでござるな。ということは、他にも開発手法がある?

さすが、お侍さん!!勘が鋭いですね!!
他にはスパイラルモデル、アジャイル開発、リーン開発など色々あります。
おって解説記事を書いていきますので、一緒に勉強していきましょう!