• Skip to main content
  • Skip to primary sidebar

プログラミング入門ナビ

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

You are here: Home / Archives for プログラミング

プログラミング

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

2020-12-31 By takayama

質問する女性

はじめに

ITエンジニア

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

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

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

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

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

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

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

困っている男性

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

不機嫌な女性

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

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

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

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

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

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

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

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

質問する女性

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

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

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

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

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

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

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

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

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

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

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

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

まとめ

いいね!する男性

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

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

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

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

動画で学ぶプログラミング入門

オンラインスクールProglus(プログラス)でプログラミングを学んで、創れる人になろう!

在宅学習応援!今なら複数の基礎コースが無料!!

今すぐ詳細を確認する

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

プログラミングでできることって何?初心者にもわかりやすく解説!

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

集中している女性

はじめに

集中している女性

「プログラミング」を始めてみたいという方が増えてきています。

興味はあるけれど、プログラミングは何の役に立つんだろう?何ができるんだろう?

この記事では、そんな疑問をお持ちの方にわかりやすくプログラミングでできることを解説します。

プログラミングの世界へ一歩進む後押しになれば幸いです。

プログラミングとは?

コードを見るエンジニア達

プログラミングでできることを紹介する前に、ざっくりとプログラミングとは何なのかについてもみておきましょう。

一言でいえばプログラミングとは「機械(コンピューター)を思い通りに動かすためのもの」です。

料理に例えるとわかりやすいかもしれません。

誰かが完成させた料理を、他の誰かにも作ってもらいたいと考えたとします。他の人はもちろん作り方がわからないので、レシピが必要です。

このレシピには何をどのようにして、こういう場合にはこうして、といった手順が細かく書かれていますね。

初めての人でもこれを見ながらであれば料理を完成させることができるわけです。

ここで、料理を「実行したいタスク」、料理を作ろうとする人を「コンピューター」と置き換えればレシピは「プログラム」ととれます。

そして、このレシピを書くということこそが「プログラミング」なのです。

プログラミングでできること

前述の通り、プログラミングとは機械(コンピューター)を思い通りに動かして何かのタスクを実行させることです。

つまり、世の中でコンピューターを使っているものほとんどがプログラミングによって実現されているといえます。

具体的に見ていきましょう。

アプリ開発

スマホアプリ

一番身近に感じられるのはスマートフォンやタブレットなどで使えるアプリではないでしょうか。

これらももちろんプログラミングで開発されています。

アプリを起動したらこの画面を出し、ボタンをいくつ並べて、ユーザーがそれをタップしたら次の画面を出して…といったような一連のタスクをプログラミングして、スマートフォンに入っている小さなコンピュータに実行させているわけです。

主にiPhone向けアプリはSwift、Android向けアプリはJavaという言語を使って開発されます。

Web開発

オンラインショッピング

Amazonや楽天などのECサイトでインターネットショッピングをしたことはありますか?

Instagramに写真をアップしたことはあるでしょうか?

こういったサービスは全てWebサーバー上で動いています。サーバーとはどこかのセンターに集まって設置されている巨大なコンピューター群のようにイメージしてください。

ユーザーがお買い物をしようとパソコンやアプリからサイトにアクセスしたり、アプリから写真をアップする時には必ずこのサーバーとのやりとりが行われ、商品の写真を表示したり、ユーザの写真を自分のアカウントに掲載したりできるのです。

ユーザー側からこれらのリクエスト(「○○の検索条件に当てはまる商品を見せて」「この写真を私のアカウントにアップロードして」といったもの)を受け取って対応するためにプログラミングが使われています。

Webサーバーというコンピュータの上でプログラムが動いているわけです。

このプログラミングはWebサービス提供を目的としているため、Web開発と呼ばれます。

開発に使う言語は、サーバー側の処理にはJavaScriptやRuby、PHP等が用いられ、ユーザー側に見せるページを作るためにはHTMLやCSSが主流です。

ゲーム開発

ゲームデザイナー

スマートフォンやゲーム機の進化・普及によりゲームを楽しむ人々が増えていますね。

キャラクターを動かすための表示の制御や、選ばれた選択肢に応じてどのような進め方をするかなど、非常に細やかなプログラミングによりゲームは作られています。

ゲーム機によっては美麗なグラフィックを実現するためにグラフィックボードという特殊な機械を積んでいることもあり、これに特化したプログラミングが必要です。

様々なハードウェアに対応できるUnityや、グラフィックボードと相性の良いC++という言語がよく使用されます。

システム開発

金融システム

