ラベル JavaScript の投稿を表示しています。 すべての投稿を表示

Web CodeEdita進捗

現在開発しているWebCodeEditaの進捗と戦略をここに記して行きたい。



Blogでの報告は始めてになるけど、Google+見ている人はもう知っているかと思われる。
多分何人かはGoogleDrive等で詳細は把握していると思う。

プログラミングをする時の開発者の脳内

私自身大した開発者ではないですが、ある程度プログラミングする人として、
プログラミングをする時は脳内でどんな事を考えているのかを書いて行きたいと思います

Google Chromeのデベロッパーツールの使い方

皆さんはGoogle Chromeのデベロッパーツールを使った事はあるでしょうか??
今更記事にするのも遅い気がしますが、Web開発やプログラマーなら一度は使った事のあるツールだと思います。


今回まだ、Google Chromeのデベロッパーツールの使い方が分からなくて、
不便な生活をしている開発者のタマゴを対象にして書いて行きたいと思います。


Google Chromeデベロッパーツールとは?

最近のブラウザーには大体デベロッパーツールと言うのが付属されていますが、
私は基本的にGoogle Chromeのデベロッパーツールを利用しています。




私が個人的に気に入っている機能は、
  1. マウスで気になる要素を選択し、HTML/CSSソースを解析出来る
  2. JavaScriptのエラーまた、リンクエラーを発見出来る
  3. ページロード時に一番読み込みにかかったファイルを探せる
  4. 直接HTML/CSSの編集が出来る

この4つは一番気に入ってます。

上記画像では、タイトル部分を選択し、HTMLソースCSSソースを表示しています。


では試しにこれがとうなっているのか、
デベロッパーツールで調べてみましょうか。

Google Chromeを開き、デベロッパーツールを開きます。





虫眼鏡マークを押してから、ブラウザー上の要素をマウスで選択します。

するとその要素のHTML部分が表示されます。




HTMLの構造・CSSで定義されているスタイル等簡単に見る事が可能です。

また、セレクタも分かるので、
hoverや擬似セレクタでどの様なスタイルを定義しているのかも分かります。



この様にして上手くデベロッパーツールを使いこなせれば、
ブログのデザイン等を考えたりしながら実際に組むのも簡単です。

プログラムの最適化について

今回は初心者さん限定の記事となるのですが、今回お教えするのは、
「プログラムの最適化」です。具体的にどのような事なのか分からない方も居ると思いますけど、プログラムのソースを出来るだけ短縮し、分かりやすく書くと言う事を自分では最適化と思っています。(勝手に)



ではちょいと手元にあったソースを元にしてみます。

今回書いたソースは +竹内史 にお願いされて書いた簡単な関数です。

