IT戦記 このページをアンテナに追加 RSSフィード Twitter

2008-07-15

プログラミング未経験者が JavaScript でプログラミングをするために必要なこと

(執筆中)

(文章の練習も兼ねてぐだぐだと執筆中、現時点で読んでも日本語になってないと思います。)

(執筆途中だけど、こうしたらいい!とか、アドバイスがあれば教えてください><読者みんなが編集者!とか言ってみる)

(あ、はてな記法のパッチを送ってくれてもいいです^^)

(ちょっと、 Shibuya.JS in Kyoto → PHP カンファレンスがあるので、次の更新はそれ以降になるかも)


自分の知り合いに「まったくのプログラミング未経験だけど、自分のウェブサイトを作ってみたい!」という人がいるので、プログラミングを始める前に必要な知識や心構えや準備などを書いておこうと思います。もちろん、最初に使う言語は JavaScript です。

この文章は、プログラミングまったくの未経験者が読んで分かる文章を目指しています。もし、分からない部分がある場合は指摘してください。聞いてください。自分で調べる必要はありません。

はじめに

この文章は、今からプログラミングを初めてみたいと思っているあなたのために書かれています。もし、あなたがプログラミングを初めてみたいと思っていたら、この文章を読んでプログラミングを始めてみませんか?この文章は、きっとあなたの人生を少しだけ変えるきっかけになると思います。

まず、少しイメージを膨らませるために、「プログラミングが出来るとどんなことが可能になるのか」を書いてみたいと思います。

プログラミングが出来るようになると、パソコンを今以上に使いこなすことが出来るようになります。かわいいホームページや便利なサイトを作ることが出来るようになります。「パソコンでこんなこと出来たら便利だな」と思うことを自分一人で実現出来るようになります。

すごいと思いませんか?わくわくしてきませんか?

プログラミングをして何かを作るということはとっても楽しいことなのです。

ただ、プログラミングの習得は「超簡単」なことではないかもしれません。しかし、覚えるべきことを覚えていけば確実に習得することができます。諦めずに頑張ってみてください。この文章がその手助けになれば嬉しいです。

プログラミングとは何か

プログラミングってどんなことだと思いますか?一番想像しやすい例をあげると、「ゲームを作る作業」はプログラミングですよね。そんなイメージありませんか?僕も、最初に「プログラミングってどんなこと?」で想像したのは「ゲームとかエクセルみたいなのを作ること!」でした。

そして、だいたいそのイメージは正しかったと思います。

今では、僕はプログラミングというものをこういう風に思っています。

「状態と機能をたくさん持ったモノ」(例えば、パソコン)に、「こうだったら(状態)、こうする(機能)」という「ルール」を書いていって「便利なモノ」(例えば、ゲーム)を作る作業がプログラミングである。

例えば、パソコンは

  • 状態として、マウスの動きや、キーボードが押された押されない、パソコン内部の時計の指している時間、といった状態
  • 機能としては、画面に何か書く、音を鳴らす、といった機能

を持っています

これらを、綿密に組み合わせて「ルール」を書いていけば、ゲームでも何でも作れるような気がしませんか?それが、プログラミングなのです。そして、その「ルール」を書くための言葉が「プログラミング言語」なのです。

ちょっと脱線:「実は、脱初心者が一番難しい」

実は、プログラミング自体はそんなに難しいことではありません。ただ、最初の一歩、脱初心者がとても難しいのです。

僕もそのときの苦労をはっきりと覚えています。はじめは、本当に何から始めていいのか分かりませんでした。いろいろ入門書などを買ってもみましたが、全然上達しませんでした。

でも、分かり始めるとあっという間にプログラミングは上達します。ここで、諦めないことが肝心なのです。


何故、脱初心者が難しいのか

僕がプログラミング初心者だったあの頃、いったい何が難しかったのでしょうか。

まず、入門書に書いてある用語が分かりません。