ATMから現金を引き出したり、交通カードを使って電車に乗ったりしている場面にもプログラミングが活用されています。

銀行では金融システムを用いて全ての口座の預金や送金等の管理をしており、セキュリティ対策として複雑なプログラムが用いられているケースも多いです。

交通カードは改札に設置されたリーダーで読み取られ、瞬時に残金を取得し足りていれば扉を開き足りなければアラートを出すようにシステムと連携しています。

ATMや改札ゲートといったハードウェア制御にはC言語等、システムサーバにはWeb開発と同様JavaScriptやRubyと言った言語が用いられることが多いですが、システム開発者であるベンダーにより様々です。

AI開発

AIのイメージ

冒頭で「プログラミングとは機械を思い通りに動かすためのもの」と説明しましたが、人工知能(AI)はその最たるものかもしれません。

コンピュータに膨大なデータを読み込ませて機械学習をさせ、精度を上げていくためにプログラミングが用いられます。

開発に使われるのはこの分野で長く活用されてきたPythonという言語がメジャーです。

プログラミングで身につく能力

この記事を読んでいる方の中には、プログラミングを通して何かを実現するだけでなく、自分の能力を高めることにも役立てたいと考えていらっしゃるかもしれません。

また、能力向上を目指してお子様へ教室に通わせようかとご検討中の親御様もいらっしゃるかもしれませんね。

結論からいいますと、能力向上の観点でもプログラミングは非常におすすめです。

ロジカルな思考力

疑問を抱く男性

プログラミングでは発生する様々なパターンに対し全ての可能性を考え、対応内容を書いておく必要があります。

例えばとあるWebサービスの会員登録ページ1つをとっても、必須項目に記載してもらえなかった場合どうする?とか、記載が終わる前に戻るボタンが押されたらどうする?メールアドレス欄なのに全角文字が入っていたら?等、非常に多くのパターンがあるわけです。

こういったパターンを全て網羅し対応を当て込んでいくためにはロジカルな思考力が必須です。

また、漏れていたパターンがあれば当然エラーが発生し、解決のための対処が必要になりますが、どこに問題があるかわからない状態から試行錯誤しながら炙り出していきます。

このバグ取りの過程でも「このパターンでは問題が発生しないから、バグはこの箇所ではない。ではこのパターンでは?」といったロジカルな思考が必要でしょう。

特に文系出身の方がプログラミングを始めたことで今まで不足していたロジカルシンキングの能力が身についたと感じる方が多いです。

英語力

英語のタイル

意外に思われるかもしれませんが、プログラミングをしていると自然と英語力が身につくことが多いです。

まず、プログラミング言語に出てくるキーワードはほとんど英語に基づいた命名がされています。

例えば「function」という言葉、生活する上ではあまり触れる機会がないですがプログラムの中には何回も出てくる「関数」という意味の英単語です。

また、ほとんどのプログラミング言語は日本語での解説サイトも多く情報を入手しやすいですが、バグが発生した時のエラー文は大抵英語で書かれています。

このエラー文を検索すると、英語の解説サイトに行き着くことも多いです。

英語が苦手な方でしたら普段は積極的に英文を読みに行ったりしないですが、目的があれば読む機会も増えます。

元々あまり得意ではなかったけれど、こうして接する機会が増えることである程度は苦にならなくなったという方もいらっしゃるようです。

まとめ

ビジネス談議をする人々

初心者の方にもわかりやすいようにプログラミングでできること、またプログラミングで身につく能力について解説しました。

コンピューターに何かさせるために必ずプログラミングは使用されているため、ここに書ききれなかった用途もたくさんあります。

ぜひご自分でもプログラミングを体験してみてはいかがでしょうか。

動画で学ぶプログラミング入門

オンラインスクールProglus(プログラス)でプログラミングを学んで、創れる人になろう!

在宅学習応援!今なら複数の基礎コースが無料!!

今すぐ詳細を確認する

Filed Under: エンジニアのしごと Tagged With: できること, プログラミング

競技プログラミングとは?初心者にもおすすめの理由を解説!

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

はじめに

オフィスで足を投げ出す女性

プログラミング学習、継続できていますか?

教材でしっかりと基礎を学ぶのはもちろん大切ですが、それだけでは何となくモチベーションが続かない…

そんな方は「競技プログラミング」にチャレンジしてみてはいかがでしょうか。

「でも、競技プログラミングって凄腕エンジニアの人たちが参加するんじゃないの…?初心者レベルが参加したって歯も立たなそう…」と思われるかもしれません。

