• Skip to main content
  • Skip to primary sidebar

プログラミング入門ナビ by Proglus(プログラス)

プログラミング学習初心者のための情報メディア

本ページにプロモーションが含まれる場合があります

You are here: Home / Archives for プログラミング入門ナビ編集部

プログラミング入門ナビ編集部

プログラミング学習での「質問のお作法」を理解しよう!最小限のやりとりで効率的に解決!

2020-12-31 By プログラミング入門ナビ編集部

質問する女性

はじめに

ITエンジニア

プログラミング学習をしていると、必ずわからないことやどうしても解決できない問題が出てきますよね。

こんな時、プログラミング講座を受講していれば講師に質問できますし、独学の場合でもWeb上のコミュニティで質問を投げ掛ければ誰かが答えてくれるのがインターネットのいいところです。

しかし、質問をしても「もう少し詳しい状況説明がないとわかりません」等と逆質問を受けたり、何だか講師の人と噛み合わなくて何度もやりとりをしたり…といった経験はありませんか?

それ、もしかするとあなたの質問のしかたに問題があったのかもしれません。

この記事ではプログラミングにおける正しい「質問のお作法」を解説します。

質問のお作法が身に付けば、自分や相手の時間を無駄にせず効率的に問題解決できるようになるので、これまで意識したことがなかった方はぜひご一読ください。

悪い質問のしかた、していませんか?

困っている男性

「第○○回目講座のコードを自分でも書いて実行してみましたが、エラーになってしまいます。どうすれば解決できますでしょうか?」

よく目にするタイプの質問ですが、実はこれは悪い質問の典型例です。

何がいけないのでしょうか。

想定される実行結果が明確化されていない

「どうなっていたら成功なのか?」(何がしたいのか)の部分がありません。

この質問では講座を指定しているので講師には詳しく書かなくても伝わる可能性はありますが、自由入力に対して何らかの処理をして返すようなプログラムだったりすると、質問者が一体何を入力してどんな結果を想定していたのか見当がつきませんよね。

ここがわからないとその後の話がこじれてしまいます。

詳しいエラー内容の説明がない

ひとことに「エラー」といっても様々な種類があります。

変数への参照エラー、指定されたパスにファイルがない、無限ループ等、枚挙にいとまがありません。

プログラムに問題があるのか、実行環境に問題があるのか、その切り分けですら手がかりがないので何のアドバイスもできないことになってしまいます。

自分で行った対処とその結果がない(もしくは何もしていない)

一般的に「何かわからないことがあればすぐに人に聞く」のが良しとされる業界もありますが、プログラミングやITの業界では「検索サイトで調べてすぐに出てくるようなことは人に聞かない」「15分くらいは試行錯誤してみる」のが最低限のマナーとされています。

「知を集約してタスクを効率化し人々を単純作業から開放する」ことこそがプログラミングの最終目的であり、それに反することは好まれないからでしょう。

自分で試行錯誤した内容とその結果が書かれていないため、どこが悩みどころなのか?が伝わりにくくなっています。

質問のお作法ができていないと嫌われる?

不機嫌な女性

先述のポイントを一言でまとめると、質問してから解決までの間にだらだらと時間がかかってしまうのが特徴です。

もちろん、質問した内容自体が難解なテーマでありその解説に時間がかかってしまうこともありますが、そのような場合は本質的な部分に時間をかけているので問題ありません。

質問を受けた側が「何がわからないのか?」「どんな答えを求めているのか?」を把握するための本質的でないコミュニケーションの部分に時間がかかってしまうのが問題なのです。

プログラミングの業界では特にロジカルな人が多いため、質問をした時にゴールの明確化や課題の言語化、問題の切り分けといった部分が甘いと「できないプログラマーだな」とレッテルを貼られてしまうことがあります。

教えることや説明すること自体は、それを通して自身の理解を深めたりすることもできるため好きな人が多いです。

そのためこれらがきちんとできていれば好意的に教えてくれますが、できていなければ「またこの人か…」と嫌な顔をされてしまうかもしれません。

先輩方を困らせないためにも、現場に出る前の今のうちから質問のお作法を身に付けておくのがとても重要です。

これだけ気をつけよう!質問のお作法

質問する女性

それでは、どんなことに気をつければいいのでしょうか。

次のポイントさえ押さえれば恐れることはありません。

先ほどの「悪い質問」にならないよう、裏返しのことをやっていくだけです。

何がしたいのかを明確化する

単に「第○○回講座のコードを実行した」だけではなく、それがどんなコードで、実行するとこういう結果になる想定である、というところまで書きましょう。

例えば「自分の姓を文字列で入力するとその文字数を返してくるプログラムで、『Nakamura』と入れたら『8』が返ってくるはずです」などと書くといいでしょう。