さらに、用語をインターネットで検索してみても、そこに書いてある用語も分かりません><

とりあえず、わからないまま入門書に書いてあるサンプル(プログラミングの実例)を書き写して進めていくんですが、微妙な違いで自分のパソコンでは動かず、先に進めなくなってしまうのです。一応、原因を調べるのですが書いてあることの意味が分からず、挫折してしまうのです。

プログラミングを始めたばかりのときは、この堂々巡りがけっこう続いた気がします。


その解決策

それを最終的にどうやって解決していったかというと、「答えを探しすぎる」のをやめました。

ある程度分からないことは、「これは何なのか」「この用語の意味は何なのか」という自分自身の問いに対して、仮説を立てて、自分だけの答えを出すのです。

自分の仮説に矛盾を感じるときには、もう一度仮説を立て直せばいいのです。

こういう点から考えて、プログラミング未経験者が最初に読むべき文章は、「一つのキーワードに対して、違う言い回しで矛盾のない解説が何度も何度も書かれている文章」だと思います。

あと、サンプルが動くことはとても重要です。サンプルが特定の環境で動かない場合は、出来る限りの解説が必要です。

この文章は、そういう文章になるように努力して書き進めていく予定です。


用語解説サイト

一応、コンピュータ用語解説、プログラミング用語解説サイトを載せておきます。自分の仮説と比較してみるのもいいと思います。

プログラミング言語の選択肢

プログラミング言語には、様々な種類があります。ちょうど、「人が普段使う言語(自然言語)」に「日本語」や「英語」があるような感じですね。

「どういう記法で書いたら効率がいいのか。」その試行錯誤により、プログラミング言語も日々進化しています。その中で、新しい言語がどんどん生まれているのです。そして、プログラミング言語には「こういうものを作るにはこの言語がいいよ」と言った向き不向きもあります。

この文章では JavaScript というプログラミング言語を使ってプログラミング言語を解説します。

ちょっと脱線:「複数のプログラミング言語が出来たほうがいい」

プログラミング言語は宗教」と言われるくらい、一つのプログラミング言語に拘りを持つ人が多いです。それが原因でケンカをしている人も良く見かけます。それはそれで楽しいですが。ただ、食わず嫌いは良くないです。

なので、一つのプログラミング言語が出来るようになったら、もう一つくらい別のプログラミング言語を勉強してみてください。プログラミング言語には、そのプログラミング言語を作った人の価値観が凝縮されています。複数の人の価値観に触れてみて始めて自分の価値観が生まれるのだと思います。一つのプログラミング言語しか経験がないと割と一つの価値観(偏見)に染まりがちです。

僕自身も、 C → JavaJavaScriptPerl と使ってきましたが、その過程で少しずつ自分の価値観というものが築かれていったと思います。そして、複数のプログラミング言語をやっているからこそ、より確信を持って自分が好きな JavaScript の素晴らしさを語ることができるのです。

JavaScript とはどんなプログラミング言語なのか

JavaScript とは、誤解を恐れずに言ってしまうと「ウェブページホームページウェブサイト)に動きを付け加える」ためによく使われる言語です。

ただし、それは JavaScript の一部の使われ方に過ぎません。もちろん、普通のパソコンのソフトウェアも作ることもできます。また、 JavaScript は文法に癖が無く、覚えることが非常に少なく、 JavaScript をやっていれば他のプログラミング言語にもすぐに対応出来るようになるという特徴があります。なので、初心者には非常におすすめのプログラミング言語です。

プログラミングを始めてみましょう!

ここまで自分なりに理解できましたか?それでは、さっそくプログラミングを始めてみましょう!

JavaScriptプログラミングを始めるには、「ウェブブラウザ」と「テキストエディタ」というソフトウェアを使います。実は、これらのソフトウェアWindowsMac などの一般的な OS には最初から両方とも入っています。

テキストエディタを起動する