確かに、少し前まではそのような風潮がありましたが、プログラミングを学ぶ人口が増えるにつれ初心者でも楽しく参加できるような仕組みが整ってきています。

この記事では、競技プログラミングをおすすめする理由と初心者の参加方法について説明します。

競技プログラミングとは

たくさんのディスプレイに向かってコーディングする女性

競技プログラミングとはその名の通り、プログラミングの技術を競うコンテストです。

同じ問題を解き、コーディングにかかる時間や完成したプログラムのパフォーマンスを競います。

Googleやドワンゴ等の有名なIT企業が主宰したり、インターネット上の競技プログラミング特化サイトで定期的に開催されることが多いです。

近頃では新卒学生のスキル判定基準として採用に用いられることもあります。

初心者が競技プログラミングをするメリット

上級者だけのものと思われがちな競技プログラミングですが、初心者にこそおすすめの理由があります。

期待できる主なメリットは下記です。

モチベーションの維持

ステップアップ

競技プログラミングにはレーティングというものがあり、初心者レベルからスタートして上位に入ることで上がっていきます。

単に課題を解いていくのとは違いゲーム感覚で続けられるので、モチベーションを保つうえで良い刺激になるでしょう。

もし解けなくても、どうすれば解けたのか?の答え合わせをするだけで良い勉強になります。

実行速度やメモリ使用量を意識できるようになる

基盤上のCPUとメモリ

プログラミング学習を始めたばかりの時はとりあえず動けば良いという考えになりがちですが、競技プログラミングでは実行速度やメモリ使用量のことも意識しつつ、パフォーマンスの高いプログラムを組まなければなりません。

教材で取り扱うような初歩的なプログラミングでは規模が小さいので、多少のコードの違いではパフォーマンスに大きな差は出ませんが、実際のエンジニアが働く現場では大規模なシステムを取り扱います。

この時に少しでも効率の悪いコードを入れてしまうとシステム全体のパフォーマンスに関わるため、早いうちからこれを意識できるようにしておくのは重要なことです。

就職でアピールしやすい

就職活動の面接

近年は企業の採用活動でも競技プログラミングに注目する動きがあり、有名なコンテストで良い点を納めているというだけで内定が決まる例もあります。

そこまでは目指せないとしても、競技プログラミングサイトに参加してレーティングは○○を持っている、というような話ができればアピールになります。

初心者ならばなおのこと、実務経験でのアピールができない分、こういったものを活用してスキルレベルを提示するのも良いでしょう。

高いスコアである必要はなく、プログラミングに関わりを持とうとする姿勢も評価対象になり得ます。

参加には注意点も…

先述の通り、初心者が競技プログラミングに参加するのは大いにおすすめなのですが、いくつか注意点もあります。

自分なりの目標を決めてチャレンジすること

目標設定

競技プログラミングでは、頂点に近づけば近づくほどやはり初心者にとって縁遠い世界となっているのが事実です。

世の中には天才エンジニアと呼ばれる人々がいて、初心者に限らず、エンジニアを何年もやっているような人でも敵いません。

競技プログラミングで良い順位を取ることが目的になってしまわないよう、自分なりの目標を立てて参加しましょう。

順位に一喜一憂して振り回されることなく、「エンジニアへ転職すること」等、自分が定めた最終目標に到達するための手段として楽しむことを心がけてください。

あくまで競技用であると意識すること

画面を挟んで向かい合うビジネスマン

競技プログラミングで「良い点を取れるコード」が、実際のエンジニア現場にとって「良いコード」とは限りません。

この2者では目的が違っているためです。競技プログラミングではコーディングの速さや実行速度・メモリの使用効率の良さが最優先とされます。

そのため、業務現場で重要とされる再利用性や、誰が読んでも分かりやすい可読性等は一切無視され、何をやっているコードなのか非常に分かりにくいことが多いです。

ハイレベルに近づくほどこの傾向が高くなりますので、初心者レベルでは問題にならないことが多いですが、上級者のコード等を参考にする際は、この点を意識するようにしましょう。

代表的な競技プログラミングサイト

ここで、多くの人が参加する代表的な競技プログラミングサイトを紹介していきます。

AtCoder

atcoderのTOP画面

AtCoderは、日本初の競技プログラミングサイトです。登録者数は20万人近くに上り、そのうち半分が日本人です。

毎週末にコンテストが開催され、レベルごとに分かれているので初心者でも参加しやすいのが特徴です。

また、日本の名だたるIT企業が主宰するコンテストもAtCoder上で開催されることが多く、優秀なエンジニアと企業の橋渡しの場ともなっています。