エラー内容を詳しく説明する

原因を特定するために必要なので、最低限下記の内容は盛り込むようにしましょう。

  • 実行したソースコード
  • (あれば)関連するファイル等
  • エラーの内容(エラーメッセージのコピペや実行結果画面のスクリーンショット等)

自分で試行錯誤し結果を明記する

これが最重要です。エラーの内容をヒントに、自分なりに調べて方法を試してみるだけでも様々な知見が得られますし、うまくいけば自力で解決できてしまうこともあるでしょう。

もし解決できなくても、「この方法を試してみたけれど今度はこんなエラーが出てダメだった」ということを質問に追記できれば、質問を受けた側にとってもより具体的なヒントになります。

まとめ

いいね!する男性

プログラミングにおける「質問のお作法」について解説しました。

お作法というと堅苦しい感じがしますが、肝要なのは「相手と自分の貴重な時間を無駄にしないよう丁寧にコミュニケーションする」ということです。

ここで説明したポイントを押さえていれば問題ありませんので、気軽に質問しながら慣れていくのがいいでしょう。

もちろん、質問前の試行錯誤のフェーズは自分の学習にも役立ちますので忘れずに行ってくださいね。

動画でプログラミング入門をしよう

オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!

プレミアムプランを2週間無料体験しよう

今すぐ詳細を確認する

Filed Under: エンジニアへの道 Tagged With: エラー, プログラミング, 解決, 質問方法

VirtualBoxでNATとホストオンリーアダプターによる安全なネットワーク環境構築方法

2020-12-10 By プログラミング入門ナビ編集部

この記事では、VirtualBoxのネットワーク環境をNATとホストオンリーアダプターを用いて構築する方法を紹介します。

よくあるVirtualBoxネットワーク設定の例として、ブリッジアダプターを使ったものがありますが、外部ネットワーク、仮想マシン、ホストOSの全ての通信が可能になってしまいセキュリティ的によろしくありません。

そこで、NATとホストオンリーアダプターを設定することで、

  • 仮想マシンから外部ネットワークに接続できる
  • 外部ネットワークからは仮想マシンに接続できない
  • ホストOSからゲストOSへの接続ができる

というセキュリティ的に安全なネットワーク環境が構築することができます。

では、構築手順を説明していきます。

実行確認環境

NATとホストオンリーアダプターを用いたネットワーク設定に関して、macOS、Windowsともに動作確認を行っております。

仮想マシンOS(今回はCentOS7を使用)は既にインストールされている前提としています。

実行環境は以下となっております。

  • ホストOS: macOS(Catalina 10.15.4)、Windows 10(バージョン 1909)

  • VirtualBox:6.1.4

  • 仮想マシンOS: CentOS7.8.2003

※VirtualBoxのバージョン、OS毎にUIが異なる可能性があります。

VirtualBoxの設定

VirtualBoxの設定を行います。

アダプタの作成

まずは、ホストオンリーアダプター用のアダプターを作成します。

VirtualBoxを起動し、ツールの横にある横線3つのボタンを選択してください。

プルダウンメニューが表示されるので、以下のように「ネットワーク」を選択します。

以下のような画面が表示されるので、「作成」ボタンをクリックしてアダプターを追加します。

追加したアダプターを選択(ダブルクリック)して、IPv4アドレスを設定します。

デフォルトで以下のように「アダプターを手動で設定」が選択されており、自動的にIPv4アドレスが設定されているはずです。選択されていなければ「アダプターを手動で設定」を選択しましょう。

設定されているIPv4は後ほど、CentOSの設定で使用するのでメモしておきましょう。

※アドレスはそれぞれの環境で違います。

これでVirtualBoxの設定は完了です。

仮想マシンの設定

次に仮想マシンの設定をします。

NATの設定

まず、設定の対象となる仮想マシンを選択し、「設定」ボタンをクリックします。

すると以下のような設定画面が出てくるので、「ネットワーク」をクリックします。

WindowsだとmacOSのUIと表示が異なることがありますが、同じように「ネットワーク」をクリックしてください。

以下のように「アダプター1」がデフォルトで割り当てが「NAT」になっていればOKです。

「NAT」になっていなければ、プルダウンから選択して変更してください。

ホストオンリーアダプターの設定

次にホストオンリーアダプターの設定を行います。

「アダプター2」を選択し、「ネットワークアダプターを有効化」にチェックを入れます。

※アダプター2が非活性で選択できない場合は、起動している仮想マシンを停止してください。仮想マシンのウィンドウの×ボタンを押して、「power off the machine」を選択後「ok」ボタンを押すことで停止できます。