Windows には、「メモ帳」というテキストエディタが入っています。

起動方法するには、「スタートメニュー」→「すべてのプログラム」→「アクセサリ」→「メモ帳」を選択します。

TODO:画像:スタートメニューからメモ帳

はい、起動しましたね

TODO:画像:メモ帳のウィンドウ


Mac の場合は、「テキストエディット」というテキストエディタが入っています。

起動するには、 Finder の「移動」メニューから「アプリケーション」を選択し、

TODO:画像:Finder のメニュー

出てきたウィンドウの中から「テキストエディット」のアイコンをクリックします。

TODO:画像:Finder のウィンドウ

はい、起動しましたね

TODO:画像:テキストエディットのウィンドウ

JavaScript を書いてみる

テキストエディタ」を起動したら、Mac の場合は、まず「フォーマット」メニューから「標準的テキストにする」を選択します。(Windows の場合は何もしなくていいです)

そして、真っ白なところにキーボードで以下のように記述してください。(半角/全角に注意してください)

<script>
var name = prompt("What is your name");
alert("Hi" + name);
</script>

この &tl;script> 〜 </script> に囲まれた部分が JavaScript です!

TODO:画像:実際に JavaScript が記述されたウィンドウ

テキストファイルの説明

ファイルを保存する

JavaScript がが書かれたファイルをデスクトップに「000.html 」という名前で保存します。

Windows の場合、「ファイル」メニューの「名前を付けて保存」を選択します。

TODO:画像

ファイル名に、「000.html」と入力して、ファイルの場所から「デスクトップ」を選択します。

TODO:画像

デスクトップに 000 というファイルが出来ていますね!

TODO:画像


Mac の場合、「ファイル」メニューの「保存」を選択します。

TODO:画像

名前に、「000.html」と入力して、ファイルの場所から「デスクトップ」を選択します。

TODO:画像

デスクトップに 000 というファイルが出来ていますね!

TODO:画像

ファイル名と拡張子の説明

ウェブブラウザを起動する

ウェブブラウザとは、「インターネットを見るためのもの」です。この文章を表示しているソフトウェアのことですね。

Windows では Internet ExplorerMac では Safari というウェブブラウザが最初から使えます。

TODO:画像:ウェブブラウザ IESafari

ロケーションバー(TODO:画像にロケーションバーの位置を明記)に URLウェブページのアドレス)を入力し、 Enter キーを押すとウェブサイトを見ることが出来ます。

TODO:画像:ロケーションバーのアップ

JavaScript が書かれたファイルをウェブブラウザで開く

ウェブブラウザのウィンドウにファイルをドラッグ&ドロップすると、自分のパソコンのファイルを開くことができます。

ということで、さっき作った 000 というファイルをドラック&ドロップしてみましょう。

TODO:画像:ドラッグ&ドロップ

おおおお。動きましたね!

TODO:画像:ドラッグ&ドロップ

もう一度編集(上書き)したいときの方法

ここまでのまとめ

  • 準備オッケー的で、レッツゴー的な何か

yuji1982yuji1982 2008/07/15 19:25 「動的?、??」ってなるかなと思った。でも僕が日本語ダメなだけかも。

「動的な機能」ってこういうのだよーって紹介あるといいなーとか思ったり。
内容は「JavaScript で出来ること」と同じになるのかもしれないけど・・・

amachangamachang 2008/07/15 19:46 なるほど、ゆーじありがとう!
動的「禁止 or 説明付き」の方向でいきます。

co-scheco-sche 2008/07/15 21:00 ・その解決策
想定されている読者層を考えると、初登場の場合のみ
サンプルコード(プログラムの例)
など直感的に分かる言葉で括弧書きした方が、とっつき易いかもしれませんね。