Google Code Jam

Google Code JamのTOP画面

Google Code Jamは、Googleが主宰するプログラミングコンテストで、2003年から開始されました。

4万人近くが一挙に参加する年に1度の大きな大会です。数ラウンドに分かれており、勝ち進んだ25名により最終決戦となります。

この一歩前のラウンドで残った1,000人には特製Tシャツが贈られ、エンジニアの中では勲章のように扱われるようです。

Topcoder

TopcoderのTOP画面

Topcoderは、60万人が参加する世界最大規模の競技プログラミングサイトです。

このサイトでトップレベルのレーティングを持つユーザーは「レッドコーダー」と呼ばれ一目を置かれる存在となっています。

競技プログラミングに参加するには?

競技に参加する人

では、初心者が競技プログラミングに参加するにはどうすれば良いのでしょうか。

基本的な言語スキルを身につける

ほとんどの競技プログラミングサイトでは、同じ問題について複数の言語で回答できるようになっています。

例えばAtCoderを例にとればC言語、C++、Python、Java、JavaScript等様々な言語での回答が可能です。

言語の性質の違いから、競技プログラミングで本格的に上位を目指したい場合はC言語やC++が有利ですが、そうでなければ長い目で見て使い道の多いJavaScriptがおすすめです。

まずは言語を決めて一通りの基本スキルを身につけましょう。

まずは登録してビギナー問題を解いてみる

ある程度基本を身につけたら、早速上記で紹介している競技プログラミングサイトや、その他自分がやってみたいコンテストに登録してみましょう。

ビギナーレベルであればかなりシンプルな問題が多いので、最近プログラミングを始めたばかりの方でも練習問題代わりに解くことができるでしょう。

解けない問題が出てきたら学習を深めるチャンスです。そこで投げ出さず、プログラミング学習に使っている教材なり、書籍なりを確認して解き方を確認しましょう。

この往復活動がモチベーションを保ちつつ楽しく学習を進めるコツです。

まとめ

画面を覗き込む仲間たち

競技プログラミングの魅力と初心者へおすすめする理由を説明しました。

ある程度以上のレベルでは数学的知識が無いと十分に競えない問題もありますが、ここで負けじと数学の学習を始めてスキルを磨くも良し、見切りをつけてまたプログラミング学習に専念するも良しです。

モチベーション継続の場としてうまく活用し、プログラミングのスキルアップにつなげていきましょう。

動画で学ぶプログラミング入門

オンラインスクールProglus(プログラス)でプログラミングを学んで、創れる人になろう!

在宅学習応援!今なら複数の基礎コースが無料!!

今すぐ詳細を確認する

Filed Under: プログラミング入門 Tagged With: プログラミング, 初心者, 競技, 競技プログラミング

  • Go to page 1
  • Go to page 2
  • Go to Next Page »

Primary Sidebar

Proglus

Twitter

Follow @programmingnavi Tweets by programmingnavi

人気の記事

  • MySQLをXAMPPを使ってWindows環境にインストールする方法
  • 無料のSSL証明書Let’s Encryptを設定・更新・自動更新する方法(CentOS7, Apache2.4対応)
  • 初心者のプログラミング学習には13インチのMacBook Proがおすすめ!その理由も解説!
  • Visual Studio CodeでHTMLを書くときの便利な設定方法!ミスの防止や開発効率UPに役立てよう
  • よくあるSQLのエラーの種類と自力でエラーを取り除く方法について説明します
  • macOSで2つのファイルの差分を確認するには?便利なdiffツールを紹介
  • AWS Cloud9のプレビューが上手く表示されない時の対処法
  • WindowsからSSHでサーバに接続する方法(RLogin利用)
  • MySQL 5.7 for Windowsのアンインストール方法
  • Apacheインストール時にエラー Cannot find a valid baseurl repo: base/7/x86_64

最近の投稿

  • ウェブアプリケーションエンジニアになりたい!何を学習するべきか?
  • VSCodeで画像が表示されない場合の対処法
  • プログラミング学習での「質問のお作法」を理解しよう!最小限のやりとりで効率的に解決!
  • VirtualBoxでNATとホストオンリーアダプターによる安全なネットワーク環境構築方法
  • TypeScriptとは?JavaScriptとの違いは?人気の理由を徹底解説!

カテゴリー

  • エンジニアのしごと
  • エンジニアへの道
  • ツールの使い方
  • ニュース
  • プログラミング入門

タグクラウド

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

アーカイブ

  • 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 © 2021 · programmingnavi.com ・About・プライバシーポリシー