• Skip to main content
  • Skip to primary sidebar

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

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

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

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

プログラミング入門

HTMLはどうやって開発された?経緯や主なバージョンについて紹介!

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

レトロなオフィスで働く科学者たち

はじめに

プログラミング言語を学んでいると「この言語はどうやって開発されたんだろう?」と疑問に思うことはありませんか?

開発の経緯や背景を知っていると、より興味を持って学習が進められますね。

この記事ではHTMLの歴史について簡単に紹介します。

動画解説

本記事の内容を動画でも解説しています。

https://www.youtube.com/watch?v=3WdkHuiXm9A&feature=youtu.be

HTML開発の経緯

レトロなオフィスで働く科学者たち

HTMLは1989年、スイスのジュネーブにあるCERN(欧州原子核研究機構)のイギリス人研究者であるティム・バーナーズ・リー博士によって開発されました。

研究所内では多くの研究者により様々な研究が為されていましたが、膨大な論文の中から関連する資料を探し出すのは一苦労で、より簡単に研究者同士が進捗状況や研究成果を共有できるようにする必要があったのです。

ティム・バーナーズ・リー博士はこの目的のためにハイパーテキストシステムを考案し、ある論文から別の参考文献へリンクを貼ってすぐに参照できるようにしました。

これがインターネット上でドキュメントやメディアを互いに参照しあうハイパーテキストシステムであるWorld Wide Webが生まれた経緯です。

そして、このシステム上のドキュメントを記述するための言語としてHTML(Hyper Text Markup Language)が開発されました。

下記が1991年、ティム・バーナーズ・リー博士によって世界で初めて公開されたウェブサイトで、現在は復刻版として公開されています。

World Wide Web

博士はこの偉大な功績を称えられ、2016年にIT界のノーベル賞ともいわれるチューリング賞を受賞しています。

なお、インターネットが開発されたのは別の経緯であり、1969年にアメリカの国防総省にて情報共有を目的に開発されたARPANET(アーパネット)が起源です。

主要なHTMLのバージョン

ソフトウェアの入ったパソコン

開発以後、HTMLは何度かのバージョンアップがありました。

下記が主要なHTMLのバージョンです。

  • 1999年:W3C勧告 HTML 4.01
  • 2000年:W3C勧告 XHTML 1.0
  • 2014年:W3C勧告 HTML5
  • 2016年:W3C勧告 HTML5.1(HTML5のマイナーアップデート)
  • 2017年:W3C勧告 HTML5.2(HTML5のマイナーアップデート)

HTML4.01やXHTML1.0が10年以上使用されていましたが、現在では新規のプロジェクトに関してはHTML5またはそのマイナーアップデート版が使用されます。

HTML5はフォームに使える部品やスマートフォン向けの機能等を大幅にアップグレードしたもので、ビデオをページに埋め込むことも可能となりました。

このようにHTML5はHTML4の良い部分を残しつつ、新しいニーズに合った機能が追加されています。

なお、XHTMLとはExtensible Hypertext Markup Languageの略称で、拡張性の高いマークアップ言語であるXML(Extensible Markup Language)の文法で書き直したものです。

HTMLでは複雑な数式や化学式を表現することができなかったため、XMLの拡張性を取り込みつつ、ブラウザでも表示できるよう新たに開発されたのがXHTMLです。

しかしながら後発のHTML5でMathMLやSVGといった機能を埋め込んで数式や化学式の表示が可能となったため、2009年に開発が中止されました。

W3C

W3Cトップ

W3C(読み:ダブリュースリーシー)はWorld Wide Web Consortiumの略称で、World Wide Webで使用される各種技術の標準化を推進するために設立された非営利の標準化団体です。

先述のティム・バーナーズ・リー博士が1994年に創立し、その後も率いています。

数百の企業や団体が参加してWWW技術の標準化や教育活動を行っており、HTMLの仕様もこの団体によって決定されているわけです。

一般に標準化の作業はとてつもない時間と手間がかかるといわれますがHTMLも例に漏れません。

W3C勧告(正式にW3Cが仕様として認めること)となるまでには多くのステップが必要で、また、勧告後も間違いがあれば「第○○版」といった形で更新されていきます。

まとめ

HTMLの歴史と関連情報を紹介しました。研究成果の共有を目的に開発された技術が、今やここまで世界中の人々からありとあらゆる目的で活用されているのは驚きですね。

開発者本人であるティム・バーナーズ・リー博士もまさか数十年でこんな世界になるとは予想できていなかったかもしれません。

本記事の内容は下記の講座からの抜粋です。HTMLについてより体系的に学びたい方はぜひチェックしてみてください。