「ネットワークアダプターを有効化」にチェックを入れた後、設定が変更できるようになるので割り当てをクリックして「ホストオンリーアダプター」を選択してください。

「名前」のアダプターは先ほど作成したアダプター名にしてください。

設定できたら「ok」ボタンを押して、ホストオンリーアダプターの設定は完了です。

CentOSの設定

最後にCentOSの設定を行います。

ネットワークマネージャー起動

まずは、設定したい仮想マシンを選択して起動してください。対象仮想マシンをダブルクリックすると起動できます。

その後、設定したユーザIDとパスワードを入力してログインします。

次にネットワークマネージャーを開くために以下のコマンドを入力してください。

nmtui

すると以下のようなネットワークマネージャが開くので、「Edit a connection」を選択してEnterキーを押します。

enp0s3の設定

まずはenp0s3の設定を行います。

以下のような画面が表示されるので、「enp0s3」を選択してEnterキーを押します。

※選択は十字キーで行います。

IPv6の「Automatic」を選択してEnterキーを押します。その後、プルダウンが表示されるので、「Ignore」を選択してください。

また、「Automatically connect」にチェックを入れてください。

※チェックはSpaceキーで入れることができます。

設定が完了したら「OK」を選択肢、Enterキーで完了させてください。

enp0s8の設定

「OK」選択後にEnterキーを押すと先ほどの選択画面に戻ります。

次は「■ ■ ■ ■ 1」という文字列を選択してEnterキーを押してください。

※「■ ■ ■ ■ 1」という文字列は文字化けしていなければ、「enp0s8」となっているようです。

まずは、名前を変更しましょう。

「Profile name」を選択後、「■ ■ ■ ■ 1」を「enp0s8」に変更しましょう。

次にIPv4の「Automatic」を「Manual」に変更します。

「Manual」に変更後、「Show」を選択してEnterキーを押します。

以下のように詳細が表示されます。

「Addresses」を選択し、Enterを押してIPアドレスを入力しましょう。

入力するIPアドレスは、アダプターの作成でメモしたIPアドレスを使用します。入力するIPアドレスはホストOSのIPv4を下限、ネットマスクを上限の範囲として適当に決めます。

今回はメモしたIPアドレスを以下のように変更して入力します。

メモしたIPアドレス:192.168.xxx.1

↓

入力するIPアドレス:192.168.xxx.2

※xxxは個人の環境によって変わります。

IPアドレスの入力が終わったら、enp0s3の設定と同様にIPv6を「Ignore」に変更、「Automatically connect」にチェックを入れます。

設定後、「OK」を選択しEnterを押します。

選択画面に戻ったら今度は「Back」を選択し、Enterキーを押します。

ネットワークマネージャー終了

「Quit」を選択、Enterキーを押してネットワークマネージャーを終了します。

設定の反映

設定を反映させるために以下のコマンドを入力してください。

systemctl restart NetworkManager 
systemctl restart network

以下のようにエラーが表示されなければOKです。

動作確認

ネットワーク設定が上手くいっているかどうか確認します。

外部ネットワークへの接続

まず、仮想マシンから外部のネットワークに接続できるかどうか確認します。

pingコマンドを使ってGoogleに接続できるか確認してみましょう。

ping google.com

以下のように応答が返ってきていれば外部ネットワークに接続できています。

ホストOSからゲストOSへの接続ができる

ホストOSからssh接続で確認してみましょう。

左側がホストOSのターミナル、右側が仮想マシンのCentOSのターミナルです。

macOSの方はターミナル、Windowsの方はコマンドプロンプト、PowerShellなどで実行してみてください。

以下のsshコマンドでホストOSから仮想マシンに接続します。

ssh root@192.168.56.2

※root(ユーザID)、192.168.56.2(IPアドレス)などは個人の環境に合わせて変更してください。IPアドレスは仮想マシン上で画像のように「ip addr」と入力するとenp0s8のinetから確認することができます。

左の画像のように仮想マシンにログインできたら接続できています。

これでNATとホストオンリーアダプターを使ったネットワーク環境が構築できています。

お疲れ様でした!

動画でプログラミング入門をしよう

オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!

プレミアムプランを2週間無料体験しよう

今すぐ詳細を確認する

Filed Under: ツールの使い方

TypeScriptとは?JavaScriptとの違いは?人気の理由を徹底解説!

2020-11-30 By プログラミング入門ナビ編集部

議論するエンジニアたち

はじめに

ITエンジニア

TypeScriptというプログラミング言語をご存知でしょうか?

JavaScriptと名前が似ているからその仲間かな?と思った方、あながち間違っていません。

この記事では、使いやすいと人気上昇中のTypeScriptについて詳しく解説します。

TypeScriptとは