・プログラミングとは何か
blockquote内の文で折角OOPへの伏線を張っているので、パソコンの場合の例に続けて、それら(状態や機能)を組み合わせた例を挙げないと、モッタイナイです。
パソコン内部の時計が朝なら、目覚ましの音を鳴らす、等…
すみません、イベント駆動でない例がパッと思いつかないです。

未経験者にとって良いきっかけになる記事に育っていくよう、応援しています。

tshimurantshimuran 2008/07/15 21:47 > その「シナリオ」を書くための言葉が「プログラミング言語」なのです。
ということは、どうやったらプログラミングが書けるかでなく、シナリオが書けるのかというのがテーマになるような。

私の経験から,いくら変数やら論理構造やら覚えても,実はそれらはどの言語でも似たり寄ったりに思えるのですが,肝心のソースを前にすると手も脚も出ないっていう感じがして、その度にプログラミングの道ってはるかに遠いと思いました。

だから、プログラングの書き方もいいけど、シナリオを書く時の眼の付けどころが知りたいなって思います。まあ、私は永遠に素人なのかもしれませんが。

YasuyukiMiuraYasuyukiMiura 2008/07/15 23:10 s/初めていいのか/始めていいのか/

> また、テキスト以外の情報を一切持っていないファイルです。
これだけだと未経験者はイメージがつかみづらいように思います。
例えば、「実際にWORDで作成したファイルをエディタで開いてみる」など
をするといいのではないでしょうか。

niso1985niso1985 2008/07/16 00:50 これは期待!

>プログラミング言語はどこに書くか
前段落最後でシナリオを書くための言葉=プログラミング言語となった後にこれは、少し面食らうかもしれないと思いました。
前段落の最後を軽く読んでしまった人はそうなるんじゃないかと。
事実自分も流し読みしていたらいきなり飛んでしまった感を覚えました。

「プログラミング言語(シナリオを書くための言葉)はどこに書くか」
これじゃ冗長ですかね。

>「シナリオ」を書くための言葉が「プログラミング言語」だと言われても、どこに書けば良いんだ!という風に思うかもしれません。
あと、この部分も文章のアプローチとして「じゃあどうすればいんだ!」的な方向ではなく、論理的に詰めて行く方が個人的には分かりやすいのかなと思いました。
例えば、
「シナリオ」を書くための言葉があるなら、どこかに書く場所があるはずです。
みたいな。そしてそれはノート=ファイルだよー。といった感じがわかりやすいのではないかなと思いました。

parasanparasan 2008/07/16 00:50 僕が人から教えてもらってプログラミングの説明でよくわかったのは銀行のATMや、携帯電話での操作例です。

「このボタンを押したときはこうなる、そのあとこのボタンを押したらこうなる。
入力を間違えたら戻る、同時に押すなどのイタズラをすると無視する or 警告文を出すなど」

これでプログラミングを始める前にif文的なことが必要なことは想像することができました。

pyopyopyopyopyopyo 2008/07/16 02:09 プログラムとは何か?コンピュータとは何か?ということを考える or 説明する際には
「チューリングマシン」の考え方がおすすめです。

vh5150vh5150 2008/07/16 10:38 >状態として、マウスの状態や、キーボードの状態、パソコン内部の時計の状態
「状態って?」となると思いました。
初心者に「マウスの状態」と言ってもピンとこないんじゃないでしょうか。
# 過去に「机の上にあるよ」と言われた事があるので。

rawkranzrawkranz 2008/07/16 11:27 素人ですが意見させて頂きます。

「テキストエディタをインストールする」から「JavaScript とはどんな場面で使われる「プログラミング言語」なのか」の項目へ入ったとき、少し話が飛んだ印象を受けました。

「シナリオ」を書くための言葉としての「プログラミング言語」と「JavaScript」の一組だけが繋がっているイメージです。

JavaScriptの説明に入る前に、

必要とする 状態 や 機能 を組み合わせによって「シナリオ」に様々な 種類 と 特徴 が生まれ、それに応じて数ある「プログラミング言語」から適切な物・自分の好きなものを選び言葉にする。