新HTML入門(Proglus)

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

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

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

今すぐ詳細を確認する

Filed Under: プログラミング入門 Tagged With: HTML, 歴史

JavaScriptの「this」は呼び出し方によって値が変わる?違いを徹底解説!

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

はじめに

指し示す指

JavaScriptの「this」は他の言語と比較し挙動に少々癖があります。呼び出し方によってどの値を指すかが変わるためです。

思ったような値が得られない時は、thisの呼び出し方に問題があるかもしれません。

この記事では呼び出し方の違いによるthisの挙動を説明します。

thisの呼び出し方:基礎編

まずはよく使われるオーソドックスな呼び出し方を見ていきましょう。

基礎編クイズ

value = 1;
var obj = {
  value: 2,
  func: function() { console.log(this.value) }
}
function func() { console.log(this.value) }
var test = obj.func;

console.log(this.value);    //①
obj.func();                 //②
test();                     //③
func();			//④

上記①②③④では何が表示されるでしょうか。少し考えてみてください。

答えは下記のようになります。

> 1       //①
> 2       //②
> 1       //③
> 1       //④

正解できましたか?

①②③④はいずれもthis.valueの呼び出しをしていますが、この通り表示される値が違います。なぜこのようになるのか、順を追って説明していきます。

グローバルコンテキストでの呼び出し

①ではthisをグローバルコンテキスト(関数やオブジェクトの外側)で呼び出しています。この場合、thisにはグローバルオブジェクトが入ります。

グローバルオブジェクトはJavaScriptが実行される環境により変わるのですが、ブラウザの場合はWindowオブジェクトとなります。

下記のようにconsole.logでthisを表示させればグローバルオブジェクトが何なのか確認できます。

console.log(this);	//> [object Window]が表示される

今回は1行目でvalue = 1;としたことで、このグローバルオブジェクトにvalueという値が定義され1が代入されていたため1が表示されました。

このように、グローバルコンテキストでthisを呼び出すと、グローバルオブジェクトが入ります。

オブジェクトのメソッド呼び出し

②は「objオブジェクトのfunc」をメソッド呼び出しています。

このように「〇〇.func();」といった具合で関数呼び出しの前に「〇〇.」がつく場合、関数「func」のスコープ内でのthisが指すのは前置きの〇〇が示すオブジェクトです。

この例ではobjのfunc関数スコープ内でthisが呼び出されているので、このthisが指すのは自分自身であるobjオブジェクトですね。

そしてobjは自身のvalueを持つため、結果的にthis.valueはこれを呼び出して2が入ります。

③は同じくobjの中で定義されたfuncを実行しているのですが、testにobj.funcを代入したあとでtest();と前置きなしで呼び出されていますね。

このように、グローバルコンテキストで前置きなしに関数だけが呼び出されている場合の関数内thisは、次項の「関数呼び出し」のケースにあたりグローバルオブジェクトを指すため1が表示されます。

関数呼び出し

④はグローバルコンテキストで定義された関数funcを呼び出しています。メソッド呼び出しではないので、「〇〇.」のような前置きはありません。

この場合の関数内thisもグローバルオブジェクトを指します。

グローバルオブジェクト(ブラウザで実行の場合はWindowオブジェクト)のvalueは一行目で定義されている通り1なので、1が表示されるわけです。

thisの呼び出し方:応用編

基礎編で見たように、thisの挙動は呼び出し方によって変わります。thisに何を入れたいかを明示的に指定するためのいくつかの方法を紹介します。

アロー関数呼び出し

ES6からはアロー関数が使用できるようになりました。関数としての基本的な挙動は通常の関数(function)と変わらないのですが、関数スコープ内のthisについては挙動が異なります。

アロー関数の中で呼び出されたthisは、関数の呼び出され方に関わらず、その関数が最初に定義された時点で指していた対象を指し続けるのが特徴です。

例を見てみましょう。

value = 5;
function func1() { console.log(this.value) }
var func2 =()=> { console.log(this.value) }
var obj1 = {
  value: 1,
  func1
}
var obj2 = {
  value: 2,
  func2
}

obj1.func1();	//1が表示される
obj2.func2();	//5が表示される

func1は従来の関数、func2はアロー関数です。この時点では両方ともグローバルコンテキストで定義されているため、thisはグローバルオブジェクトを指します。

その後に2種類のオブジェクト:obj1とobj2が定義され、それぞれfunc1とfunc2を保有していますね。

obj1のメソッド呼び出しでは、基礎編で触れたようにthisはobj1を指すので、obj1が持つvalueの値である1が表示されます。