TypeScriptは2012年にMicrosoft社によって開発されたオープンソースのプログラミング言語です。

2017年にはGoogleの社内標準言語として採用されたことから注目を集めています。

いったいどんな言語なのでしょうか?

JavaScriptの進化版

TypeScriptは下記の理由からJavaScriptの進化版のプログラミング言語といわれています。

  • Alternative JavaScript(AltJS)である
  • JavaScriptのスーパーセットである

まず「Alternative JavaScript」についてですがこれは「JavaScriptの代替言語」という意味です。

JavaScriptは汎用性が高く世界中で普及している言語ではありますが、多少ややこしいところや使いにくいところがあります。

それをカバーするために「記述を別の言語で行った後に全く同じ挙動をするJavaScriptプログラムに変換して使用しよう」という動きがあるのです。

その「別の言語」の一つがTypeScriptで、後ほど取り上げますがJavaScriptと比較し記述しやすくなっています。

なお、AltJSはTypeScriptだけではありません。

他にもRubyのように記述できるCoffeeScriptや、Googleが大規模Webアプリのために開発したDart等があります。

また、TypeScriptはJavaScriptのスーパーセットです。

これは簡単にいうと「全てのJavaScriptの文法はTypeScriptでも使用可能」ということなので、既存のJavaScriptプログラムはTypeScriptプログラムとして実行できます。

こういった点が、TypeScriptはJavaScriptの進化版であるといわれる所以です。

GitHub人気急上昇言語の一つ

GitHub人気上昇言語ランキング

GitHubが年次で発表する世界の開発状況に関するレポート「The State of the Octoverse」では、人気急上昇のプログラミング言語を紹介しています。

ここでTypeScriptは5位に入っており、人気の高さが見て取れますね。

先ほど他のAltJSとして先述したDartが1位なのは、iOSアプリ・Andoridアプリの両方を同じ環境で開発できるプラットフォームであるFlutterで使用できるため注目を集めているのが理由でしょう。

Rust・Kotlinといった言語も上位に入っていますが、これらはTypeScriptと同様に、後述する「静的型付け」が可能なので人気が上がっているのではないかと分析されています。

JavaScriptとの違い

コードを比較する開発者たち

TypeScriptがJavaScriptの進化版であることは説明しましたが、どういった点が異なるのでしょうか。

静的型付けができる

プログラミング言語にはデータの型(整数・文字列・ブーリアン等)について、プログラマーがあらかじめ明示的に決める「静的型付け」のパターンと、実行時に自動的に決められる「動的型付け」のパターンがあります。

JavaScriptはもともと動的型付けで、プログラミングの際にデータ型を気にせず気軽に記述できるのですが、変数に想定と違うデータ型が代入されてエラーが起こる可能性がありそれは実行時になるまでわかりません。

TypeScriptでは動的型付けだけでなく静的型付けもオプションとして選択可能です。

もし最初に定義したデータ型と異なる値が代入される箇所があればコンパイル時にエラーとして検出されるため、意図しないエラーを低減させることができます。

クラスを作成できる

JavaScriptはオブジェクト指向のプログラミング言語です。簡単にいうと、ソースコードの中で同じような動作をする部分をひとかたまり(オブジェクト)としてまとめておき、後から簡単に使い回すことができる仕組みがあります。

「クラス」はオブジェクトの設計書であり、どんなデータを持ってどんな操作ができるのかを記述したものです。

オブジェクト指向のプログラミング言語のほとんどはクラスを作成できるようになっているのですが、JavaScriptは2015年に発表された新標準(ECMAScript 2015)より前ではクラスを使えませんでした。

また、新標準でクラスを使えるようになったとはいえ、まだ一部のブラウザや一部バージョンによってはこの新標準への対応が行われておらず、正しく動作するとは限りません。

そのため旧仕様のJavaScriptはまだ一般的に使用されており、ここでクラスを作ろうとすると関数などを活用して無理やり記述する必要があったのですが、TypeScriptではクラスを作成することができます。

nullやundefinedのチェック可能

JavaScriptプログラムを実行時に、参照した値がnullやundefinedでエラーになったことはありませんか?

これは最もよくある実行時エラーの一つですよね。

TypeScriptではこういったエラーを最小化するため、コンパイル時にnullやundefinedの可能性がある変数をチェックすることが可能です。

このような仕組みは「null safe」や「null安全」と呼ばれ、事前にエラーを減らすための方法として注目を集めています。

TypeScriptの利点

議論するエンジニアたち

JavaScriptとの違いをふまえて、TypeScriptの利点についても見ていきましょう。

大人数で開発してもエラーを抑えられる

データ型の間違い検知やnull・undefinedチェックができるので、実行してみるまでわからなかったようなエラーを事前に撲滅できます。

