• Skip to main content
  • Skip to primary sidebar

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

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

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

You are here: Home / 2020 / Archives for 12月 2020

Archives for 12月 2020

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

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: ツールの使い方

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・プライバシーポリシー