これに対し、obj2のメソッド呼び出しではfunc2がアロー関数なので、thisが指すのはobj2でなく定義された時点で指していたグローバルオブジェクトのままです。

結果として、ojbのvalue(値は2)でなく、グローバルのvalue(値は5)が表示されます。

このように、アロー関数を使うと呼び出され方によらずthisが指す対象を定義当初のまま固定できるのです。

関数のコンストラクタ呼び出し

関数をグローバルコンテキストで前置き無しに呼び出すとその関数内でのthisはグローバルオブジェクトを指すのでした。

しかし、関数をコンストラクタ呼び出しすると、関数自体がインスタンスとなりthisは自身を指すようになります。

function Obj() {  console.log(this) }
Obj();		//> [object Window]が表示される
var obj = new Obj();	//> [object Object]が表示される

1行目の関数を2行目で呼び出した場合はthisはグローバルオブジェクトであるWindowオブジェクトになりますが、3行目のようにコンストラクタ呼び出しをするとObjectオブジェクトとなっていることが分かりますね。

実際に通常の関数呼び出しとコンストラクタ呼び出しの挙動を比較してみましょう。

function MyObject(num){
  this.value = num;
  console.log(this.value);
  this.show = function() { console.log(this.value) };
}
MyObject(5);		//5が表示される
var myObj = new MyObject(3);	//3が表示される
console.log(this.value);	//5が表示される
myObj.show();		//3が表示される

6行目が通常の関数呼び出し、7行目がコンストラクタ呼び出しです。

関数MyObjectではthis.valueに引数の値を代入しますが、通常呼び出しではグローバルオブジェクトのvalueに、コンストラクタ呼び出しでは自身(MyObjectのインスタンス)のvalueに値を入れています。

そのため6行目・8行目ではグローバルvalueが呼ばれるので5が、7行目・9行目ではMyObjectインスタンスのvalueが呼ばれるので3が表示されるわけです。

apply・call関数を使った呼び出し

関数呼び出しにおいてthisに何を入れるか明示的に指定できるのがapply関数とcall関数です。

使い方を見てみましょう。

value = 0;
var obj1 = { value: 1 };
var obj2 = { value: 2 };
function func() { console.log(this.value) }

func();				//0が表示される
func.call(obj1);	//1が表示される
func.apply(obj2);	//2が表示される

4行目の関数funcのthisはグローバルオブジェクトを指すので、6行目のように呼び出すとグローバルのvalueである0が表示されますね。

一方、7行目・8行目のようにcallやapply関数を使って呼び出すと引数に指定したオブジェクトをthisとして指定することができるので、それぞれobj1・obj2のvalueである1と2を表示します。

call・applyでは関数に渡す引数を設定することもでき、その方法によりこれらを使い分けます。詳しくはドキュメント(MDN)を参照してください。

まとめ

考える女性

JavaScriptでのthisについて、呼び出し方による挙動の違いを説明しました。

最初は理解しにくいので、実際にコードを書いて試していくのがおすすめです。

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

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

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

今すぐ詳細を確認する

Filed Under: プログラミング入門 Tagged With: JavaScript, this, 呼び出し

JavaScriptのfor文で配列要素の足し算をするとNaNが出るのはなぜ?原因と対処法を解説!

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

はてなマーク

はじめに

はてなマーク

JavaScriptを学習していると、比較的初歩の段階でfor文を学びますね。

繰り返し処理をするための機能で、配列データを順番に取り出して表示したり、別の値を格納していくなどの便利な使い方が可能です。

しかし、使い方に慣れるまではつまずきやすい部分でもあります。

ここでは初心者がうっかりしてしまいがちなfor文での失敗例とその対処方法を紹介します。

for文の失敗例

例えば、主要5教科:国語・算数・英語・理科・社会の合計点を求めるプログラムを書くとしましょう。

配列scoresに各教科の点数が入っていて、これを順番に取り出して合計点totalに加算していくためのコード例は下記です。

total = 0;
var scores = [35, 90, 21, 89, 70];
for(i = 0; i <= scores.length; i++) {
  total += scores[i];
}
console.log(total);

こちらを実行すると、合計点が表示されるのを期待するところですが、実際は下記の結果となってしまいます。

> NaN

NaNとは「Not-A-Number」のことで、「非数」という特別な値です。これは数字が与えられる想定の処理に対し、数字ではない値が与えられた場合に返されます。

NaNになる原因は?

なぜNaNになってしまうのでしょうか?どこで問題が起きているかわからない場合は、各所で値を表示させておかしな値が入っている箇所がないか確認するのが定石で、これをプリントデバッグと呼びます。