また、大人数で開発している場合に、自分は文字列しか入らないと想定して書いた部分に対して別の開発者が数値を入れてしまうことがあるかもしれません。

動的型付けは規模の小さいコードを少人数で書く時はスピーディーで手軽なのが利点ですが、大人数になればなるほどこのように想定しないエラーやバグの原因となりやすいです。

また、エラーが発生してしまった後も何が原因なのか突き止めにくくなります。

TypeScriptのように静的型付けやnull安全が担保されていればそのリスクも減りますね。

先述の人気急上昇言語でも静的型付け言語が上位に入っていたのはそういった背景に基づいているといえるでしょう。

コードが読みやすい

クラスを記述できるので、クラスが作れないなか無理にオブジェクト指向を実現していたJavaScriptと比較し読みやすいコードが書けるのが利点です。

また、データ型も明示的に記述するため、どんな型が入る想定で書いているのかが伝えやすく、読む側としても読み取りやすくなります。

nullやundefinedチェックがあるため宣言しっぱなしの変数も減り「これ何のための変数なんだろう?」といった疑問も少なくなるでしょう。

まとめ

いいね!と微笑む開発者たち

人気急上昇中のTypeScriptについて、JavaScriptと比較しながらその特徴やメリットを紹介しました。

JavaScriptを学習したことのある方は学んでみてはいかがでしょうか。

動画でプログラミング入門をしよう

オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!

プレミアムプランを2週間無料体験しよう

今すぐ詳細を確認する

Filed Under: プログラミング入門 Tagged With: JavaScript, TypeScript

クラウドエンジニアとは?役割や求められるスキルについて解説!

2020-11-30 By プログラミング入門ナビ編集部

クラウドネットワーク

はじめに

クラウドネットワーク

「クラウドエンジニア」という職業をご存知でしょうか。

企業のサービスやシステムの運営形態がクラウドへ移行する傾向にあるなか、近年注目を集めている職業です。

この記事では、クラウドエンジニアの役割や求められるスキルについて説明します。

クラウドエンジニアとは

クラウドエンジニア

クラウドエンジニアは昔からあった職業ではなく、AWSやGCP(後述します)といったクラウドサービスが世に出てきてから必要とされ始めた職種です。

簡潔にいうとクラウドエンジニアはこういったクラウドサービス上でサービスやシステムを運用するための環境構築や管理を行います。

これだけ聞いてもイメージしづらいですので、具体的にどんな職業なのか紐解いていきましょう。

オンプレミスとクラウド

クラウドエンジニアを知るためにはまず、サービスやシステムを搭載したサーバーの運用形態としてオンプレミスとクラウドという概念の違いを理解する必要があります。

オンプレミスというのは、サービスやシステムを運用する企業が自身でサーバーの実機を保有し自社内で環境を構築・運用していく形態のことです。

システム規模に応じマシンのスペックを検討し調達しなければならないため運用開始までに長い準備期間や初期コストがかかります。

また、運用開始後もマシンやネットワーク(これらをインフラと呼びます)の運用を自社で行うため管理・維持コストがかかりますし、利用者が増えてきてインフラを拡張する必要が出てきた場合にも初期導入と同様に手間やコストが高くつくのが特徴です。

これに対しクラウドは後述するクラウドサービス上にシステムやサービスを構築します。

インフラを自社で用意する必要がなく、数十分程度で環境構築が完了するため初期導入コストが抑えられるのがメリットです。

また、運用開始後にインフラを拡張する必要が出てきた際も必要な分だけをすぐに増やすことができます。

このように、クラウドを使用すればオンプレミスと比較し初期導入コストや運用コストを下げられるという利点があり、近年クラウドへ移行する企業が増えています。

最近ではリモートワークが増えていることもあり、いつでもどこからでも管理画面にアクセスできることも大きなメリットですね。

オンプレミスの方が自社運用である分、カスタマイズの自由度が高いというアドバンテージはあるものの、それを差し置いてもクラウド運用に采配が上がる傾向にあります。

クラウドサービス

このようなクラウド運用を実現するのがクラウドサービスです。

サーバーやネットワークといったインフラ資源をインターネット越しにオンデマンドで提供するサービスで、主なものとして下記があります。

AWS(Amazon Web Services)

クラウドサービスの中でも古参で、最も有名なので名前を聞いたことがあるのではないでしょうか。

Amazon社が提供しているクラウドサービスで、20以上のリージョンに配置されたデータセンターにてインフラリソースをオンデマンドで提供しています。

公式サイト:クラウドならアマゾンウェブサービス

Azure

Microsoft社が提供するクラウドサービスです。

Windows OSが利用できるのが最大の特徴で、オンプレミスサーバーでWindowsを採用している場合は連携した運用ができるため採用されやすい傾向にあります。