function url_TextData(data){
    
    var val = 0;
    
    var Textif0 = new RegExp("^https?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    var Textif1 = new RegExp("^http?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    if (data.match(Textif0)) { val++; }else if(data.match(Textif1)){ val++; }
    return val;
}


関数の内容は、URLであるかでないかを判断するプログラムです。
URLでは無いときは0を返して、URLである場合は1を返します。

至って簡単なプログラムですね。
このソースはもう既に最適化しています。

これを最適化してない状態だと以下の様になります。

function url_TextData(data){
    
    var val = 0;
    
    var Textif0 = new RegExp("^https?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    var Textif1 = new RegExp("^http?:\\/\\/[\\w_\\-\\.]+[^\\.]\\.([a-z]{2,2}\\.[a-z]{2,2}|[a-z]{2,3})\\/?$");
    
    var a = data.match(Textif0);
    var b = data.match(Textif1);
    if (a) { val++; }else if(b){ val++; }
    return val;
}


これだと、無駄に変数に値を入れている感じしますよね。
なんせC言語を使ってたら、そんなどうでもいい事まで気になってしまいます。

こういった変更をする事により、無駄に記述を無くし、かつ、奇麗にソースを書く事が出来ます。

皆さんも試してみてね。

ほほうボタン仕様変更のお知らせ(vsr1.01)

大変遅くなってしまい誠に申し訳ございません。m(_ _)m

ついに[ほほうボタンvar1.01]をリニューアル致します。
今現在もう既にバージョンが変わっていると思われますのでご確認下さい。


バージョン詳細(ver1.01)


下記の機能・修正を行いました。

  1. jQuery化
  2. ボタンスタイルの変更が可能になりました。

これだけです。^^;


今回はまず初めにボタンスタイルを変えれる様にしました。そりに従ってソース自体をjQuery化し、サイトのデザインに合わせてボタンの配色を変更出来ます。



ほほぅボタン設置方法


以下のソースを貼って下さい。


HTML

        
        
        


jQuery化しましたのでjQueryソースの記述が必要になりました。
要素IDは必ずhohou_botanにして下さい。
要素名も必ずbuttonにして下さい。

IDはソース側でhohou_botanと固定設定になっていますのでご了承下さい。
要素名もdiv要素等使ってしまうとエラー表示が出ますのでご了承下さい。


のため裏でこんな事やっている


今回のjQuery化に従い、ソースにjQueryソースを埋め込んでいますのでご了承下さい。
headで読み込む手間を削減させて頂きました。




Style

引数 初期値 説明
back_color #FFFFFF アクティブでない時の背景色
color #FF3E3E アクティブでない時の文字色
border_color #E8E8E8 ボタン枠線の色
active_back_color #FF3C3C アクティブな時の背景色
active_color #FFFFFF アクティブな時の文字色

jQueryで可変グリッドレイアウト





最近ではスマートフォン端末もよく利用される様になってから、
Web業界でもレスポンシブルデザインを取り入れるサイトが増えて来ました。

そして最近では可変グリッドレイアウトと言うカードを並べた様な形のデザインも増えています。



そこで、簡単にグリッドレイアウトを使える様にしたjQueryを紹介したいと思います。



必要物はライブラリーだけ!!



以下のサイトから2つのJavaScriptファイルをダウンロードして下さい。


  1. jQuery
  2. jQuery Masonry


ダウンロードが完了したらこれで準備は完了です。

後はソースを入力していくだけ、



JavaScriptファイル読み込み






jQueryコードを書く

$(function(){
  $('#main_container').masonry({
     itemSelector: '.box',
     isFitWidth: true,
     isAnimated: true
  });
});



[$('#main_container')]ではHTMLのグリッドレイアウトのボックス全体を囲む要素です。
[itemSelector: '.box',]レイアウトする対象要素

HTMLを書く


    
        

Box1

Box2

Box3

Box4

Box5

Box6

Box7

Box8

Box9



CSSお忘れなく!!


            body{ background-color: #808080; }
            #main_container{ margin: 0 auto; width: 900px; }
            .box{
                background-color: #fff;
                float: left;
                width: 200px;
                margin: 10px;
                padding: 10px;
                border-radius: 5px;
            }


3DCGコンテンツをjQueryで動かせる。

時代も進歩し、とうとうMMDがjQueryで動かす事が出来る様になりました。

このライブラリはMMDデータをWeb上で動かせると言う画期的な物です。




クオリティゲームWeb上で



まだ試してはいませんが、もしかしたらこのライブラリを使ってFPSゲームも作られるかも!?


今回は開発者の「松田」さんにメールでお問い合わせしてみました。
幾つか質問してみたのでこの回答を2つぐらい紹介します。


Q.「始めてこのライブラリを見た時はとても興奮しました。」


A.ありがとうございます。私も自分で作りながら興奮しておりました。



Q.このライブラリでは視点の制御やキーコントロールでモデル等の制御は出来ますか?

A.恐らくFPSゲーを作りたいのではないかと推測しますが、jThreeのポテンシャルとしては可能です。
現時点では機能にありませんがいずれ銃・標的・建物などのモデルデータをblenderから取り込むことができるようになります。



おまけにソースも書いてくれました。
ありがとうございますm(_ _)m


jQuery( window ).keydown( function( event ) {

 if ( event.keyCode === 38 ) {//十字キー上を押されたら

  if ( $( "mmd:first" ).positionZ() > -9 ) {
   //mmdタグ1番目(ミク)のZ軸位置が-9より手前ならば500ミリ秒かけて現在位置より1だけ奥に進める
   $( "mmd:first" ).animate( { positionZ: "-=1" }, 500 );
  }

 }

} );


松田さんはなんていい人なんだ!!

っと言う事で私はここで断言します。

[jThree]を私は応援致します。(`・ω・´)


現在資金不足と時間がなく、リファレンスサイトの開設の目途が立っていないので、
皆さんも共に応援しましょう\(^o^)/




ほほうボタンを皆でカスタマイズ!!

ちょっとGoogle+でリクエストがあったので、今回ほほうボタンの仕様とソースを簡単に説明しちゃいますね。







ほんとに何が言いたいのか分からない図ですが、

上記の図を見ながら処理の順序をご覧下さい。


ほほう1された時



  1. JavaScript内で使用されるほほう数を加算
  2. PHPにPOSTでページURLと"Increment"を送信
  3. ほほうボタンスタイル変更



ほほう取り消された時の処理



  1. JavaScript内で使用されるほほう数をデクリメント
  2. PHPにPOSTでページURLと"Decrement"を送信
  3. ほほうボタンスタイル変更

ま〜正直言ってしまうとこれ誰でも作れてしまいます。

まずページロード時に

http://izumikawa.tk/api/hohoubotan/phpint.php?data=PageURL


dataにページURLを書いて送信するだけでPHPがデータの存在を確認します。
データが存在しない場合は0を返します。

データが存在する場合はその数値を返します。


次にボタンが+1された事をPHPに教えるのですが、以下のURLにPOSTで送信します。

http://izumikawa.tk/api/hohoubotan/hohou_botan_share.php


POSTでページURLと特定の命令文字列を送信します。命令文字列によって+1と-1を使い分けます。


[Increment]+1命令文字列
[Decrement]-1命令文字列

これを送信する事によりPHP側でインクリメントかデクリメントかを判断し、
確実にデータを書き換えます。


データID独自文字列変える


PHPではURLをそのままファイル名として使える様にファイル名として使えない文字列は特定の文字列に変換する様にしています。これは何らかのエラーを回避する為の対策ですが、別にページのURLじゃなくてもいいと言う事です。

PageURLの部分はあくまでも区別しやすい様になので、独自のデータIDをここに書き込んで送信すると言う事が可能です。



ただ他のサイトで使われているIDと一緒にならない様に注意して下さい。
最低でも20文字以上がより安全かと思います。



JavaScript



var xmlHttp; 
var phpint; 
var eventlog = 'null'; 
var pageurl = location.href; 
xmlHttp = new XMLHttpRequest(); 
xmlHttp.onreadystatechange = loading; 
xmlHttp.open("GET", "http://izumikawa.tk/api/hohoubotan/phpint.php?data="+pageurl, false); 
xmlHttp.send(null); 
function loading() {
     window.addEventListener('load', function () { 
     console.log("loading: ", xmlHttp.readyState, xmlHttp.status); 
     phpint = xmlHttp.responseText; 
     if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { 
        var hohou_botanobject = document.getElementById("hohou_botan"); 
        hohou_botanobject.innerHTML = 'ほほう' + phpint; 
        hohou_botanobject.style.borderRadius = "5px"; 
        hohou_botanobject.style.MozBorderRadius = "5px"; 
        hohou_botanobject.style.WebkitBorderRadius = "5px"; 
        hohou_botanobject.style.padding = "5px"; 
        hohou_botanobject.style.color = "#FF3E3E"; 
        hohou_botanobject.style.textAlign = "center"; 
        hohou_botanobject.style.fontWeight = "bold"; 
        hohou_botanobject.style.backgroundColor = '#FFFFFF'; 
        hohou_botanobject.style.cursor = "pointer"; 
    } 
  }, false); 
} function hohou_share() { 
    if(eventlog == 'null') { 
        eventlog = 'value'; 
        phpint++; 
        var data = { main_data: 'Increment', data_url: pageurl }; 
        var http_post = new XMLHttpRequest(); 
        http_post.onreadystatechange = function () { 
            var READYSTATE_COMPLETED = 4; 
            var HTTP_STATUS_OK = 200; 
            if (this.readyState == READYSTATE_COMPLETED && this.status == HTTP_STATUS_OK) { 
                var hohou_object = document.getElementById('hohou_botan'); 
                hohou_object.innerHTML = 'ほほう' + phpint; 
                hohou_object.style.backgroundColor = '#FF3C3C'; 
                hohou_object.style.color = "#FFFFFF"; 
             } 
        }; 
        http_post.open('POST', 'http://izumikawa.tk/api/hohoubotan/hohou_botan_share.php'); 
        http_post.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
        http_post.send(form_data(data)); 
    }else if(eventlog == 'value') { 
        eventlog = 'null'; 
        phpint--; 
        var data = { main_data: 'Decrement', data_url: pageurl }; 
        var http_post = new XMLHttpRequest(); 
        http_post.onreadystatechange = function () { 
            var READYSTATE_COMPLETED = 4; 
            var HTTP_STATUS_OK = 200; 
            if (this.readyState == READYSTATE_COMPLETED && this.status == HTTP_STATUS_OK) { 
                var hohou_object = document.getElementById('hohou_botan'); 
                hohou_object.innerHTML = 'ほほう' + phpint; 
                hohou_object.style.backgroundColor = '#FFFFFF'; 
                hohou_object.style.color = "#FF3E3E"; 
             } 
        }; 
        http_post.open('POST', 'http://izumikawa.tk/api/hohoubotan/hohou_botan_share.php'); 
        http_post.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
        http_post.send(form_data(data)); 
    } 
} 
function form_data(data) { 
    var params = []; 
    for(var name in data) { 
        var value = data[name]; 
        var param = encodeURIComponent(name).replace(/%20/g, '+') + '=' + encodeURIComponent(value).replace(/%20/g, '+'); params.push(param); 
    } return params.join('&'); 
}


イラストサイト向けレスポンシブデザイン テンプレート

イラストサイト向けのレスポンシブデザインのテンプレートを配布開始!!


以前配布した「イラストサイト向けテンプレート」の改バージョンとなるレスポンシブデザインに対応したテンプレートを今回配布致します。 レスポンシブデザインの特徴は1つのソースで複数の端末に対応出来る柔軟性が特徴です。今回は主にタブレット端末スマートフォンに対応しました。

特にテンプレート自体の仕様は変わっていないので、以前のテンプレートと同じ様に使う事が可能です。


Google+ API入門

恐らくGoogle+APIを使った事ないけど使ってみたいと思う方は少なからず居るだろう。

ただGoogle+APIにはどんな機能があって、使い道はあるのか?? っと疑問に思う方も居ると思う。



私自身がこのGoogle+APIを使った感想を言うと、

「とても手軽に様々な情報を得る事が出来る」と言う事だ。



私は自分で言うのもおかしいですけど、「私はGoogle+が一番好きです。」






何故Google+APIを使い始めたのかと言うと、単に自分のサイト等で「最新情報」として自分のPOSTを取得して表示出来るのか? っと疑問に思ったので、実際に試してみると結構手軽に情報を得る事が出来たので、それから色々とGoogle+APIにハマり始めました。


一応私がやった事ある動作としては、


  1. 投稿を取得
  2. プロフィール情報を全て取得
  3. Google+POSTを検索
  4. Googleログイン
  5. Google+投稿

まだ使い始めて日が浅いので大した事はやった事ないのですが、一応5項目の方法を試した結果全て簡単に 使う事が出来たのでその簡単な使い方ガイドをしたいと思います。


ほほうボタン(汎用外部ページ用)が完成!!

やっと汎用外部ページ用のほほうボタンが完成しました。

今回はほほうボタンについて色々話して行きたいと思います。


ほほうボタンとは??


 ほほうボタンとは、以前私のプロフィールサイトのブログに埋め込んだ、評価ボタンで、Google+の+1ボタンの様に+1をしてそのページの評価を得る事が出来る素敵なボタンです。完全フリーのボタンなので、何処かのサイトへ登録する必要も無いです。


 「そのボタンの利点とは?」っと言う質問が寄せられると思いますが、ページの評価を得て"自己満足"する為のボタンであって特に意味を持ちませんが、これからボタンに色々な機能を追加してボタンブームにして行こうと思います。


Web開発者向けツールを比較してみた。

Web開発を行う時に特に便利な物でブラウザに標準搭載しているのが開発者向けツールです。
ブラウザごとに開発者向けツールの機能は異なります。

そこで今回はこの開発者向けツールを比較してみたいと思います。



比較対象となるブラウザは、


  1. Internet Explorer9
  2. Google Chrome
  3. Mozilla Firefox

どちらも有名なブラウザですね。この3種類のツールを比較致します。


Internet Explorer

これはWindowsをお持ちの方には馴染みのあるブラウザではないでしょうか?
Microsoftが提供している最悪のブラウザーです。

日々開発者を悩ませ続けているとても有名な物です。


多分[ Internet Explorer9 ]ぐらいから開発者向けツールが搭載されていると思います。
7あたりから私は使っていませんので詳しくは分かりませんが(・・;)





F12キーを押せば出てきます。

日本語表記でとても分かりやすい形になっています。

機能としては、
DOM Explorer コンソール デバッガー ネットワーク UIの応答 プロファイラー メモリ 
エミュレーションこの項目があります。これでも十分使えるとは思いますが、
私のPCのスペックではなかなか重くて動作しません。orz


ただ初心者向けとしては機能は十分です。


Google Chrome

私は基本このGoogle Chromeの開発者向けツールを利用しています。



機能は私が知らない様な機能もまだあるらしく、基本私が日常的に使うとしたら、
要素の幅を測ったり、余白など調べたりしていますね。

JavaScriptでの動作確認も手軽に出来るので私の中では一番いいツールだと思います。


Mozilla Firefox

私は基本このブラウザ自体は表示確認用として使っています。



このブラウザも機能が凄いです。
初めて使った時はビックリしましたね!!

レスポンシブデザインモードと言うのがあり、自由にブラウザの幅を変えて表示確認が出来ます。









各ブラウザの開発者向けツールの機能を知っていればこれから先使う事があるかもしれません。
なので知っていて損はないと私は思います。




JavaScriptで絵画してみた。

今回一度はやってみたかったプログラミング言語だけで絵を描くと言う事をやってみたのですが、結構大変でしたので、断念しました。ですがこの経験でJavaScriptの描画方法が分かったのでご紹介したいと思います。是非お時間がある方は試してみて下さい。

予想以上に簡単ですので試してみて下さい。



ではまずソースをご覧ください。

<!DOCTYPE html>
<html lang="ja">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <script>
            window.addEventListener("load", function ()
            {
                var myContext = document.getElementsByTagName("canvas")[0];
                var context = myContext.getContext("2d");
                if (!context) { return; }
 
                context.beginPath();
 
                context.moveTo(50, 50);
                context.lineTo(80, 20);
                context.lineTo(80, 50);
 
                context.strokeStyle = "red";
                context.lineWidth = "2";
                context.stroke();
            }, false);
        </script>
        <canvas id="context" height="1000" width="800">
            Canvas対応ブラウザを使用してください。
        </canvas>
    </body>
</html>



まだ説明していないので何が何だか分かりませんよね?
ですがこれは一番シンプルな描画ですので直ぐに覚えられます。


var myContext = document.getElementsByTagName("canvas")[0];」では描画する場所を取得しています。HTMLの部分で、「<canvas id="context" height="1000" width="800">」と言う部分がありますよね? このタグの中に描画すると考えて下さい。描画する場所の幅や高さはcanvasタグの「height="1000" width="800"」で設定します。

では、どの様にして直線を描くのか?
と言う疑問が浮かび上がると思いますが簡単です。

座標を指定すればその座標から描画してくれます。

でも座標って難しそうな感じしますよね? でも以外に簡単ですよ! 私はWindows付属のペイントを使って座標を調べています。今回やろうとしたJavaScriptでのお絵かきではペイントを使って座標を調べました。 初めては感覚で座標を指定していました。ですがそれだと何回か調整が必要で時間が掛かるのでペイントツールの力を借りる事にしました。




画像上の赤い線が私がJavaScriptだけで描いた部分です。
ブラウザーの下にある部分がペイントで座標を調べています。
画像のソースを見ても分かると思いますが、いたってシンプルな描画方法です。

描画の部分のソースは、

                context.moveTo(50, 50);
                context.lineTo(80, 20);
                context.lineTo(80, 50);
 
                context.strokeStyle = "red";
                context.lineWidth = "2";
                context.stroke();


絵画の始まりとなる部分は「context.moveTo(50, 50);」です。 あとは、全て「context.lineTo(80, 20);」で大丈夫です。 何が違うの?? と感じる方も居ると思いますが、メソッドが違います。「moveTo・lineTo」が違います。 何故始まりのメソッドとかが違うのかと言うと、これは「moveTo」だけ書いても絵画されません。始まりからどこへ向けて伸びるのかを指定する必要があります。

私達人間は気づかないうちに何かを描く時は「ここからここまで描く」と言う処理を頭で行っているのです。プログラムは純粋な物なので「ここから〜ここまで伸ばす」と言うのを教えてあげないとダメなのです。


「moveTo・lineTo」の引数である座標の定義方法は、


                context.moveTo(x, y);
                context.lineTo(x, y);

となります。
XとYが分からない方に説明します。

Xはブラウザーの上(top)の事です。
Yはブラウザーの左(left)の事です。

xは上からの距離(px単位)
yは左からの距離(px単位)



                context.moveTo(3, 3);
                context.lineTo(8, 14);
                context.lineTo(13, 3);

にすると「V」が表示されます。



                context.moveTo(3, 3);
                context.lineTo(6, 14);
                context.lineTo(10, 4);
                context.lineTo(13, 14);
                context.lineTo(16, 3);

にすると「W」が表示されます。



これで線の描き方は分かったと思います。
では描画のオプションみたいな物の説明します。


                context.strokeStyle = "red";
                context.lineWidth = "2";
                context.stroke();


線の色を変更するには「strokeStyle = "red";」で変更出来ます。「red」は赤色です。
線の太さを変更するには「context.lineWidth = "2";」で太さを設定出来ます。
context.stroke();」は描画するよ!! って事だと思ってください。




これで貴方も自由に描画出来ます。
描画はゲーム作りにも役立ちますので覚えて損は無いと思います。

配列の重要性

初めてプログラミングの入門書を読んだ方は配列の使い道をあまり分かってない方も多いのではないでしょうか?基本入門書では変数の説明の後に配列の説明が入ります。こうなると初心者さんは「必要なデータ入れるなら普通に変数使えばよくね?」と思ってしまう事が多々あります。

ですが色んな意味で配列は便利な物なのです。
その配列の重要性を今回説明させて頂きたいと思います。


現在CMS制作をしているのですが、現在作成しているCMSはSQLを一切使わず「csv/txt」だけでデータを管理する様な物を作成しています。私も今までほとんど配列に頼った事はなくて今回の制作でSQLを使わない事で配列の重要性を改めて知る事になりました。


まず私が今回の制作で配列を使ったのは、「ブログ記事一覧表示」の部分で使いました。
今回の仕様では1ページにつき5件表示すると言う物
ブログ記事には更新ログと言うのがありログを元に一覧表示する

ログはcsvファイル


csvファイルを読み取るのに配列形式になるのです。
何故ここで配列を使うのかと言うと最初の作戦ではtxtファイルに記事データのリンクだけを並べてfile()関数で配列に回していました。ですがこれだとタイトルの適切な取得や投稿日の取得検索なども出来ないからです。

ならcsvに記事データのリンクとタイトルと検索キーワードをまとめれば後々の作業も楽になるからです。

あと、記事一覧表示のページでは「次へ」ボタンがあり過去の記事も巡る事が可能です。
この時forで5回ループさせれば更に配列の扱いが楽になるからです。





プログラミング言語の学び方

皆さん久しぶりです。
毎度このブログを見てくださってありがとうございます。

今年はブログの更新が全然出来なくてすみません。
ほぼネタ切れなもんで(´Д`;)






今回ブログラミング言語の学習方法について記事にして行きたいと思います。
「どんなプログラミング言語を始めればいいのか?」「効率のいい学習方法が無いのか?」
など思う方の参考になればと思います。





「プログラミングとはどんな世界なのか?」「プログラミングは難しいのか?」「最初はどんな言語から勉強すればいいのか?」「効率の良い学習方法は無いのか?」

プログラミングをする中で様々な疑問があると思います。
難しいと思いなかなかプログラミングに手が出せなかったり、


 でもプログラミングは実際基礎や文法を覚えれば難しいなんて思いません。
世の中に居るプログラマーは嫌でプログラミングをしている人は居ません。
何故ならば「興味があって入った世界」だからです。

 興味がなければプログラミングする出来ないでしょう。
それどプログラミングは中毒性があるのです。

プログラミングとは何なのか?

一般的にプログラミングをした事が無い方は、
「意味の分からないコードが並んでる」「怖い人のイメージがある」「自分には無縁」など、
思われるかもしれません。

1.意味の分からないコードが並んでいる

 プログラミング言語とは簡単に言うとパソコンとのコミュニケーションをする物と思えばいいです。パソコンの世界では「0,1」の世界なので私達人間では理解する事が難しい世界になるんです。ですが人間とパソコンが唯一コミュニケーションが取れるのがプログラミング言語なのです。


2.怖い人のイメージがある

 プログラミングをしている時点で怖いと思われるかもしれませんが、ただパソコンとお話をしているだけですよ♪♪


3.自分には無縁

 確かに無縁だと思いますが様々な所で皆さんの暮らしを支えています。なので少しはプログラミング言語が生まれた文化とプログラマーに感謝しましょう。今の時代身の回りにプログラミングして作られた物が沢山あります。家電製品の制御などでは「Java」と言う言語が使われています。


パソコンの歴史を辿ればプログラミングに深く興味を持つ!


 パソコンと言う物はOSと言うプログラムで動いています。OSが無いパソコンはただの鉄クズなのです。OSで代表的な物と言うとやはり「Windows」ですね他にもMacなどもあり、今の時代自作OSを作る人々も増えてきました。

そこで疑問が!

パソコンが無い時代にパソコンのOSを作るにはどうするんだ?

 自分もつい最近知った事ですが、初めてのデータは紙テープだそうです。パソコンの大事な頭脳CPUは0,1を処理します。この0,1のファイルはバイナリファイルといい、このバイナリーファイルをCPUで処理してプログラムの結果を出すのです。

 CPUは0を電気無し1を電気ありで動作します。なので、電気を流したり流さなかったりの動作をすればCPUは処理するんです。(単純に言うと)

そのバイナリーデータを昔は紙テープに穴をあけCPUに処理をさせていたんですね(´∀`*)


 詳しくは分かりませんが確かに紙テープでCPUを動かす事は出来そうです。先程0,1の世界は人間が読むのは難しい世界と言いましたが、昔の開発者は0,1を理解していたんです。




プログラミングをちょっとしてみたい!!

皆さんもここまで読みすすめて来るとそろそろプログラミングをやってみたいはず、
でもどんな言語を最初に始めたらいいのか分からない方も多いのでは?
多くのプログラミング言語の開発環境を整えるには時間や手間がかかってなかなか始めるのも難しいはずです。出来れば手間がかからなくて直ぐにプログラミングを始めたいと言う方は、

JavaScript

をやってみるといいです。
この言語はブラウザー上で動作するプログラミング言語で、手軽に始める事が出来ます。
ですが、HTMLの知識が多少必要です。

web上のプログラミング言語の、


  • PHP
  • JavaScript
  • Java
これを難しい順位で並べると、
  1. Java
  2. JavaScript
  3. PHP
になります。

何故2位の言語を勧めるのか?
それは、開発環境を整える必要がなく手軽に本格的なプログラミングが出来るからです。
phpは関数定義型言語なので文法など覚えれば1週間以内にCMSを作れる様になります。
ですが、JavaScriptはオブジェクト指向プログラミングがリアルに出来る為お勧めします。





学習方法

今回はphpの学習方法を例にして説明して行きます。
まず最初に今覚えようとしている言語で何が出来るか調べてどんな物が作れるのか知る必要があります。何が作れるか分からず勉強してしまうと、実際何を作っていいのか分からず入門書のプログラムしか作れなくなってしまいます。

次に、入門書のプログラムをそのまま書かない。ちょっとルートの外れたコードを書けばプログラミングの視野が広がります。入門書はホントに基本的な事しか書かないので視野が狭いです。時には、

    <?php
        if($i=0; $i <= 10; $i++) {
            print $i;
        }
    ?>


と書かれているのを、

    <?php
        if($i=0; $i <= 10; $i++) {
            print '現在[' . $i . ']回繰り返しました。\r\n';
        }
    ?>

みたいにアレンジする事も時には重要です。
実際プログラミングとは決められたレイアウトで作成するのではなく、自分でやりたい事を自分自信で決めて書いて行く物です。なので入門書の物をそっくりそのまま書いても意味が無い事を理解して下さい。

そんな事コピペでどうにかプログラムを作っている奴と同じなんです。



あとは学習のポイントなどは無いのですが、入門書を読み終わったら実際に作ってみたいプログラムを作りましょう。入門書に出てこなかった課題などは調べたら出てきます。時には人のプログラムを参考にして自分なりのプログラムを作っていきましょう。

※そのままコピペするのではなく実際に自分で手で打ちましょう。

- Copyright © I aim to creator. - Hatsune Miku - Powered by Blogger - Designed by Johanes Djogan -