下記の通り、for文内にログ出力処理を追加しましょう(4行目)。

total = 0;
var scores = [35, 90, 21, 89, 70];
for(i = 0; i <= scores.length; i++) {
  console.log(scores[i]);
  total += scores[i];
}
console.log(total);

こうすることでscoresの配列から取り出した値をコンソールに表示させて確認できます。実行結果は下記の通りです。

> 35
> 90
> 21
> 89
> 70
> undefined
> NaN

上から順番に、配列内の点数が表示されています(1〜5行目)。一番下のNaNは元から出ていたものですね(7行目)。

ここで、6行目にundefinedが表示されているのにお気付きでしょうか。

for文の中で1〜6行目の値がtotalに足し合わされていきますが、undefinedは数字ではないため、これが足し合わされた後にtotalにはNaNが入ってしまったわけです。

対処方法

なぜ5個しか要素が入っていないはずの配列から6回も値が取り出されているのでしょうか。もう一度for文の繰り返し条件を見てみましょう。

for(i = 0; i <= scores.length; i++)

scoresの要素数は5個なので、scores.lengthには5が入ります。つまり、iは0からスタートし「0、1、2、3、4、5」の合計6回繰り返されるわけです。

そして、配列の要素はsocres[0]が1番目、scores[1]が2番目というふうに対応しています。 n番目の要素を取り出すにはscores[n-1]のように、1つ減らした数字を使って取り出す必要があるのです。

そのため、要素が5個の場合はscores[4]が最後の要素となり、scores[5]は未定義なので取り出そうとするとundefinedが返ります。

実際に取り出してみた例が下記です。最後の列で、数字とundefinedを足そうとしてNaNが返っているのが分かりますね。

var scores = [35, 90, 21, 89, 70];
console.log(scores[0]);						//35
console.log(scores[5]);						//undefined
console.log(scores[0] + scores[5]);	  //NaN

これに対処するには、繰り返しをi=4で止めるように修正しましょう。for文繰り返し条件を「i がscores.length以下」としていたのを「iがscores.length未満」に変更します(下記3行目)。

total = 0;
var scores = [35, 90, 21, 89, 70];
for(i = 0; i < scores.length; i++) {
  console.log(scores[i]);
  total += scores[i];
}
console.log(total);

実行してみると、無事総合点が表示されました。

> 305

まとめ

ハイタッチする仲間たち

JavaScriptのfor文でNaNが出てしまう原因と対処方法についてご紹介しました。

実はJavaScriptに限らず、他の言語の繰り返し処理でも同様のミスをしてしまいがちです。

起っている現象としては全く同じで、繰り返し条件の間違いにより無いはずの配列要素にアクセスしてしまうことが原因なので、つまずいたら1度チェックする癖をつけましょう。

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

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

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

今すぐ詳細を確認する

Filed Under: プログラミング入門 Tagged With: for文, JavaScript, NaN

初心者がスマホアプリを開発するには?iOSとAndroidの両方について必要なスキルを確認しよう

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

スマホアプリ

はじめに

スマホアプリ

スマホが世の中に浸透して早10年余り。毎日の生活で、必ず1つは何かしらのアプリを使っているのではないでしょうか?

すっかり馴染み深くなったスマホアプリですが、自分で開発できたら自信にもつながりそうですよね。

実は簡単なものならば初心者でも作れるのです。

この記事では、スマホアプリの2つの主流であるAndroidアプリとiOSアプリについて開発に必要なスキルを紹介します。

アプリにもいろいろ

スマホアプリというとまず思い浮かぶのはSNS、カメラアプリといったところでしょうか?実はスマホアプリは開発手法によって大きく3つに分類されます。

どんなアプリを作りたいかによって適切な手法が異なるので、まずはその分類を確認してみましょう。

ゲームならばUnityがおすすめ

スマートフォンゲームでの対戦

ゲームが好きで、よくスマホのゲームアプリをプレイする方もいらっしゃるのではないでしょうか。もし、最初からゲームアプリを作ってみたい!という気持ちが強ければ、Unityで作ってみることをおすすめします。

Unityはスマートフォンや据え置き型ゲームなど、様々なプラットフォームの垣根を超えて開発及び実行ができるゲーム開発環境兼ゲームエンジンです。

この後紹介するAndroidアプリやiOSアプリの開発スキルを用いてもゲームアプリを開発することは可能ですが、それぞれAndroidとiPhoneでしか動かせないアプリになってしまいます。

Unityで開発しておけば、同じゲームでも様々なハードウェアへ簡単に移植することができ大変便利です。