Office365などのMicrosoft社製品との連携が容易なのもメリットです。

公式サイト:Microsoft Azure クラウドコンピューティングサービス

GCP(Google Cloud Platform)

Google社が提供しているクラウドサービスで、同社が提供する検索エンジンやYouTubeといったサービスでも使用されています。

機械学習やAI開発のためのサービスや、Android・Google Chrome OSなどGoogleならではのリソースが活用できるのが特徴です。

公式サイト:クラウドコンピューティングサービス Google Cloud

クラウドエンジニアはクラウド活用のエキスパート

このように、世間のトレンドがオンプレミスからクラウドへ移行していくにあたって、各社が提供するクラウドサービスを使いこなしてインフラの構築と運用に責任を持つのがクラウドエンジニアです。

従来はサーバーエンジニアやネットワークエンジニア(総称してインフラエンジニアと呼びます)が自社インフラに対して行っていたような職務を、クラウドサービスを活用して取り組むわけですね。

実際の業務目的は同じ「インフラを構築し運用すること」ですが、そのインフラがオンプレミスからクラウドになったことで新たに必要とされるスキルや役割が生まれたといえます。

クラウドエンジニアの役割

設計するエンジニア

ここまででも少し触れましたが、改めてクラウドエンジニアの役割を整理しましょう。

インフラの設計

これはインフラエンジニアも実施していた業務ですが、まず最初にシステム規模に合わせてどのようなインフラ環境が必要なのかを検討し、具体的な仕様を練っていきます。

インフラエンジニアの場合はマシンのスペックや台数などを検討しますが、クラウドエンジニアの場合はどのクラウドサービスを採用するのかや、どんな構成の仮想マシンを使うかを考えるフェーズです。

システム構築

システム構成が決まったら、実際に構築していきます。

自社サーバを使う場合と異なり1台1台セットアップする必要はなく、ブラウザ越しに設定作業を行うだけで済み、数十分もあれば完成するのがクラウドサービスを活用する醍醐味です。

保守・運用

システムが立ち上がったら保守作業や運用を行うのもクラウドエンジニアの役割です。

利用者の使用状況に対して問題なく稼働しているかのモニタリングや問題が発生した時の対応・キャパシティが足りなくなった場合のインフラ拡張など様々なことを実施する必要があります。

クラウドエンジニアに求められるスキル

議論するエンジニア

それでは、クラウドエンジニアにはどのようなスキルが求められるのでしょうか。

クラウドサービスに関する知識

先述のようにクラウドサービスには様々あり、各社提供する機能も料金体制も異なるため、用途や予算に合わせて適切なものを選ぶ必要があります。

また便利なものであるからこそ使い方も複雑になっており、各社がユーザーの熟練度を保証するために資格試験を実施しているほどです。

各社のクラウドサービスの違いや使い方を熟知していることはクラウドエンジニアにとって最も欠かせないスキルの一つといえるでしょう。

インフラに関する知識

クラウドエンジニアが実施する業務の大まかな内容や目的はインフラエンジニアと大差ありません。

サーバーソフトウェアやデータベースソフトウェア、ネットワークやセキュリティに関する知識が必要とされます。

コミュニケーションスキル

これはクラウドエンジニアに限った話ではありませんが、システム開発に携わる時に何よりも重要なのが関連部署や顧客と密接にコミュニケーションをとれる能力です。

特にシステム構築はシステム開発の礎となる部分なので、どんな環境や仕様が求められているのか適切に把握したり、フィードバックを受けながらブラッシュアップさせていくことが求められます。

まとめ

微笑むエンジニア

クラウドエンジニアはどんな職業なのかや求められるスキルについて紹介しました。

特に重要とされるスキルである「クラウドサービスに関する知識」については下記の講座で詳しく説明していますので、興味のある方はぜひ確認してみてください。

AWS 認定 ソリューションアーキテクト – アソシエイト入門

Google Cloud Platform(GCP)入門

動画でプログラミング入門をしよう

オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!

プレミアムプランを2週間無料体験しよう

今すぐ詳細を確認する

Filed Under: エンジニアのしごと Tagged With: AWS, GCP, クラウドエンジニア

SQLとは?エンジニアに必須の知識を初心者にもわかりやすく説明!

2020-11-30 By プログラミング入門ナビ編集部

検索

はじめに

ラップトップを持つエンジニア

SQL(読み:エスキューエル)という言葉を聞いたことがあるでしょうか。

聞いたことはあるが何か知らない、または何となくデータベースを操作するための言語だとは知っているけれど、いまいち理解できていない…

この記事では、そんな方々へ向けてSQLとは何なのか?どういった使い方をするのか?を詳しく説明します。

