infomisc -ITエンジニア雑記-

某ITエンジニアの雑記および備忘録です。プログラミング教育についても触れていければと思っています。

クラウドサービス AtoZ

f:id:rmatsush:20200204224639p:plain

www.infomisc.net
の続きです。

ブログでIaaS、PaaS、SaaSの3つを簡単に紹介しました。
ふと、〇〇aaSってどれだけあるんだろう。。と疑問に思って調べたところ、 やっぱり同じように疑問を持っている方々がいました。 しかも網羅的に調査済みでしたのでリンクを張っておきます。
結論としては全部のアルファベットで始まるクラウドサービスがあります。

qiita.com

boxil.jp

ここまでくるとなんでもアリですね^^;;

[A-Z] as a Service

タイトルだけでは一体なのサービスかわからないものもあります。 え?どういうサービス?みたいな。。

「Cat as a Service」なんていうサービスもありました。 こちらは猫好きの方にどうぞ。

cataas.com

よく知られたクラウドサービスは限られていますが、何か新しいサービスを立ち上げた時には、 「○○ as a Service」と名付けてもいいかもしれません^^

クラウドって??。。はてなブログもクラウドサービスのひとつです

f:id:rmatsush:20200203000805p:plain

今のIT業界でバズっている用語に「クラウド」があります。
職業柄どこに行ってもクラウドの話になります笑

クラウドコンピューティングを総称して「クラウド」と呼んでいます。 Wikipediaからの引用は以下。

クラウドコンピューティング(英: cloud computing)は、インターネットなどのコンピュータネットワークを経由して、コンピュータ資源をサービスの形で提供する利用形態である[1]。略してクラウドと呼ばれることも多く、cloud とは英語で「雲」を意味する。

他にもGoogleなどで「クラウドとは」を検索してもらえたら、関連文書が山ほど出てきます。全く同じことを書いてもあまり意味がないと思いますので、自分なりの理解を纏めておきます。 少しでも参考になったら幸いです。

クラウドの概念

最初にそもそもクラウドって何かという概念的な話をしたいと思います。

具体的な話として分かりやすいのは、生活のインフラである「水」や「電気」でしょうか。
「電気」を例としますと、現代の生活のなかではコンセントに刺すだけで電気を使うことができます。 当たり前のことなのですが、発電所から各家庭に電線が引かれていて、電気が全家庭に供給されているので、自由に使うことができます。
「電気」の場合、発電所が電気を供給し、電線から電気が送られ、人々が電気を消費するという構図です。 その対価として、人々は電気を供給する発電所にお金を払っています。

実はクラウドの考え方も同じで、

という関係が成り立っています。 では、クラウドベンダーは何を供給しているのかというと、一言で言うなら「サービス」です。

クラウドのサービスって??

この「サービス」という言葉も抽象的ですね。。^^;;

身近な例でいうと、今まさに見ている「はてなブログ」もクラウドサービスの一つと位置づけられます。

どういうことかと言うと、「はてなブログ」の場合、クラウドベンダーとしては「株式会社はてな」となり、「インターネット」を介して、 「ブロガー」が利用者となります。
株式会社はてな」が提供しているのは「ブログを公開/管理するサービス」です。ブロガーは必要に応じて対価となるお金を払っています。

関係性としては、

このことが理解できると、少し「クラウド」が身近な存在に思えるのかなと思うのですが、いかがでしょうか^^=

クラウドの概念そのものは、新しい考え方ではなく、昔からある考え方です。
ただ、昔よりハードウェアの高性能化や低価格化、インターネットの普及などによって、 急速にITインフラが整備された結果、「クラウド」という新しい言葉として定着しています。

クラウドサービスの種類

クラウドのサービスにはどんなものがあるかというと、一般的には3種類に大別されています。

  • IaaS (Infrastructure as a Service:あいあーす)
  • PaaS (Platform as a Service:ぱーす)
  • SaaS (Software as a Service:さーす)

他にも○○aaSはたくさんありますが、この3つで大別できます。それぞれを少し補足しますね。

IaaS (Infrastructure as a Service:あいあーす)
サーバそのものを提供するサービスです。 サーバを使うには、当たり前ですがサーバを購入しないといけません。 さらに、サーバを購入する費用だけでなく、サーバの置き場所や古くなった場合の買い替えなど管理するコストも掛かります。 IaaSはそれらの費用をクラウドベンダーが担ってくれるので、利用者は「サーバを利用する」サービスを受けられます。 利用者はサーバの利用代をクラウドベンダーに支払います。

PaaS (Platform as a Service:ぱーす)
OSやデータベースといった基盤を提供するサービスです。 IaaSと似たようなサービスですが、利用者はサーバそのものを意識する必要がありません。