と言う触れ込みが有ると、後のHTML/CSSを説明する際にも「プログラミング言語」の横の広がりを思い浮かべることが出来るのではないかと考えます。

自分も日本語に成っていないと思われますがイメージが伝われば幸いです。初心者の一人として、良い記事になるよう応援しています。

hitoridetabeteruhitoridetabeteru 2008/07/16 11:33 プログラミングのことはまったく分からない者です。

>テキストエディタをインストールする

とありますが、どこからどうやってインストールするのでしょう?また、インストールする際に、お金がかかったりしますか?またメモ帳はテキストエディタとは違うのですか(メモ帳は文章しか書けないっぽいし)?

celitancelitan 2008/07/16 12:49 >HTML, CSS との根本的な違いは、時間軸を持つこと、マウスやキーボードの状態に関われること。(todo:この辺をうまく説明できないなあ)

イベントについて触れてみてはどうでしょう。
たとえば、
マウスのボタンが押されたら○○する。
マウスカーソルが○○にきたら○○する。

マウスの状態とかというより、マウスの動き(アクション)の説明になってしまいそうですが。

tshimurantshimuran 2008/07/16 14:07 この日記は、グループ日記にしたらいいような気もするけど。

それは、書き手のモチベーション次第ですが。
余計なひと言だったら、失礼しました。

tshimurantshimuran 2008/07/16 14:10 >HTML, CSS との根本的な違いは、時間軸を持つこと

イベント駆動のプログラミングって、こんな私でもわかりやすいシナリオです。

shimanpshimanp 2008/07/16 15:14 はじめまして、とてもいい企画ですね。
少しわからないところがありましたので、コメントさせていただきます。

★画像:〜★ となっているところの意味がよくわかりませんでした。。。

silverwiresilverwire 2008/07/16 16:25 この文章を読んでいると、id:amachang さんの何かをものしたいという熱い気
持ちがとてもよく伝わってきます。

でも、これからプログラミングの世界に入ってきてくれるかもしれない人たち
に向けて、興味を持ってもらえるよう書かれているかというと、ちょっとわか
らなくなってしまうんですよね。

誰のために書くのかという点で本末転倒にならないといいなぁ。

# 生意気言ってすみません。

qnighyqnighy 2008/07/16 19:45 1文字書かれたテキストファイルと2文字書かれたテキストファイルをのファイルプロパティを表示したところ
http://www.acikelabo.org/filesize_1bytes.png
http://www.acikelabo.org/filesize_2bytes.png

WORD などのワープロソフトなどを保存したときに出来るファイルとの違い
http://www.acikelabo.org/textfile.png

mayuminchomayumincho 2008/07/16 21:59 このページを見て頑張ろうと思うので、途中でフェードアウトしないでくださいね。
頑張ってくださーい。
楽しみにしてます。

zenpouzenpou 2008/07/16 23:19 「テキストエディタは何をするためのものか」の項目を、メモ帳を使う事を中心に変えてはどうでしょうか?

テキストエディタとは、windowsのアクセサリにあるメモ帳の様に文章つまりテキストだけを編集するプログラムの事です。
そして、メモ帳を使って保存したファイルがテキストファイルとよばれます。
ただ、メモ帳の機能は非常に簡単なので、プログラムを書くとき、殆どの人はプログラムを書きやすい機能が付いたテキストエディタを使います。
*で、エディタをいくつか紹介する
*補足:文章を編集するのであればwordもなの?って事について、wordファイルやexcelファイルは文章以外にも装飾や文字サイズやレイアウトも保存してるんだよ。って事を書く。

lesamoureuseslesamoureuses 2008/07/17 09:42 s/&tl;/&lt;/かな

はてなユーザーのみコメントできます。はてなへログインもしくは新規登録をおこなってください。

トラックバック - http://d.hatena.ne.jp/amachang/20080715/1216114132