SQLはエンジニアの必須知識ですので、ぜひこの記事を読んでしっかりと理解を深め、他の人にも教えてあげられるようになることを目指してください。

SQLとは?

SQLは1970年代にIBM社によって開発されたSEQUEL(読み:シークェル)という言語を原型とするデータベース操作言語です。

読み方は「エスキューエル」が一般的ですが、上記の理由から「シークェル」と読まれることもあります。

そもそもデータベースとは?

書類のファイル

ここで、データベースというのは、検索や貯蓄が簡単に高速にできるように整理されたデータの集まりのことです。

例えば、紙の名刺帳を想像してください。

面倒くさがりの人は特にルールを決めずにもらった名刺を適当にファイリングするでしょう。

かたや、まめな人ならば五十音順にインデックスをつけてファイリングしていき、後から名前で探したり新たに追加したりするのが簡単にできるようにしていますね。

広義ではこの後者の名刺帳もデータベースと呼べます。データベースと聞いてピンとこない方はこれをイメージしながら考えていくと概念を掴みやすいです。

もちろん、プログラミングの世界でのデータベースは紙ではなく電子的な情報の集まりを指します。

「名刺帳」という名の電子的なデータベースを作った時、新たにもらった名刺データを追加したり、登録済みの名刺データを検索したりするには、データベースに対して追加・検索等の操作が必要ですね。

この操作をするための言語がSQLなのです。なお、SQLはリレーショナルデータベースという種別のデータベースを管理するシステム(RDBMS)でのみ使用されます。

参考:RDBMSとNoSQLの違い

ここでまた聞き慣れない言葉(RDBMS)が出てきました。

データベース管理システムは大まかに2種類:RDBMSとNoSQLに分けられ、SQLは前者のRDBMSでのみ使用されます。

ここからはRDBMSとNoSQLの違いについて簡単に説明しますので、とりあえずSQLについて先に知りたい方はこの項を読み飛ばしていただいても問題ありません。

RDBMS(Relational DataBase Management System)は、リレーショナルデータベースを管理するためのシステムのことです。

リレーショナルデータベースとは、関連性を持った複雑なデータ群を指します。

例えば先ほどの名刺帳の例ならば、個々の名刺にはその人の氏名だけでなく、会社名・所属・連絡先等が書かれていますね。

そこに載っていない情報、例えば「この会社って資本金はいくらくらいなのかな?」と疑問が沸いたとしましょう。

この時、別の「企業情報」というファイル(リレーショナルデータベースの世界ではテーブルと呼びます)に会社名ごとに創立年・社員数・資本金等のデータが揃っていれば、名刺に書いてある「会社名」をもとに辿って資本金を確認することができますね。

このように、複数のデータ群が関連性を持った形で整理されていて膨大で複雑なデータを管理できるようになっているのがリレーショナルデータベースです。

データが複雑である分、操作も複雑になるためSQLを用いて行う必要があります。

他方のNoSQL(読み:ノーエスキューエル)は、SQLを用いずにデータベースを管理するシステムの総称です。

NoSQLはRDBMSと比較しデータ構造が単純なため、操作に特別な言語が必要ありません。

例えば先ほどの名刺帳の例のように、取引先の個々の担当者情報や企業情報等を網羅的に管理しようとすればRDBMSを使わざるを得ませんが、そうではなく取引先1社につき1人の営業担当がいて、それが誰であるかのみ管理できればいいとしましょう。

この場合は名刺帳や企業情報ではなく、「取引先会社名-営業担当者氏名」という情報が1対1で紐づくデータ群さえあればいいことになります。

このように単純な構造を持つのがNoSQLであり、繰り返しになりますがSQLでの操作が必要ないのがRDBMSとの大きな違いです。

SQLの基本的な使い方

検索

ここからは具体的にSQLがどう使われるのか見ていきましょう。

データベース用語

まずは覚えるべき用語を確認しておきましょう。

リレーショナルデータベースでは、データは表計算ソフト(Excel等)のように表の構造をしています。

例えば名刺帳の例なら下記の通りです。

氏名 会社名 所属 住所 電話番号 メールアドレス
山田 太郎 (株)○○商店 営業課 東京都新宿区… 033-209-XXXX yamada@XXX.com
鈴木 二郎 △△製作所(株) 調達課 大阪府東大阪市… 064-309-YYYY jiro-s@YYY.co.jp
佐藤 三郎 □□工業(株) 企画課 神奈川県川崎市… 044-200-ZZZZ info@ZZZ.co.jp