Unityについてはこちらの記事でも解説していますので参考にしてください。

Unityエンジニアになるには?未経験でもなれる?スキルの身につけ方を解説!|プログラミング入門ナビ

ハイブリッドアプリ

オンラインショッピング

例えばFacebookやAmazonなど、比較的大規模なWebサービスのスマホアプリはハイブリッドアプリと呼ばれ、スマートフォン自体が持つ機能(GPSやカメラ等)と、Web技術(HTML5・CSS・JavaScript等)を組み合わせて開発されています。

簡単にいうと、AndroidやiOSのWebViewという機能上でWebアプリを実行し、スマホに最適化して表示するわけです。

Webアプリと、スマホが持つ機能と、それらの橋渡しを行うCordovaというフレームワーク など、様々な機能を使いこなさなければならないため、こちらは上級者向けといえます。

初心者からのスタートならば、次項のネイティブアプリ開発にチャレンジするのがおすすめです。

ネイティブアプリ

時計とスマホ

ここでのネイティブとは、スマートフォン本来の機能、という意味で使われています。

例えばToDo管理アプリを思い浮かべてみましょう。タスクを入力するのにスマートフォンのキーボードやタップの入力機能を使用し、期限が近づいたタスクを知らせるにはスマートフォンのアラーム機能を使えば良さそうですね。

このようにスマホ本来の機能で完結することが多いため、ネイティブアプリならば比較的簡単に開発することができますが、AndroidとiOS向けで必要なスキルは全く異なります。

将来的にはどちらも開発できるようになるのがベストですが、まずはどちらでもいいからスマホアプリを開発したいということであれば、自分が持っている端末に合わせると実機で確認できるのでおすすめです。

Android向けスマホアプリ開発に必要なスキル

androidスマホ

ここからまずはAndroidアプリ開発に必要なスキルを見ていきましょう。

言語(1):Java

次に挙げるKotlinの登場まではAndroidアプリの開発言語としてJavaが主流でした。JavaはJVM(Java Virtual Machine:Java仮想マシン)上で動くのが特徴で、その環境用のJVMさえあればどんな環境でも動かせることから、Androidに限らず多くの用途で活用されています。

言語(2):Kotlin

Javaが抱える課題(コードの複雑化・互換性問題等)に対処できる言語としてAndroidのデベロッパーであるGoogle社から2017年にサポート開始され、2019年には正式に推奨言語にすると発表されたのがKotlin(コトリン)です。

シンプルで使いやすい言語であることからエンジニアからの評判も高く、案件数も増加傾向にあるのでぜひこの機会に学んでみることをおすすめします。

開発環境:Android Studio

Android StudioはGoogle社が提供する公式のAndroid専用開発ツールです。

Android開発に特化しているため、作業効率化に役立つ機能がたくさんあります。開発現場では使わない手はありませんのでこれを機会に使い方に慣れておくと良いでしょう。

iOS向けスマホアプリ開発に必要なスキル

macとスマホ

次にiOSアプリ開発に必要とされるスキルを見てみましょう。

言語:Swift

従来、iOSアプリの開発言語はObjective-Cが主流でしたが、2014年にSwiftが発表されてからはこちらが主流となりました。

従来のObjective-Cとも共存できるとされているので、古いコードとの互換性もあります。

開発環境:XCode

XCodeはApple社が提供する開発ツールで、iOSアプリを開発するために便利な機能を多く持っています。開発現場ではiOS開発のスタンダードツールとなっているので、将来iOSアプリ開発の案件に携わりたい方は早いうちから使い方を覚えておくと良いでしょう。

Macbookでしか使えない点には注意が必要です。

まとめ

オフィスで働く女性

スマホアプリを開発するために必要なスキルについて説明しました。

簡単なネイティブアプリならば初心者の方でも開発しやすいですし、自分のスマホで動かせるものが作れると自信にもつながるのでおすすめです。

なお、ProglusでもAndroidアプリ開発コース・iOSアプリ開発コースの開講を検討しています。ぜひお楽しみに!

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

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

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

今すぐ詳細を確認する

Filed Under: プログラミング入門 Tagged With: Android, iOS, アプリ, スマホ, 初心者, 開発

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

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(プログラス)でプログラミングを学び、創れる人になろう!

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

今すぐ詳細を確認する

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

  • « Go to Previous Page
  • Go to page 1
  • Interim pages omitted …
  • Go to page 12
  • Go to page 13
  • Go to page 14
  • Go to page 15
  • Go to page 16
  • Interim pages omitted …
  • Go to page 23
  • 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・プライバシーポリシー