SaaS (Software as a Service:さーす)
一番身近なのはこちらのサービスかと思います。 「はてなブログ」もこちらに該当しますし、他にもAppleの「iCloud」や、Microsoftの「OneDrive」、Googleの「Gmail」や「GoogleDrive」などは いずれもSaaSに該当します。

まとめ

クラウドの概念はそれほど難しいものではありませんし、正直全く新しい考え方ではありません。

クラウドは、電気のようにコンセントに刺すだけで使えるような手軽さで、色々なサービスを使えることが最大のメリットと言えます。

プログラミング言語の位置づけ

f:id:rmatsush:20200115001027j:plain

少し脱線してプログラミング言語の位置づけについて書きます。

プログラミング言語は目的を達成するためのツールでしかないので、目的と手段を履き違えないようにしましょう。というお話です。

 

www.infomisc.netちょっと前に上のブログで、「プログラミングは、コンピュータを制御するために、コンピュータが理解できる表現で書くこと」と言いました。この表現方法というのは方言のようなもので、プログラミング言語によって異なります。プログラミング言語の種類はWikipediaなどからによると200種類以上とも言われています。

プログラミング言語一覧 - Wikipedia

 

 

プログラミング言語はツールであり手段のひとつ

プログラミング言語は目的を実現するためのツールでしかありません。

自分も同じようなことになりがちですが(笑)、ツールそのものを使うことが目的になっているケースも見かけます。例えば「オブジェクト指向でコーディングしている」とか「マイクロサービス化した」など、なぜか手段が目的となってしまっているケースです。最近では仕事でクラウドを扱っているのですが、「クラウド化」といったキーワードも至るところで耳にしていて、本当の目的が隠れてしまい、「どうやったらクラウド化ができるのか」ということに焦点が当てられてしまっているように思います。

話が脱線しましたが、プログラミング言語は目的を達成するためのツールでしかなく、どの言語を選んでも本質は変わりません。

 

現実的には。。

、、と書いてはみたのですが、現実的には「〇〇言語ができる人を募集」とかあったりしますので、世の中で広く使われているプログラミング言語を習得しておくことに越したことはありません。募集する側も「プログラミング的思考能力」を測ることは難しいので、プログラミング言語ができることを評価軸とした方がわかりやすいということもあると思います。

個人的にですが、プログラミング言語を習得する上で効果的だったのは、文法を一から学ぶのではなく、「〇〇を実現したい」といった目的を定めることでした。

自分はPythonを使っています。スクリプト言語であり、かつ、可読性が高いという特徴を持っています。仕事上大量のテキストファイルを扱うことがあるのですが、数行コーディングするだけでやりたいことが実現できるので手軽でいいです。

プログラミングとは。。

f:id:rmatsush:20200110233327j:plain



ITにそれほど詳しくない方は「プログラミング」と聞くだけで高度な能力が必要と思われるかもしれません。が、実はそんなこともありません。IT業界では全般的に横文字が多いので難しそうに思われがちですが、何かを言い換えているだけのケースも多いです。

#少なくとも自分はそう思っています。難解に思わせることで、ITエンジニアの価値を高めている事実もありそうですが。。^^;;

IT業界におけるプログラミング

「プログラミング」はプログラムを組むことを意味します。一般的にプログラムという用語が使われているケースとしては、例えば運動会などでの進行表(プログラム)というとイメージがつきやすいでしょうか。運動会の進行表には、何時にどんな競技が行われるかの予定が記載されています。

「何時に何をやって、次に何をやって。。」という内容と流れをまとめたものをプログラムと考えてみてください。運動会では先生方が考えたプログラムに従って、生徒たちは動くことになります。

 

ITでいう「プログラム」も考え方はほぼ同じです。人間が考えたプログラムに従って、コンピュータはその通りに動くことになります。実際のプログラムの中身に関しても運動会の進行表と似ていて、「ある処理をして、次に何をやって。。」をコンピュータが理解できる表現で書いていきます。このことを「プログラミング」と呼びます。

 

プログラムの要素「順次処理」「分岐処理」「反復処理」

「ある処理をして、次に何をやって。。」という処理はプログラムでは「順次処理」と呼んでいます。「順次処理」とあわせて重要な処理が「分岐処理」と「反復処理」になります。

ヒトは運動会の当日朝に雨が降っていたら「延期だな。。」と自然に考えることができます。一方、コンピュータには「雨だったら延期」で「雨でなかったら決行」という条件を教えておく必要があります。このような条件によって処理を分けることを「分岐処理」と呼びます。

「反復処理」はその名の通り、ある処理を繰り返し実行することを意味します。

IT業界の「プログラム」はこの3つの処理を組み合わせることで表現することができます。