このそれぞれの項目について、データベースの世界では下記の用語で呼びます。

  • テーブル:表そのものを指す。
  • レコード:各行のこと。この例では名刺1枚のが情報が1レコードで表される。
  • カラム:各列のこと。列ごとにデータの形式が定義される。(メールアドレスは@を含む英数字の文字列、等)
  • フィールド:レコードの中の1項目のこと。(例:山田太郎のレコードの「所属」フィールドは「営業課」)
  • フィールド名:そのフィールドの先頭列の名称を指す(氏名・会社名・所属・…)

SQLの文法種別

SQLの文法は大きく下記の三種類があります。

  • データ定義言語:データベースオブジェクト(テーブルなど)の新規作成や削除を行う
  • データ操作言語:テーブルへのデータ追加・更新・削除・検索を行う
  • データ制御言語:データベースへのアクセス権限やトランザクション(※)管理

※トランザクション:データベースの整合性を保つために、ばらばらに実行すべきでない複数の処理をまとめて一括処理すること

以下、順番に具体例を見ていきましょう。

データ定義言語

データ本体であるテーブルや、データベースを利用するユーザ等のデータを定義するための文です。

CREATE(作成)やDROP(削除)、ALTER(定義変更)等があります。

下記はテーブルを新規作成する例です。

CREATE TABLE meibo {
  name varchar(20),
  tel int,
  email varchar(50)
}

データ操作言語

テーブルに対するデータ操作を行うための文です。

テーブルにデータを挿入するINSERT、更新するUPDATE、削除するDELETE、検索するSELECT等があります。

下記はテーブルから条件に合うレコードを検索する例です。

SELECT * FROM meibo WHERE name = 'Yamada';

データ制御言語

データベース全体に関わる処理を制御するための文です。

ユーザーに特定の作業権限を与えるGRANT、権限を剥奪するREVOKE、トランザクションを開始するBEGIN、トランザクションを確定するCOMMIT等があります。

下記はTABLE1というテーブルに対しINSERTとSELECTを実行する権限をUSER1に与える例です。

GRANT INSERT, SELECT ON table1 TO user1;

まとめ

データベースエンジニア

SQLについて、データベースの定義や用語を含めた解説および具体的な使用例の説明を行いました。

あいまいだった部分の理解が少しでも明確になれば幸いです。

さらに理解を深めたい方は、下記の講座も参考にしてみてください。

プログラミング初心者のみならず、データベースを活用したマーケティング等を見据えたビジネスマンの方にもご好評をいただいている講座なので、大変おすすめです!

SQL入門|データベースを操作する言語SQLを短期間で身につけビジネスの現場で活用しよう

動画でプログラミング入門をしよう

オンライン学習サービスProglus(プログラス)でプログラミングを学び、創れる人になろう!

プレミアムプランを2週間無料体験しよう

今すぐ詳細を確認する

Filed Under: プログラミング入門 Tagged With: SQL

  • « Go to Previous Page
  • Go to page 1
  • Interim pages omitted …
  • Go to page 11
  • Go to page 12
  • Go to page 13
  • Go to page 14
  • Go to page 15
  • Interim pages omitted …
  • Go to page 48
  • Go to Next Page »

Primary Sidebar

Proglus(プログラス)

Twitter

Follow @programmingnavi Tweets by programmingnavi

最近の投稿

  • 【05/02更新】Udemyプログラミング入門講座等の割引クーポン配布
  • AWSのパブリックIPv4アドレス有料化について 2024/2より
  • 【CSS】Google Fontsの利用方法について解説します!新UIに対応2023年11月更新
  • 【SQL】XAMPPのMySQLがXAMPPがポートの競合で起動できない問題について解決方法を解説します!
  • 【Colab】–NOMAL– と表示されて、ショートカットキー(ctrl+c)でコピーができない場合の解決方法を解説します!

カテゴリー

  • AIの使い方
  • Arduino入門
  • AWS
  • その他
  • エンジニアのしごと
  • エンジニアへの道
  • ツールの使い方
  • ニュース
  • プログラミング入門
  • 電子工作入門

タグクラウド

AI AWS AWS Cloud9 Cloud9 CodeWing CSS Emmet GCP Git GitHub Heroku HTML JavaScript li Linux macOS MySQL MySQL Workbench node.js Nuxt.js ol Proglus Python Ruby Ruby on Rails SQL Udemy Visual Studio Code Vue.js Web開発 Windows インストール エラー エンジニア オンライン学習 サーバー スクリーンショット セール プログラミング プログラミング入門 プログラミング学習 ユーデミー 初心者 未経験 機械学習

アーカイブ

  • 2025年5月
  • 2024年1月
  • 2023年11月
  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年5月
  • 2023年4月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年6月
  • 2021年4月
  • 2021年3月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年11月
  • 2019年9月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月

検索

Copyright © 2025 · programmingnavi.com ・About・プライバシーポリシー