業界No.1の実績!【20~32歳限定】23日間、「非常識な方法」で学ぶ、就職/転職のための「無料PHPスクール」

受講生向け

会社概要

IT用語辞典

ドリームシアター無料PHPスクール@池袋
  1. トップページ >
  2. 受講生の皆さんへ

受講生の皆さんへ

ご挨拶

受講生のみなさん!ご入学、おめでとうございます!
23日間という短期間ではありますが、人生の中で「集中した!」
と思える、濃密な時間をぜひ過ごして頂き、スキル習得ならびに、
転職を成功させて下さいね。

ドリーム・シアター代表取締役 中田斉道

授業方針

「これからプログラミング技術を習得して行こう!」と考えている、
意欲ある皆さんに、いきなり、変な質問ですが、
「なぜ、世の中には、プログラミング嫌いが多い」のでしょうか?

食わず嫌いの方もいるもかもしれませんが、それは、世のITスクールが
「関数や用語の説明がやたら多い、授業をしている」からだと我々は考えて
います。

「どうやったら、この機能を有するシステム開発ができるのか?」
あまり解説されていないと感じています。

言葉や用語の意味が分からなくても、実際に使って見る(「慣れる」)ことで、
楽しいと感じ、プログラミングに対して興味が湧いてくると思います。

その機能を開発(実装)するために、最大限に解説すべきで、関数や用語の
説明に時間を費やすべきではないと、我々は考えています。

(もちろん、最低限の関数や用語の説明は行いますので、ご安心くださいね。)

「構文や処理の仕方を学ぶ意図が分からない」「これがどういう風に使われるのか分からない」

プログラミングを勉強していますと、数多くの「構文」や「文法ルール」「処理」がでてきます。多くの参考書や授業では基本的なことから順をおって説明しますので 「網羅性」や「分かりやすさ」を重視する反面、「この処理が何に使われるのか分からない」「どんなことに役立ち、これができるとどういうふうに楽しいのかがイメージできない」と思われる方は多いと思います。

私も今でこそ、プログラマーとして仕事をしていますが、学習しはじめは同じように思っていました。大学時代、C言語の授業を受けましたが、やはり、各処理の意味が分からず、ほとんど興味を持てませんでした。

では、こういった教え方が問題なのかと言うと、そうではありません。面白くなくともやはり、プログラミングを学ぶにはこのように基礎から積み上げていくしかありません。 なぜかと言うと、各構文の意義や学ぶ意図というのは、それ単独で取り出してもわからず、実際の成果物・ソースを作っていく過程ではっきり見えてくるものだからです。

1つ1つの構文と言うのは、「家を作る」ことにたとえますと、1つ1つの柱や釘のようなものだと思います。柱や釘は、それ単独で取り出しても、あまり存在意義はハッキリしませんし、興味も惹かれないでしょう。 それが、意義や役割を発揮するのは「家全体」を見た時だと思います。家全体を見た時に、柱の設計や釘の打ち方のなど細部の意義が見えてくるのだと思います。
(私は、建築に詳しいわけではないので、あくまでイメージが伝われば幸いです。)

           

プログラミングも同じで、成果物を作らずに、どんなに「使われ方」「意義」「楽しさ」の説明を受けても、抽象的な理解だけに、とどまってしまい、実感が湧きません。

            

例えば、「オブジェクト指向」がまさにそうなのですが、オブジェクト指向を一言で説明すると以下のようになります。
「纏まった変数や関数を1つの纏まりとして扱うことで、プログラムを部品のようにして扱うことができる。これを使うことで、プログラムを部品ごとにわけることができ、使いまわすこともできるため、成果物を作るスピードが圧倒的に上がる」
これがオブジェクト指向を学ぶ「意義」や「楽しさ」なのですが、これを聞かされても「部品」というのがどういうものか、オブジェクト指向がどう便利なのか、部品にわけることにどんな意義があるのかはソースを自分で書き、成果物を作り上げていかないと分かりません。

            

PHPは学習してから、楽しさや意義が分かるまで、比較的短いと思いますが、それでも最低2年は学習し続けないと、各処理の意図は分からないと思います。

            

PHPスクールで、皆さんに「成果物の作成」を勧めているのは、就職活動上、有利というのもありますが、プログラミング技術を身につけるためには、「成果物をつくることが、各処理や文法の意味を理解する上で最適」だから、というのが私の本当の意図です。どんな成果物でも作る上で、必ず各処理の意義が「見えて」きます。

授業を受ける前に

  • ●「技術力絶対主義」だと思われがちなシステム開発の現場では、ITエンジニアに期待されるスキルとは一体どのようなものなのでしょうか?
  • ●あなたは、一軒家を建てる時、「最新の工具や家の建て方に詳しいだけの大工さん」と、「伝えたことを正確に守ってくれて期限通りに完成させてくれる大工さん」のどちらに、家を建てて欲しいでしょうか?
  • ●システム開発に携わるエンジニアにとって、「技術力」は絶対に必要です。しかし、最新技術や開発プロセスのノウハウだけに詳しいエンジニアよりも、リスク察知やコミュニケーション能力、マネジメント能力に優れたエンジニアの方が、お客様にとって安心してシステム作りを任せられるエンジニアだと言えます。
  • ●日本では「エンジニア」を「技師(技術者)」と言い、中国では「工程師」と言います。「一つの仕事やプロジェクトの進め方を設計・構築し、これを遂行する責任者」という意味ですが、こちらの方が「エンジニア」の仕事を的確に言い表せていると私は思います。

学習の仕方

  • ●「分からない」=「頭が悪い」は間違い!?
    分からないと恥ずかしいので、物分かりがよくなる。そのプライドがプログラミングを学ぶことを阻害します。分かった気になって、「これ以上は考えない」という思考停止に陥らないでくださいね。「本当にそうなのか?」を考える癖を身につけてください。
  • ●スクール中は、必ず「質問魔」になってください。「これは以前、聞いたから」「こんな初歩的な質問をしたら、怒られるかも・・・」一切思わないで下さい。あなたの悩みを解決するために我々はいます。
  • ●「よい質問ができた時には、答えが半分出ている」といえます。正確に、質問ができるということは「わからないところが理解できている」ということです。
  • ●入社(入場)後は、必ず「自己解決」を基本として下さい。しかしながら、もし、上司や先輩に技術的な質問をしたい場合は、「そもそも、何をしたいのか?」「自分は何に困っているのか?」「今現在、どこまでわかっているのか?」を明確にした上で、質問して下さい。「自分ではこう考えた(実行した)のだが、もっと他に良い方法はないだろうか?」という質問の仕方は非常によい質問です。
  • ●武道の「型」と同じように、まずは一字一句変えずに、型通りにやってください。最初から、自分流でアレンジすると失敗します。最低限の知識がない状態で、いくら頑張っても、たいていは単なる時間の無駄になります。最低限の知識があれば、あとは「それをどのように使うのか(応用する)」を考えるだけでイイのです。
  • ●プログラミングは「慣れ」が非常に大事です。繰り返し、学習することによって「分かる」「自分で書ける」というレベルになりますので、「一度で理解できないから理解力が無いのでは・・・」といったような無用な心配はなさらないでください。
  • ●また、「量(写経の書き写し回数)」も大事ですが、「バットを適当に振り回すのではなく、球筋をイメージしてバットを振る」ということを意識して下さい。
  • ●「暗記できていないことは自分のものになっていない」レナード・オー
  • ●授業内容を、1回で完全に理解することにこだわらないで下さい。もちろん、一度で理解できれば理想ですが、PHPスクールの授業で扱うソースはレベルも高く、また、「実践の業務で扱うソースに触れる」というのが目的でもあります。重要事項は何度も繰り返しでてきますし、またご自身で考えて課題に取り組まないと、完全に理解することは難しいです。
  • ●最も力がつくのは「自分で試行錯誤しながらシステムを作っているとき」です。一度の授業で完全に理解するのではなく、自分自身で勉強しているときに「授業で言っていた内容はこうだったのか!」と振り返る経験が大切です。
  • ●「分かる(理解した)」=「伝えられる」
    「分かった」の基準は人により様々です。「分かったつもり」が多い。人に説明することで、理解の度合いを把握することができ、より深い理解に繋がります。また、実際に自分で特定のシステムを開発してみることも、人に説明することと同じ効能があり、より深い理解に繋がります。相手に通じなかったら、自分の理解(思考)のどこかに問題があります。
  • ●最初の一歩にこそ、一番大きなエネルギーを必要とします。スタートは、繰り返して、できるだけ丁寧にゆっくりとやって下さい。
  • ●「成長」とは、「変化」することです。「変化」には「勇気」が必要です。「勇気」とは「昨日までの自分を捨てる」ことです。
  • ●「答えのでないこと」で悩まない。(『意識的な思考』ではなく『何となくの思考』)
    「○○がない」「○○できない」という言い方はせず、「何ならあるのか?」「何ならできるのか?」を考える。うまくいかない時は、うまくいかない理由を探すのを一旦止め、どうしたらうまくいくかを考える。「今、できること」を最大限考え、実行する。「出来ない」からといって、決して急がない、焦らない。
  • ●常に、ゴールからさかのぼって今を考える。例えば、スクール入学前に、「PHPスクール体験記」を書くことをおすすめします。
  • 「仕事の成果=質×量×スピード」
    「質」がないなら、「量」と「スピード」が絶対的に必要です。しかし、限られた時間内で、成果を上げるにはどうしたらイイのでしょうか?「全体像を掴む」「全体像を意識する」「体系を考える」「イメージする(可視化)」
  • ●上から見渡すことで、ようやく「全体像(本来の意味)」が見えてくるようになります。「基礎(授業)」は分かったつもりになってしまう面がありますが、実際に「応用(復習や課題作成)」してみることで、初めて「基礎」を本当の意味で身につけられます。
  • ●勉強の成果=2^(勉強の量)-1
    覚えることが多い(多そうに思う)が、実際、業務で必要な知識はそれほど多くはありません。23日間学ぶと、新しい技術がどんどん出てきますが、「これからも、これくらい勉強しないといけないのかぁ~」と感じると思います。しかし、勉強する量としては事実ですが、実感値としては、それほど多くないと感じるハズです。知識をどんどん増やす勉強ではなく、知識を応用できる勉強に切り替わることにより、比例ではなく、2次関数もしくは二乗関数で、習得量は増えていきます。
  • ●できるかぎり、五感を使って覚える。
    「見る、聞く、話す、書く、触る」
    メモる。人に説明する。独り言を言う。
  • ●「好奇心」「探究心」「人として正しい心(善悪など)」が「問題発見・課題解決能力」に繋がる。
  • ●「深刻」と「真剣」は違う。「我慢」と「耐える」も違う。
    もちろん、「止(辞)める」と「諦めやすい」「飽きる」も違う。
  • ●「やりたくないことを避けること」は悪いことではないが、その線引きにはセンスが必要
  • ●「知識」を「経験」までのレベルに持って行く。また、「経験」から「知恵・体験」を学ぶために、「反省(深く考える、言語化)」してください。「気づき(深く感じる)」を得て下さい。決して、「後悔」や「懺悔」はしないでくださいね。
  • ●同じ間違いを何度もしてしまう人へ
    「その行動が、根本的に、自分に欠けている部分があるから行ってしまった」という自己認識が欠けています。自分に足りない部分を把握することで、どのようにすれば、今よりも自分の能力を高められるかを具体的に知ることができます。自分の能力をアップできるチャンスと捉えればよいですね。
  • ●その人の状況によって、「考える意味のある問題」と「考える意味のない問題」があります。
  • ●しない→(意志を強くする?)→する→できない→(能力を高める)→できる
    「めんどくさく」なって、継続できないですよね。でも、工夫して、とにかく行動してください。徐々に「めんどくささ」は薄れていきますから。まずは、朝起きたら「PCを立ち上げる」「XAMMPを起動させる」ところから、一歩づつ少しづつ「習慣化」してみて下さい。その内に、「やらないと気が済まない」「やらないと気持ちが悪い」状態までになっていきますよ。「訓練、即、実践」「実践、即、訓練」
  • ●「効率」よりも「効果」「継続性」を重視する
    人は誰しも「ラク」して身に付けたいと思うものですが、「やり方」で悩んで何もしないくらいなら、とりあえずやってみましょう。

PHPスクール中での「3回の挫折」について

  • プログラミングにおける「制御関数と配列(ループ操作)」「データベース連携/操作(SQL)」「オブジェクト指向(処理を部品化)」の3つということもありますが、(「組合せ(成果物開発)」の方がもっと大変!!)、我々が考える「(意図した)挫折」は、心境(心理状況)の「3つ挫折」になります。
    1.「分からないこと」が分からない。
    2.「分からないこと」が分かったつもりだが、「解決できない」。
    3.「分からないこと」が「解決できる」。

    もう少し細かく言うと、下記6段階になります。

    1.「分からないこと」が分からない。
    2.何が問題かは「分かったつもり」でいるが、「問題の核心が掴めているかどうか」が不明確。
    3.「分からないこと」が分かる。問題の核心は明確だが、「解決方法」が分からない。
    4.「解決方法」は分かるが、具体的にどうすればよいか、「やり方」が分からない。
    5.「やり方」は分かるが、何らかの理由でやらない(やれない)。
    6.やらない(やれない)原因が突き止められ、今すぐ(自己)解決できる。

    PHPスクールでは、この6段階を乗り越えることで、「実務3ヶ月レベル」のWebエンジニアになります。

初歩段階(スクール1日目~4日目)での学習の仕方

  • 一言でいうと「習うより慣れろ」ということですが、「概念的なことに拘り過ぎないこと」が大事です。もちろん、ケースバイケースですが、「概念的な理解」を基礎の段階で「重視しすぎない」ことが大切です。完璧な理解を、最初から求めない方がよいです。
    まずは、「写す(写経する)こと」「似たパターンの問題を解けるようにすること」に注力してください。それを、「繰り返す」ことで「分かる」ようになることが多いです。一般的には、「分かる」→「解ける」という流れだと思いますが、「(繰り返し)解く」→「分かる」という流れの方が自然かと思います。
    また、「今は完全には、分からなくてもやっている内に分かるだろう」という考えも大切です。いろんな受講生を見てきましたが、スクール期間中に、何度もソースを見ている内に「気づいたら、できていた」「分かるようになっていた」という状態になる方が多いです。逆に言うと、「慣れ」が必要なので、どうしても「量」をこなさないとダメです。私も今、勉強していても分からないことが結構出てきますが、上記のような考え方を持っていますので、余りストレスに感じません。そして、実際に「その内、分かる」ことが多いのも事実です。
    そのためには、よく分からなくても、とりあえず「コードを見る」「写して見る」「動かして見る」という経験が必要です。もちろん、全く理解できなくてはダメですし、疑問点は聞いてくださいね。あくまで量をこなして、「慣れを作る」のが、当初は大切という意味です。
    真面目な方に多いのですが、「なぜそうなるのか?」の理屈を理解することにこだわり過ぎて、前に進めない方に多く出会います。もちろん、「なぜそうなるのか?」を考えることは非常に大切ですが、「当初は」良い意味で、「イイ加減」になることが大切かと思います。

「写経」勉強法について

  • PHPスクールでは、「写経(しゃきょう)」をすることより、できるプログラマーの『型』を体得していきます。しかしながら、ただ漫然と写していても、効果は薄いため、以下のような点に注意して「写経」して下さいね。
    ●【1回目の写経】「一言一句」「間違えず」書き写す
    1回目は意味も分からず、できるプログラマーが書いた、完成されたプログラミング文章(ソース)を「一言一句」「間違えず」書きます。当初は、全く同じものを書き写すことだけでも「大変だ」ということを実感されると思います。
    ●【2回目の写経】全ての内容を理解しながら書き写す
    全ての処理に対して「なぜこの処理を書くのか?」という疑問を持つこと。もし、分からない場合は「消したり」「順番を変える」とエラーが出たり、意図しない表示になりますので、疑問点をもった場合はぜひ、やってみてください。また、コメントアウトされた部分(説明箇所)は書かずに、プログラミング部分だけを写経し、書き終わった後に、ご自身の言葉でコメント(説明文)を残すこともやってみて下さい。コメントを書くために、ソースコードを熟読することになりますし、最後にコメントのみをご自身で読み直せば、ソースコードの流れを解説したオリジナルのファイルになり、断片的な知識が線で繋がります。さらに余裕があれば、ご自身のコメントのみを頼りにソースコードを書いていくのもおすすめです。(コメントがソースコードを示す内容として適切かどうかご自身でチェックできます)
    ●【3回目の写経】ざっとソースを見て覚え、見ないでソースを書く
    「構文単位」でソースを見て覚え、サンプルソースを見ないで、ソースを書きます。
    ●【4回目の写経】PC上ではなく、ノートに手書きでソースを写経する
    PC上でのプログラミングではなく、白紙のノートに手書きで、サンプルソースを写経していきます。
    ●【5回目の写経】画面だけを見て、ソースを復元してみる
    これは、ブラウザに表示されている「画面だけ」を見ながらソースを復元する行為です。画面に出ていない場合は、「どんな処理だったか」ということを確認するために、元のソースを見るのはもちろんOKです。当然、「写す」のと違いスムーズにはできないかと思いますが、悩みながら復元していくことでプログラムを考える力が付きます。
    【6回目の写経】さらにカスタマイズしてみる
    厳密には、写経ではないですが、自分なりに処理を付け加えてみましょう。「問合せフォーム」の場合、「項目を増やしてみる」「新たなエラーチェックを入れてみる」などです。新機能を追加する過程で、いろいろなことを調べると思いますし、エラーを出しまくるかと思いますが、この「悩む過程そのもの」がプログラムを組む上での論理的思考能力を養います。このようにすると、加速度的に力がついていきますよ。
                    
    プログラミングを勉強する方法は世の中に数多くあり、万人に通用する学習方法は世の中にないと思っています。これは、プログラミング以外でも同じでよすね。なので、学習方法に関して、個人個人が試行錯誤することは、とても良いことだと思っています。
                    
    「無料PHPスクール」では、「写経」勉強法をしていますが、下記メリットがあるので、行っています。
    ・タイピング速度の向上
    ・「慣れ」を作ることができる(プログラミングは習うより慣れろの部分があります)
    ・「書くこと」が一番覚える
    ・復習の場合、既に同じことをやっているので、理解するための労力が少ない(時間対効果が高い)
                    
    また、過去8年間、生徒さんを見てきた経験則ではありますが、「じっくり考えている(だけの)生徒」よりは「とにかく書く(量をこなす)ことを実践する生徒」の方が結果として、「理解力アップ」に繋がっていると感じています。(当然ながら、「考えること」は非常に大切ですよ。)

「知っている」と、「出来る」は全く違う!

知識(知っている)と行動(出来る)のギャップを埋める5つのポイント

  • 1.「どうやって?」より、ます「なぜ?」
    大事なのは、やり方やテクニックではなく、その裏にある哲学や背景です。「何をするのか」だけではなく、「なぜそうするのか?」を知る必要があります。
  • 2.「行動すること」や「教えること」で、本物の知識は身につく。
    問題にぶつかって初めて「何となく分かる」という段階から「知識が身につく」段階になります。実際に教えたり、実行したりする立場に立たなければ、それは本物の知識(経験から得た知識、洞察力)にはならない。
  • 3.素晴らしい計画やコンセプトよりも行動が勝る
    たくさん試してみる。効果のあるものとないものが分かる。そこから得た知識を検討する。もう一度、試してみる。知識に裏打ちされた試行錯誤は、完璧な頭脳が立てた計画に勝る。
  • 4.行動すれば間違いも起こる。
    学習には「失敗」がつきもので、人は失敗からも学びとれる。学習とは「試してみること」の延長である。失敗を怒りの対象としないように。
  • 5.恐怖心はギャップを広げる。ます、恐怖心を追放しよう。
    プレッシャーや恐怖心があると、思いがけない過ちをしたり、無差別な行動に走ったりする。失敗も学習のチャンスと考えること。ただ、そもそも失敗は悪いことではない。一番ダメなのは、行動しないこと!!知識を行動に変えよ!!

プログラミングが「分かる」から「できる」になるためには

「自分自身で考えて書くという作業をどれだけやるか?」

  • ●プログラミングを学んでいくと、一つ一つの構文の意味や使い方は「分かる」のですが、「全体像(全体の動き)」が見えない、分からない。もしくは、「分かる」のですが、自力では「書けない」という、状況に陥ると思います。
    (構文そのものではなく、「構文を組み合わせて、システムを作る」部分ですね。プログラミング学習で、多くの方がつまづいているのは、この部分だと思います。単発の構文なら分かるが、「組み合わせ」となると、どうしても分からなくなる・・・。)
    これは、プログラミングの初歩の初歩段階から、次のレベルに移っていると言えますが、ここをさらに、乗り越えることで、「できる(一人で成果物が作れる)」レベルになります。基本的には、データがプログラム中を、どう動いて、次に、どのプログラムに行くかという「つながり」の部分を理解することが大切になってきます。
  • ●大切なのは、試行錯誤する過程
    1.「なぜそうするのか?」を知る
    2.「試行錯誤する」もしくは、「人に教える(先生に説明する)」
    3.2を数多く行う。
    4.「悩む」「失敗」「間違い」「挫折」をいっぱいする。(イライラしないこと!!)


    「悩む」→「書く」→「間違える」→「挫折感を味わう」→「やる気になる」→「悩む」→・・・のサイクルの繰り返し(試行錯誤の過程)が、もっとも大事です。プログラミングはスポーツや習い事同様「慣れ」がどうしても必要不可欠になってきます。説明を聞いたり、読んだりするだけではダメで、数多くの経験(たくさんのソースを見る、たくさんのソースを書く)が必要になってきます。なので、大事なことは一度、二度分からない、書けないからといって、そこで諦めないこと!「何度もやっていく内、気づいたらできるようになっていた」という経験はどのプログラマーにもあると思います。分からないことがあっても「試行錯誤する内に、いずれ分かるだろう」という「心構え」も大切です。やっていく内に、この考えは身についてくるかと思います。
  • ●プログラミングもスポーツと同様、トレーニングが必要不可欠
    そうはいっても何も考えずにソースを写しているだけで理解でき、自力で書けるようになるわけではありません。自分なりに試行錯誤することが必要不可欠です。具体的にはソースを読む、書く過程において、以下のことを常に念頭に置くようにしましょう。

    ・なぜ、このような動きになるのか?
    ・なぜ、そのようなプログラムを書くのか?
    ・プログラムの中で、データがどこをどう走っているのか?(分からない場合は、常に画面に出力表示)
    ・データが、どこから来て、どこにわたっているのか?
    ・データを送るには、どうしたらいいのか?
    ・単純化して考えたら(他の条件をはずしてみたら)どうなるか?


    こういったことを常に考えることで、プログラムに必要な論理的思考力が鍛えられることになります。ここは「知識」ではなく、純粋に「論理思考力」を鍛える場面なので、講師が手助けすることができません。残念ながら、「試行錯誤」して、繰り返し、学習するしか方法はありません。ただ、どうしても分からない場合は、再度「正解を写す(=写経)」ということも有効な手です。その場合も漠然と写すのではなく、上記を考えながらソースに常に疑問を持ち続けるようにしましょう。また、自力で「挫折」して、解答を見るのと、最初から見るのとでは、理解度が全く違います。プログラミングで大事なのは、「なぜ、そのようなプログラムを書くのか?」という思考の部分だからですね。スポーツをやられた方であれば、コーチ(指導者)から正しいフォームや動きなどを教えられただけではダメで、身につけるためにひたすらトレーニングを重ねてきたのではないでしょうか?プログラミングではそのトレーニングがこういった一連のプロセスになります。どんな道を辿るにせよ、「頭に汗をかく」のは避けられないですね。

よくあるエラー(タイピング・ミス):PHPのデバッグポイント

  • ・”“ ’’ [] {} はそれぞれ対である。
    ・;(セミコロン)で行は終わる。
    ・_は見落としやすい
    ・毎回、SQLとAPACHEを起動してから作業すること。起動忘れだとエラーになります。
    ・単語のスペルミス。複数形にも注意してください。例えば、TABLESとTABLE
    ・「|」は罫線ではないです。1やlとも間違えやすいです。
    ・バックスラッシュ(\)とスラッシュ(/)は違う。バックスラッシュはMacとWindowsで違う。
    ・!==、 ===は、これで一纏まりなのでばらさないでください。
    ・ZIPやLZHは、解凍すると開くことができます
    ・pathの設定に注意!
    ・ピリオド(.)とカンマ(,)の違い
    ・ファイル権限でのエラー:パーミッションというエラーがでたら権限(777)を変更する
    ・『1行目にエラーがある』と表示された場合、外部ファイルも併せて確認する
    ・引数とは「○○して欲しい」という依頼(注文)のこと。関数は、それに対する回答(走る・食べるなど動詞)だと考えると理解しやすい。
    ・$sexArr:$sexAerではないので注意!
    ・`postcode`:'postcode'ではないので、注意!(バッククォートは見つけにくい)

エラーの防ぎ方・解決方法と、PHPエラーメッセージ(一覧)

  • ・エディタの「色分け」「インデント機能」を駆使する。文字を囲うクオートや [ ] { } などのズレが発見できる。
    ・読み落としを防ぐために、単語間はスペースを開ける。もちろん、全角ではなく、半角スペースを使う。
    ・エラーは、エラーで表示されている行よりも、数行上で発生していることが多い。2~5行くらい上の行が多い。
    ・エラーメッセージの内容でネット検索する。エラーを発見し修正していくこと(デバッグ)が、論理的思考力を鍛える最良の機会になります。
  • ・undefined~ :変数が定義されていない。未定義値。
    ・Parse error: syntax error~ :プログラム上の文法や構文の間違い。
    ・unexpected~ :予期しない~
    ・no null function~ :functionにソースが抜けているところはないか確認する。

無料PHPスクールの事前準備:開発環境構築

  • ●XAMPP(無料)のダウンロード+インストール
    ご自身のPC内で、PHPを動かすには、XAMPP(ザンプ)という無料ソフトをダウンロード+インストールする必要があります。Macの方は、MAMPPではなく、OSX向けXAMPPをダウンロード→インストールして下さい。ちなみに、XAMPPのXはOS(Windows、Linux、MacOSX、Solaris)、AはApache(Webサーバ)、MはMySQL(データベース/DB)、P2つは、PHPとPerlの頭文字です。
  • ●gvim(無料)のダウンロード+インストール
    無料PHPスクールの授業では、gvim(ジー・ヴィム、GUIで動くviの改良版)という無料エディタソフト(プログラムを書く時に使用するソフト)を使って行います。Macの方は、ターミナル上にVimが標準で入っていますので、ダウンロード+インストールは不要です。
    ・シンタックスハイライト(色が付く機能)
    ・行数表示
    ・入力補完(途中までタイピングすると、候補が出てくる)
    ・オートインデント(自動で凹む)
    ・矩形選択(くけいせんたく、=長方形、複数行選択)
    エディタソフトは、他には、メモ帳(Windows)、テキストエディット(MacOS X)、vi/Emacs(UNIX)、秀丸、Notepad++、TeraPad、サクラエディタ等があります。
  • ●VirtualBoxにCentOSをインストールする
    ・VirtualBoxのダウンロード
    Windowsの場合:VirtualBox 5.0.14 for Windows hosts x86/amd64
    Macの場合:VirtualBox 5.0.14 for OS X hosts amd64
    をそれぞれダウンロードしてください。(現時点では5.0.14ですが、最新版のDLをお願いします。)
    ・CentOSのダウンロード
    VirtualBoxにCentOSをインストールして設定をおこないます。
  • ●Teraterm(無料)のダウンロード+インストール
    Teraterm(テラターム)は、サーバーにログインするための無料ソフトです。無料PHPスクール5日目のLinux講座で使用します。

無料PHPスクール1日目:配列と制御関数

  • ●<プログラミングの前提条件>
    1.処理の開始は、<?PHPで始まり、?>で終わる。
    2.プログラムは上から下に読む。
    3.一行の終わりには必ず、セミコロン(;)をつける。(if,forなどの終わりにはつけない)
    4.全角スペースは出力以外の場所で使うとエラーが出てしまう。半角スペースはOK。全角は” ”や”の間のみに使います。その他で使うことはありません。
    5.//はコメントアウト(この中は機械が読まない。人間が読むためのもの)。/*  */で複数行に対応。
    6.表示をさせる命令がecho(エコー)。文字を入れるときはecho "nakata" のように" "(または' 'で)囲む。数字はいらない。
    7.変数。プログラミングの一番の基本。データを入れる箱。$nameなどと書く。変数は英語表記。
    8.= は ←(右のデータを左に代入)の意味。イコールではなく、右の数値を左にいれる。
    9.文字化け解消のために文字コードはUTF-8で保存する。htmlファイルは必ずUTF-8に。
    10.データの中を見るには、var_dump(バー・ダンプ)を使う。今後、最も使っていく関数で、最重要です!「型(int:整数、string:文字列など)」「文字数」を無視して、何が格納されているかだけを見る場合は、print_rでもよい。
  • ●<配列と制御関数のポイント(if/for/foreach/while/switch)>
    ・「配列(array)」は、0番からスタートする。
    ・配列の中に配列を入れる「多次元配列」は、無料PHPスクール1日目の一番の山場。
    ・繰り返し処理(ループ処理):while、for、foreach
    ・インクリメント(加算子、++$a/$a++)とデクリメント(減算子、--$a/$a--)
    ・真偽値(論理値/真理値):True(真)、False(偽)
    ・fopen関数:ファイルまたは、URLを開く
    ・fclose関数:ファイルまたは、URLを閉じる
    ●function(ユーザー定義関数):何度も行うめんどくさい処理はこれで一括で行います。
    ・関数の定義の仕方: function 関数名 ( ) { 関数の処理内容 }
    ・関数は文中、文末どこででも定義可能。実際に利用する際は別ファイルに関数をまとめてしまい、その関数を利用する際に都度ファイルから呼び出す方が効率的。
    →同じような処理を一括で行うためソースコードが読みやすくなる(可読性)
    →修正があった時に関数内部の修正を行えば、すべての処理に反映させることができる(保守性)

    ・define:定数を定義する。
    ・defined:定数が存在するかどうか調べる。
    ・引数:関数を呼び出すときに渡す値のこと。
    ・戻り値(返り値):関数が処理を終了し、呼び出し元に処理の結果として返す値のこと。return文で値を返す。returnは、関数ではなく言語構造。
    ・変数のスコープ(有効範囲):
    ・グローバル変数:関数の外部で定義(宣言)した変数
    ・ローカル変数:関数の内部で定義(宣言)した変数

無料PHPスクール2日目:Web問合せフォーム開発と掲示板サイト開発

  • 入力画面を使ったデータのエラーチェック、値の保存、ファイルへの書き出し/読み取りを学びます。
    ●contact/form.php:フォームの作成方法(ポイント:条件分岐)
    ・入力フォームに条件と一致しない値が入力された際はエラー文を表示させてみる
    ・条件は if文で指定してもよいが true or false の二択であれば三項演算子で記述した方が短縮できる
     値 = (条件式) ? trueの時の値 : falseの値
    ・変数と定数は利用する前に定義しておかなくてはならない
    ・isset  isset以降がセットされている場合には~というニュアンス
    ・$_POST 頻繁に出てくる書式 データを受け取るための変数のひとつ
    ・and (&&) とor (||) で条件指定可能
    ・!==や=== はこれでひと塊なのでスペースを入れるとエラーが起きるため注意!
    ●board/board.php:掲示板の作成方法(ポイント:ファイルポインタ、fgets、fputs、while構文)
    ・ファイル読み込み→投稿あったか確認→投稿があれば入力チェック→ファイルに書き込み
    ・関数 fopenを利用しファイルを読み込む。ファイルは上から一行づつ読み込まれていく。
    ・読み込みが終わるまでwhileでループ。
    ・.=は「つなげていく」という対の表示なので間にスペース厳禁
    ・LOCK_EXで同時に編集されるのを防ぐ
    ●board/board2.php:掲示板の作成方法2(ポイント:配列、while、foreach)
    ・投稿あったか確認→投稿があれば入力チェックして書き込み→配列への格納→多次元連想配列の表示
    ・掲示板に書き込まれたデータを fopenで開き fgetsで読み込む
    ・読み込んだデータをarrayで配列化する
    ・配列化したデータを連想配列に変更し最終的には多次元配列に入れる
    ●counter/counter.php:アクセスカウンタの作成方法(ポイント:file_get_contents、file_put_contents)
    ・ファイルの存在確認→値の取得→インクリメントしてからファイルに書き込み
    ・is_fileは以降()内のファイルが存在すればという意味
    ・intvalは数値化してという意味
    ●csv/csv.php:CSVファイルにデータを読み込みにいく(ポイント:whileを使ったファイル読み込み、fgetscsv、checkData
    ・preg_match 正規表現で()内の記述に細かい意味があるので理解しながら記述する。また、記述されている意味を読み取れるようにする。
    ・読み込みにいったファイル自体にエラーがある可能性があることに留意する。
    ●image_submit:画像アップロード
    ・投稿あったか確認→画像のエラーチェック→画像のアップロード
  • ●「正規表現」に関して
    . : なんでもいい1文字を表す
    ^ : 先頭を意味する
    $ : 終わりを意味する
    * : 直前の文字がなし、または1つ以上連続する
    + : 直前の文字が最低でも1つ以上連続する
    ? : 直前の文字がなし、または1つだけ
    | : |で区切られた文字列のいずれか
    [] : []内の文字のいずれか。ex)[ABC]:AかBかC
    () : グループ化する。ex)(ABC)+:ABCABC、(AB|C):ABかCかどれか、W(indows|)
    {n} : n回一致する
    {n,} : n回以上一致する
    {m,n} : m回以上、n回以下に一致する
    a-z : アルファベットaからzまで
    A-Z : アルファベットAからZまで
    0-9 : 数字の0から9まで
    \d : 数字の0から9まで

無料PHPスクール3日目:データベース(DB)とSQL

  • SQLをコマンド(Windows:コマンドプロンプト、Mac:ターミナル)から操作し、データベースの作成/テーブル作成/SQL基本構文の演習と、Webサイトへの組込みを行います。
  • ●Windowsの方
    XAMPPのコントロール・パネル(アプリケーション・マネジャー)から「shell」を選択してください。コマンド・プロンプトのような(黒い)画面が開きますので、「mysql」と入力します。MySQLが起動します。抜ける(終了する)時は、「quit」と入力します。
  • ●コマンドプロンプトの基本的な操作方法
    ・MySQLの入り方:cd\xampp\mysql\bin
    mysql -u root -p
    PW 入力
    ・MySQLの出方 :quit か \q かexit
    ・rootは各データベースへの権限付与を行う大元となるデータベース
    ・ディレクトリ間の移動方法 cd ディレクトリ名
    ・ディレクトリを一つ戻る cd ../
    ・ディレクトリの中身の確認方法(Win:dir、Mac:ls)
  • ●board/データベース作成.txt(board_db):MySQL基礎
    ・ログイン/データベース作成/選択/データベース一覧表示/テーブル作成/テーブル一覧表示/テーブルへのデータの挿入/テーブルデータの表示
    ・接続→命令→結果→表示の流れ
    ・CRUD = Create(作る)、Read(読み込む)、Update(更新)、Delete(削除)
    ・mysqli_connect(host user pass name)の順番
    ・rootより新規データベースの作成が可能
    create database 作成するデータベース名 default character set utf8;
    以下、ファイル名 見ていいデータベースの権限付与 PW設定を行い書式設定を指定する
    ・SELECT :表示するという意味
    ・insert into ~ :~に値を入れる
    ・* :全部、すべての意味
    ・show databases ; でデータベースを表示可能
  • ●資料/データベースのコマンド.txt:データベース・コマンド
    ・データベースを作成する:CREATE DATABASE データベース名
    ・ユーザを作成する:GRANT 権限 ON DB名.TABLE名 TO ユーザ名@ホスト名 IDENTIFIED BY 'パスワード' WITH GRANT OPTION;
    ・テーブルを作成する:CREATE TABLE テーブル名 ( カラム1 型, カラム2 型 );
    ・データベースの一覧を表示する:SHOW DATABASES;
    ・データベースを選択する:USE データベース名
    ・テーブルの一覧を表示する:SHOW TABLES;
    ・テーブルの構造を表示する:DESC テーブル名;
    ・データを登録する:INSERT INTO テーブル名 ( カラム1, カラム2, ... ) VALUES ( 値1, 値2, ... );
    ・データを更新する:UPDATE テーブル名 SET カラム1 = 値1, カラム2 = 値2, ... WHERE カラム3 = 値3;
    ・データを削除する:DELETE FROM テーブル名 WHERE カラム1 = 値1;
    ・データを選択する:SELECT カラム1, カラム2, ... FROM テーブル名 WHERE カラム名 条件
    ・ユーザーの確認:SELECT host,user FROM mysql.user;

    データの後に続く()は文字の長さ。varchar(10)だと10文字
    intはなくてもOK
  • ●資料/store.sql:リレーションを伴ったSQL
  • ●board/board3.php:データベースを使った掲示板(表示のみ)
    ・データベースホストへ接続して、結果を配列に格納する
    ・まずデータベースへ接続するために変数の定義。
    ・$linkからデータベースホストへ接続し、if文を制限(鍵)をかける。
    ・関数 mysqli_query(); でデータベースboardへアクセスし帰ってきた値を、関数 mysqli_fetch_assocで配列し格納する。
    ・mysqli_close(); までの記述はデータベースにアクセスし値を表示させ、接続を閉じるまでの基本の流れとなっているため、何度も写経し覚えてしまう。
    ・全角スペースに気を付ける
    ・データベースへのアクセス順にも注意
    ・データベース側にエラーの原因がある可能性もある(board_dbが正常に作成されていない)
     show databeses ; で原因切り分け
  • ●board/board4.php:データベースを使った掲示板(入力と表示)
    ・データの挿入(書き込み)
    ・board4はboard3の条件文の中にさらにif文を加えているだけ。if文の中に複数のif文が入っているので解りづらいが、どの変数がどういった役割をしているのか読み解けるようにする。
    ・上からecho"aaa"; と出力していき、どこまでが表示されるか確認。表示されない箇所のすぐ上にエラーの原因がある。
    ・var_dumpで変数の中身をチェックし何も入っていなければ、その変数にはデータが届いていない。
    ・$_POSTのPOSTは必ず大文字で表記する。

無料PHPスクール4日目:関数とオブジェクト指向

  • ●要点
    1.「関数」に抜き出す
    2.「クラス」にまとめる:クラスに纏めて外に出す(共有)
    3.「Model」に分ける
    4.「View」に分ける:HTML/JavaScript部分をSmartyで抜き出す
  • ●オブジェクト(データの型)
    ・関連する複数の変数と関数、定数をひとまとめにして、部品(インスタンス)のように扱えるもの。「クラス」はその設計図(設計書)。
    →データ(変数/定数)と処理(関数)を一括で扱うため、ソースコードが非常に読みやすくなる(可読性)
    →変更があった時に、クラス内を変更すればよいので、修正(保守性)が容易。
    →使いまわすこともできる(再利用性)
    ・classの中に関数をまとめておき、変数 ->set 呼び出したい関数名("引数"); で適時呼び出す。
    ・まずは new クラス名 (""); でクラスを作成する。
    ・作成したクラスの定義を行う
     class クラス名 {
     public function __contruct( $hoge ){
    ・public function set関数名 でクラス内の関数を作成
    ・extends(継承)でクラスに関数を追加可能
    class ① extends ② :②というクラスを引き継いで①を作るという意味
    ・クラス内の関数の呼び出し方: $インスタンス名 -> set関数名( "引数" );
  • ●Smarty(PHPで使用するテンプレートエンジン)
    ・画面デザイン(コンテンツ)とプログラム(ロジック)部分を分けて、開発・保守することができます。htmlの中で、phpの開始タグを使わずに、使用することができます。
    ・Smartyの活用とファイル分割(プログラムを分割)、DBのクラス化
    ・MVCモデル:M(モデル)V(ビュー)C(コントローラー)の略で、オブジェクト指向でデータを扱う。
    Model: データベースとのやりとり。例)config、DB
    View: 表示部分。例)tpl(HTMLファイル)
    Contoroller: Modelを呼び出し、Viewにデータを渡す。例)board5.php
     1.board5で作成したクラスをDatabase.classで定義しpublic functionで関数を作成。
     2.作成した関数をset関数名でboard5内で呼び出し、最終的には$smarty->assignから$smarty->display('');でboard5.tplに表示できるように記述する。
     3.configは定数をdefineで定義した外部ファイル
    ・require_onceで読み込みたいファイルを指定:格納場所をちゃんと指定しておかないと後々エラーの原因となるので注意!
    ・外部ファイルを読み込みにいくため、各データを正確に格納する必要がある。すべてhtdocs直下に置いておいたらダメ!MVCの構造を理解する。
  • ●Smartyのまとめ
    ・Smartyクラスのインスタンス: $smarty = new Smarty();
    ・テンプレートディレクトリの指定
    $smarty->template_dir = 'テンプレートディレクトリの指定';
    $smarty->compile_dir = 'templates_cディレクトリの指定';
    ※compile_dirは、smartyが自動生成するキャッシュファイルの保存先になるので、必ず指定する必要がある。Linuxの場合、書き込み制限なし(777)の状態にしておく必要がある。
    ・テンプレートを出力する: $smarty->display( 'テンプレート名' );
    ・テンプレートに変数をアサイン(定義・割り当て)する: $smarty->assign( 'abc', $def );
    ※PHPプログラムの$defを、テンプレート側で{$abc}とすることで表示することができる。
    ・コメントの書き方: {* コメントを記入 *}
    ・if,elseif,elseの書き方: {if}, {elseif}, {else}で、必ず{/if}とペアで利用する。条件演算子( === や !== )などは、PHPと同じものが利用できる。
    ・foreachの使い方
    PHPの場合:
    foreach $arr as $key => $value
    {
    }
    smartyの場合:
    {foreach from=$arr key=key item=value}
    {/foreach}

    $arr = array( 'abc ' => 'def' )という配列で、def と表示させたい場合
    PHPの場合: $arr['abc'];
    smartyの場合: {$arr.abc}
    ・テンプレートでPHPの関数の利用: {php}{/php}タグを利用することで、PHPの記述をすることができる。また、|を使って、PHP関数を適応することができる。

無料PHPスクール5日目:JavaScriptとLinux

  • ●GET
    ・データの送信方法は、POSTと何が違うのか!?
    ・GETはURL上に値が表示される:URL欄の ? ~ = ・・・ は~が配列のkeyで・・・は配列のValueを表している。
    ・htmlのaタグでリンクを貼り、id= で指定した配列内のデータを表示する。$dataの値を画像や動画にすることも可能。
    ・CSSはidに#をつける、Classの場合は.をつける。
  • ●JavaScript(jQuery)
    ・JavaScriptはブラウザ側(PHPはサーバ側)での画面上の装飾や動き(動的)のある表現を可能にする。jQueryはJavaScriptを簡単に利用できるようにしたライブラリ。
    ・jQueryの基本形: $(function(){…});
    ・htmlのidタグは一回しか使えない。classは複数箇所で利用可能。
  • ●Twitter Bootstrap:手軽にスタイリッシュなデザインを構築できるCSSフレームワーク
  • ●Linux(OS)
    ・ユーザー権限とパーミッション:読みこみ(r):書き込み(w):実行(x)=4:2:1、所有者の権限:所有グループの権限:その他の権限(例:755)
    ・コマンド(CUI操作)とオプション:全般、出力/入力、移動/ファイル処理系(ls/cd等)、検索/置換、プロセス確認/ファイル情報等、リダイレクト、パイプ
    ・ディレクトリの基本操作:ディレクトリは現在地が「./」、1つ上の階層に上がるときは「../」 となる。絶対パスと相対パスの両方で操作ができる。*はワイルドカードで全てを表す。ファイル名でも拡張子でも使える。例)*.jpg ⇒ jpgファイルを全て表示できる。
    ・本番環境構築:Apache/PHP/MySQL/FTPサーバーのインストール

無料PHPスクール6日目:会員管理サイト(member)

  • ●「会員管理サイト(member)」では、今まで学んだ(使った)技術をもとに、「入力」「確認」「表示」を伴った(比較的)大規模なアプリを作ります。また、「クラスの応用」と「複数に分割されたファイル」について学びます。テンプレートファイルも数多く使用し、非常に多くの「クラス」と「関数」に触れることになります。無料PHPスクールが始まって、まだ日も浅く、初日の基礎もまだ記憶に新しいと思いますので、一つ一つの総復習(まとめ)として行うようにしてみてください。
  • 以下の2点を意識するとエラーが少なく済みます。
    ・データベース関連のファイルを、特に丁寧に書き写す(写経する)
    ・テンプレートファイルを丁寧に書き写す(写経する)
    また、各データが適切なディレクトリにないとエラーが起きるので注意!
  • ●「confirm.php」というファイルが一番長いので、confirmを越えたら勢いに乗れると思います。最も大変な山場となりますが、これを越えたらゴールが見えてきます。ぜひ、頑張って乗り切りましょう!
  • ●オブジェクト指向で会員登録フォームの作成
    ・オブジェクト指向のメリット:元ファイルの変更すればすべてに適用されるため修正が容易
    ・conf.php 各データベース項目を定数で定義
    ・database.class.php データベースの関数を定義
    ・Common.class 各入力フォームのエラーチェック関数を定義
    ・initMaster.class.php 各フォームの選択項目を定義
    ・confirm.php 入力フォームに上記class.phpで定義した関数を適用していっている。$modeにPOSTされてきた値がconfirm、back、completeのどれかに分類される。case” ”で各modeの定義を行ない最終的に指定したtplファイルに飛ぶ。case”complete”のtrueだけはcomplete.phpに飛ぶ。
    ・<エラー注意点>:これまでのように具体的なエラーが表示されない場合がある。エラーが出ない内容により、定義しているコードやその関数を出力している場所にエラーがないかを確認する必要があるため、データ遷移を理解しコードを読み解けるように繰り返し復習する!
  • ●プログラミングする順番
    DB作成
    Database.class.php:データベース関係のクラスファイル

    initMaster.class.php :日付や各選択肢などを設定するファイル
    Common.class.php :エラーチェックなどに使う、共通関数を格納したファイル
    regist.php :登録ページの表示
    regist.tpl :登録ページ

    confirm.php :エラーチェック、確認ページ、戻る対応のプログラムファイル
    confirm.tpl :確認ページ
    conf.php :設定ファイル

    complete.php :完了ページの表示
    complete.tpl :完了ページ

    list.php :登録されたデータを一覧で表示する
    list.tpl :一覧ページ

    detail.php :一覧ページで選択されたデータの詳細を表示する
    detail.tpl :詳細ページ

    postcode_search.php :入力された郵便番号を元に、データベースから住所を取得するプログラムファイル
    common.js :郵便番号検索ボタンが押された時、入力された郵便番号を取得し、postcode_search.phpを呼び出すJavaScript(c:\xampp\htdocs\js)
    style.css :エラーのとき、文字を赤くする
  • ●保存場所
    ・プログラム(PHP) :c:\xampp\htdocs\member
    ・JavaScript :c:\xampp\htdocs\js
    ・テンプレート(HTML) :c:\xampp\htdocs\templates\member
    ・スタイルシート(CSS) :c:\xampp\htdocs\css
  • ●DB
    ・tynyint(1):~という定義なら、0か1となる
    ・unsigned:正の値のみ
    ・datetime:日付を入れる型の定義
    ・LOAD DATA LOCAL INFILE “c:\xampp\htdocs\member\KEN_ALL.CSV” INTO TABLE
    説明)`postcode` TERMINATED BY ‘,’ OPTIONALLY enclosed bt ‘”’
    →KEN_ALL.CSVファイルを “POSTCODE”のテーブルに読み込む
  • ●JavaScript
    ・var zip1=$(‘#zip1’).val(); →~ならば、regist.tplの中の#zip1の値が入ってくる
    ・return false:処理をここで止める
    ・#.ajax:非同期処理の定義(通常は上から順に行われるが、この定義によって非同期に処理がされる)
    ・scuess ajaxの結果が入っている(これは決まり文句)
  • ●PHP
    ・date(‘Y’):西暦をとってくる
    ・static:インスタンスを作成しなくても使用できる
     例)$trafficArr = initMaster::getTrafficWay(); (注:CLASS定義がpublicであること)
    ・sprintf:フォーマットした結果を変数に入れる
     例)$kekka=sprint(“%02d”, $i ):$iが0~9なら00~09となって$kekkaに入る
     例) %04d…4ケタの整数を0で埋める、1の場合は0001と表示する
    ・strtime:1970年1月1日からの秒数が入る(未来日付判定に用いる)
    ・strlen:引数の文字列をカウント(文字列のバイト数を返す。文字数ではない)
     例)abc→3、あcb→4となる
    ・is_array:配列かどうかを判定
    ・list:配列を分割してセットしてくれる
    ・implode:配列を結合する(explodeの逆)
    ・Varchar:文字列型
    ・tiniint:intと同じ整数型だが0か1しか取れない
    ・primary key:重複しない
    ・header:Location 以下のURLに飛ばしてくれる

無料PHPスクール7日目の「ECサイト(shopping)」の予習に関して

  • 「会員管理サイト(member)」に引き続き、総復習第二段です。リレーショナルデータベース(RDB)をメインに扱うことと、セッションというクライアントのリクエストを認識する技術を扱います。また、役割分担化されたMVC(Model View Controller)式のソースを扱います。無料PHPスクールでは「(フレームワークが使えるのは当然として)、フレームワーク自体を作れるようになって欲しい」という意味で、CakePHPやZend Framework、SymfonyなどPHPのフレームワークはあえて教えていませんが、ここで基礎となるMVCモデルを学びます。
  • ●画像などが表示されないなど、表示系のエラーの対処法
  • <原因>
    1.表示方法を定義している関数自体がおかしい
    2.関数に入れている引数がおかしい
  • <対処方法>
    1.定義している関数(select系)周りをチェックし、スペルミスや対応している括弧に間違いがないか調べる
    2.DBに接続できているのかを確認する(調べ方はboard4を参照)
  • ●PDODatabase.class
    ・データベースに接続⇒表示(取得)⇒SQL文を作成⇒データの挿入⇒データの更新
    ・try catch構文:異常が発生しそうな処理を記述する。case’mysql’case’pgsql’各SQL文について記述。
    try {A} catch {B} :Aの処理ができない場合はBの処理を行う。
    ・catch以降には例外の対応を記述する
    ・$dsn(データベースソースネーム):決まった書式がある
     PDOを利用してDBに接続する際は引数にdsnを指定する。dsnを引数にとる変数をdbh(dbcon)という。
    ・DBに対する命令文を書く際は大文字で記述する慣習がある(ex、SETNAME~)
    ・FETCH_ASSOCでカラム名に添え字(番号ふって)を付けて配列を返す(カラムはDBの縦欄。横欄はレコード)
    ・set~ get~関数はaccessorと呼ばれる関数。クラス内のプライベート変数にアクセスするための関数
  • ●Session.class
    ・セッションとはwebサイトに対するアクセス数の単位。
    ・セッション変数を所持することでページを移動してもデータを保持することができる。アクセスした時にIDが付与され、ブラウザが一定時間記憶する。session_idを記憶する部分がcookie。
    ・セッションで変数を持ち歩くことでサイト内を自由に行き来できる。
  • ●Cart.class.php
    ・cartにデータを挿入⇒cartの情報を表示⇒cartの情報を削除⇒合計金額の表示⇒合計個数の表示
    ・cart c LEFT JOIN item i ON c. item_id = i. item_id  :cartテーブルとitemテーブルを、共通するitem_idを基に繋げる
    ・PDODatabase.class内の「public function insert」は、Cart.class.phpの「public function insCartData」内の「$this->db->insert」と繋がる。
    ・「public function insCartData」は、cart.php内の「$cart->insCartData」に繋がっている。
  • ●関数
    ・array_merge :一つ、または複数の配列を合体させる(マージする)
    ・array_keys :配列のキー全て、またはその一部を返す
    ・array_values :配列の全ての値を返す
    ・function insCartData :誰が何を買ったのかを挿入する
    ・function getCartData :商品情報を取得
    ・function delCartData :削除
    ・function getItemAndSumPrice :個数と合計を取得
    ・SUM(i.price) AS totalPrice :アイテムテーブルの金額を計算して合計金額を出す

「ググれ!カス」「英文読め!」「掲示板で聞け!」と言われないために

  • PHPスクール中は、必ず「質問魔」になって欲しいとお伝えしましたが、入社(入場)後は、必ず「自己解決」「自己学習」が基本となります。自己解決をする癖をつけるためにも、調べたいことを的確にヒットできるようにする必要があります。

    ●グーグル検索の仕方
    ・ダブルクォーテーションで囲んで検索:そのキーワードが書いてあるサイトだけがヒットする。まとまったフレーズの検索に便利。
    ・キーワードの後ろにハイフンを入れて検索:ハイフン以後のワードを除外した検索結果を表示してくれる。ハイフンはつなげて除外ワードを増やすことも可能。
    ・ORをいれて検索する(A OR B):AとBのキーワードのうちどちらかが含まれるサイトとキーワードすべてを含めたサイトがヒットする。
    ・あいまいな箇所に*を入れて検索(ex:世界の*で*を叫ぶ):一部分がわからない際に活用できる検索方法。
    ・related:URL で検索:検索欄に入れたURLと似たようなジャンルのサイトをリストアップして検索結果に表示してくれる。

PHPでよく使う関数

  • ・preg_rplace:マッチした文字列を別の文字列に置き換える
    ・str_replace:引数に含まれる文字列を、指定した文字列に置き換える




就職活動・転職活動について

  • 23日の無料PHPスクール(授業)終了後、就職活動・転職活動のフェーズに移ります。
    皆さんには、「最低2社の内定」を取得し、実務未経験とはいえ、「会社を自ら選べる状態」にして欲しいと思っています。
    そのため、人に寄りますが、7社~23社の企業面接に行くことになります。
    企業面接に行きながら、皆さんには「人生でこれほど悩んだことがない」というくらい悩んでいただきます。
    「悩める」ということは「選択できる余地がある」ということで、本来それだけで幸せなことなのですが、「モラトリアム」にハマってしまうのもイイことではありません。
    「悩み」とは、不安な要素がグルグル頭の中を行き来するから起こる現象ですが、悩みを一つ一つ紙に書き出すことで「見えてくる世界」があります。

思考→言葉→行動→行動→行動→行動→「習慣」→性格→運命

             *習慣=意識の深さ×反復

思考に気をつけなさい、それはいつか言葉になるから。
言葉に気をつけなさい、それはいつか行動になるから。
行動に気をつけなさい、それはいつか習慣になるから。
習慣に気をつけなさい、それはいつか性格になるから。
性格に気をつけなさい、それはいつか運命になるから。

マザーテレサ

心が変われば行動が変わる
行動が変われば習慣が変わる
習慣が変われば人格が変わる
人格が変われば運命が変わる

作者不詳

夢あるところに行動がある。
行動は習慣を作り、習慣は人格を作り、
人格は運命を作る。  

熊谷正寿

思いの種を蒔いて、行動を刈り取り、
行動の種を蒔いて習慣を刈り取る。
習慣の種を蒔いて、人格を刈り取り、
人格の種を蒔いて人生を刈り取る。

サムエル・スマイルス

心が変われば、態度が変わる。
態度が変われば、行動が変わる。
行動が変われば、習慣が変わる。
習慣が変われば、人格が変わる。
人格が変われば、運命が変わる。
運命が変われば、人生が変わる。

ヒンズー教の経典

課題作成時の注意点

  • 1.自由課題の場合、必ず「ターゲット」と「目的」を意識して作成する。
  • これはサイト制作に関わらず、ビジネス全てで言えることですが、自分のサービス・商材の質の高低というのは、「ターゲットがどう評価するか」で変わってくるからです。サイト制作に関して言えば、ターゲットが「20~30代のIT企業に勤務しているWEBエンジニア」と「60代以上の高齢者」では全然方向性が違ってきます。前者であれば、HTML5など新しい技術が必要になってくると思いますが、後者をターゲットにする場合、10年前のパソコンをそのまま使っている可能性もあるので動かない可能性がでてきます。後者のような方をターゲットにする場合には新しい技術よりも「目に優しい色使い」「シンプルでわかりやすいページ構成」「エフェクトなども極力控える(動きがあるとそれだけで目が疲れる方も多い)」「字を大きく、見やすくする」などの配慮が必要になってきます。
  • 2.言語の表記の仕方
  • 課題だけではなく、履歴書やポートフォリオなどでも「html/css」「php」「javascript」「jquery」「mysql」と書いている人はいませんか?もちろん、誤字ではありませんが、稚拙な印象を与え、あまりIT/WEB業界に慣れていない印象を与えます。正しくは、「HTML/CSS」「PHP」「JavaScript」「jQuery」「MySQL」です。「誤字」と同じ感覚を相手に与えないためにも、注意して使いましょう。
  • 3.そもそも、動かない。404エラーが発生している。
  • 「そんなバカな」と思う方が多いと思いますが、提出されたコードの一定数は「実行不能」だったりします。「提出直前にファイルをいじった」「提出時にファイルを間違えた」「実行環境をチェックしていなかった」など、理由はさまざまですが、受け取った人にとっては「動かない」という点ではみんな同じです。というわけで、「動かない」という、初歩的なミスをしないためにも、提出時は必ず実行確認をしてください。
  • 4.問題とは違う処理を書く
  • 「ははは、ご冗談を」と思う方が多いと思いますが、問題をきちんと読んでいなかったり、勘違いしたりして、求められた処理とは違うプログラムを書いて提出する人が少なからずいます。「それは問題の出し方が悪いのでは?」と言っても始まりません。相手の会社、業態、プロダクトをきちんと知っていれば「ああ、こういうことね」とわかることも少なくありません。何より、他の人がきちんと提出できているのに、あなただけが間違っていれば、それはあなたの責任です。というわけで、早合点せず、出題者の意図をきちんとくんで、適切なプログラムを書くようにしてください。
  • 5.コメントを書かない
  • 実は大きな落とし穴です。「コードを見れば、処理の内容はわかるだろう」という言い訳は通用しません。あなたは「自分のコード1人分」を提出しているのでしょうが、採用する企業の人は「大量のコード」を読むことになります。その中で、読解に努力を強いるような提出物があれば、採用の優先順位はどうなるでしょうか?何よりも、仕事はチームでするものです。あなた1人のプロジェクトを立ち上げるわけではありません。もし採用されれば、既存のチームに入って仕事をすることになります。その中で、「読み解くのに時間の掛かるプログラム」を書く人は、あまり歓迎されないのは、少し考えればわかります。というわけで、読む相手に負担を掛けるような提出物を作らず、相手がさっと読んで「うん、この人いいね!」と言えるように、適切なコメントを書くようにしましょう。
  • 6.ドキュメントを添えない
  • 「コメントを書かない」にも通じますが、読む相手に負担を掛けるのはマイナスです。そして仕事は、チームでおこなうことになります。その際に、適切なドキュメントも用意せず、プログラムだけ書き散らす人はマイナスです。仕事はあなたに属しているのはではなく、会社やチームに属しているのです。あなたがいなくなった後も、メンテナンスされ、更新されるものです。そういった「自分がチームで働いている姿」を想像して提出物を作りましょう。ドキュメントを通した「コミュニケーション能力」も見られます。特に、提出物にドキュメントが要求されている場合は、書き忘れないように注意してください。
  • 7.ひねくれたコード
  • 実力を誇示したいあまりに、トリッキーなコードを書くのはやめましょう。採用側が求めているのは、そういったプログラムではありません。きちんと動き、目的の処理を実現し、可読性がよく、メンテナンス性の高いコードです。ひねくれたコードは、応募者の自己満足でしかないので、そういったコードにならないように注意しましょう。
  • 8.一貫性のないコード
  • 「一貫性のないコード」とは、どういったコードでしょうか? それは「コピペ」満載の「つぎはぎだらけ」のコードです。こういったコードは、「ネットで情報を探して、コピペで書いた論文」と同じです。単に「実力がない」と判断されるだけです。それに、単純に「読みにくい」です。面接で、マニュアルトークではなく「自分の言葉で語る」ことが要求されるように、課題提出では「自分のコード」が大切です。自身で書いたコードで、勝負するようにしてください。
  • 9.適切なエラー対策
  • 「エラー対策」は、実務の経験がものを言う部分です。「こういった問題が起きやすい」「こんな問題には、こう対処するとよい」そういったノウハウを持っているならば、その経験を盛り込むとよいでしょう。「おっ、この人わかっているね」「へー、経験者か」と、採用者は気付いてくれます。これまでの仕事で得た経験は、上手く活用してください。
  • 10.ロジックが追いやすいコード
  • コードには、「ロジックが追いやすいコード」と「そうでないコード」が存在します。それは、書き手の整理能力だったり、論理的思考能力の反映だったりします。単純に処理を羅列するのではなく、処理の内容を整理して、読む人にもすんなりと理解できるコードを書く。そうすることで、「この人と仕事をしたい」と、コードを読んだ人に感じてもらうことができます。
  • 11.メンテナンスしやすいコード
  • コードには、「メンテナンスしやすいコード」と「そうでないコード」が存在します。環境依存になりそうな部分は、関数やメソッド化して処理を切り離したり、うまく構造化して必要に応じて拡張可能にしたり、さまざまな方法でコードのメンテナンスのしやすさは上げることができます。問題の条件や、企業の業態、プロダクトなどを見て、このコードは将来どういったメンテナンスが必要になるか。そういったことまで考えてアピールできれば、採用者の目に留まる確率は高くなるでしょう。
  • 12.適切な長さに整理されたコード
  • これは、読む側にとっては、実はかなりありがたかったりします。文章も、句読点や段落分けがきちんとおこなわれていないものを読むのは大変です。それはプログラムも同じです。適切な長さに切り、コメントが付けられ、関数やメソッドで切り分けられているコードが読みやすいです。そういった「整理されたコード」を作れる人と、作れない人では、どちらがチームの一員として仕事をしてもらうのに相応しいでしょうか?採用側や、一緒に仕事をする人の立場になって、自分の提出するコードをブラッシュアップできれば、転職もうまくいくでしょう。

プログラミングに関する、よくある質問

  • 1.タイプミス(エラー)を減らす方法はありますか?
  • プログラミングに限らず、自分自身で書いた文章の誤字脱字を見抜くのは、容易なことではありません(他人の文章だとよく気づくんですけどね)。なので、「人間はミスをするものだ」という性悪説的立場に立ち、「ミス(失敗)をしない仕組み(やり方)」を作り上げる必要があります。プログラミングに関して言うと、「文字は手で打たず、全て入力補完する」「gVimの自動インデントでズレていないかを確認する」「シンタックス(色のつき具合)を使う」です。ミスを発見するのに「よく見る」「何度も見直す」といった対策はとらないようにしましょうね。
  • 2.プログラミングソース(コード)を読むときのコツはありますか?
  • とにかく、デバッグ(変数の値をみていき、動きを追うこと)することですね。PHPではvar_dumpがあるのですが、JavaScriptはブラウザのツールが便利なのでもっと簡単にできます。重要な機能として以下のような機能があげられます。
    ・ブレークポイント(任意の止めたいポイントで処理を止められる)
    ・ステップイン(プログラムの処理を1行ずつ追うことができる)
    ・変数の中身などが自在に見れる
    こちらのURLにちょっと説明がありますので参考にしてみてください。
    https://app.codegrid.net/entry/breakpoint-1
    処理がどう動いているんだろうというのをブラウザ(Google Chromeがお奨めです)のツールで動きを1つ1つみていくのが一番理解が早いと思います。使いこなせると本当に便利です。
  • 3.優秀なプログラミングとは、どういうものですか?
  • 私が普段の業務で、意識していることは下記2点です。上司から下記、視点でプログラミングしているかをチェックされています。
    ●第三者が見た時にソースが見やすいか(可読性)
    どんな仕事でもそうですが、システム開発の仕事は他人とやることが前提になりますので、ただ動けばよいのではなく、他人が見ても、読みやすい・理解しやすい必要があります(可読性)。可読性の向上には、「コメントをしっかり入れる」「インデントをしっかりとる」などもそうですが、プログラミングの書き方でも読みにくい、読みやすいがありますので、第三者が見てわかりやすいプログラムを心掛けましょう。例えばemptyを使うと、値の存在なのか、空白チェックなのかがわかりづらいです。ただし、「読みやすさ」というのは人によって基準が違うことも事実ですので、可読性に関して、「絶対にこの方がよい」ということはありません。
    ●追加・修正へ対応できるか(保守性)
    WEBの場合、追加・修正が特に頻繁なため、追加や修正があった時に柔軟に対応できるか、否かは非常に重要です。例えば、問い合わせフォームですと「性別や年齢の項目を増やしたい」となった時に、できるだけ、元のソースを変えない方が望ましいです(保守性)。追加・修正があった時にできるだけ、少ない行数で、対応できるのが、優れたソースとなります。
  • 4.gVimの機能について、実務でよく使うコマンドや便利な機能を教えてください。
  • 超基本的なモノを除くと、私がよく使う便利なコマンドは以下です。
    ●「置換」:%s /変更される文字/変更したい文字/gc
    ●「入力補完」:Ctrl+N
    ●「画面分割」:sp(上下に分割)、vs(左右に分割)
    ●「オードインデント」:全部選んでShift =
    ●「矩形選択」:Ctlr+V→選択後Shift+I+esc
    ●「マクロ(動作の記憶)」:qa+任意の動作+q(記憶)→@a 動作の復元
  • 5.gVimの設定について、オススメの.vimrc設定を教えてください
  • 基本的に、お好みで構いませんが、以下の設定が便利かと思います。
    ●「:set number」・・・行数を表示する
    ●「:syntax on」・・・コードが色分けされる
    ●「:set tabstop=4」・・・タブの空文字の大きさですが、お好みで構いません
    ●「:set autoindent」・・・改行の際にインデントを揃えてくれる
    ●「:set smartindent」・・・autoindentと同様
  • 6.<!DOCTYPE ~内で、UTF-8と書いているのに、文字コードがjisになっている場合があります。jisで編集中の画面の文字コードをUTF-8に変えるにはどうすればよいのでしょう?
  • 文字コードは「保存」する時「表示」する時、両方で統一しなくてはいけません。
    HTMLで<!DOCTYPE~と書いても、保存した時にUTF-8になっていないと当然、文字化けします。ファイルを開いてset fenc?と打ち込んでUTF-8になっていることを確認してみてください。それでも、文字化けしている場合はスペルミスです。間違えやすい文字列は手で書くのではなく、コピペしてくださいね。
  • 7.emptyは変数が「空(カラ)」であるかどうかを判定する関数ですか?
  • emptyの判定する「空(カラ)」というのは、「空文字」「値が存在していない」「0」「false」「array()」など非常に幅広いです。emptyは便利な反面、厳密な判定はしないので、最初の方は使わない方がいいかもしれません。参考:http://php.net/manual/ja/function.empty.php
  • 8.foreach( $ A as $ B => $ C )ですが、連想配列でも多次元配列でも、常にBはそれに対応する[0],[1],[2] の部分を指すと考えていいのですか?
  • はい。$Bがキーですので、必ず[]内の値になります。ただ、0,1,とは限りません。連想配列なら、こちらは「数字」ではなく、「記号」になります。
  • 9.エラーを修正をする「手順」を教えてください。
  • 1. エラー内容が「文法エラーか?」「それ以外のエラーか?」を判定
    2. 「文法エラー」の場合は、どこかで間違っているのでそれを修正
    3. 「それ以外のエラー」は、エラーが発生している「行」を確認する
    4. 呼び出している関数を調べる
    5. 呼び出している関数の引数を調べる
  • 10.既存システムの改修の仕方を教えてください。
  • まず、既存システムの「処理の流れ」「DBへの操作」など全体を理解する必要があります。関数の呼び出し関係を「表」にまとめたり、画面遷移を「図」で描き、全体の概念図を描くようにしましょう。
  • 11.「ファイルが違う」「パスがおかしい」ということで時間が掛かっている方へ
  • 1.ファイルを整理する
    ・古いディレクトリに関しては別の場所に移す。
    PHP内で指定しているPathが古いディレクトリのファイルを指している誤りを容易に検出するために、使わないディレクトリ(shoppingとかmemberとか)は別の場所に移す。
    ・ファイルにプレフィックスをつける。
    2.古いファイルを利用する際は必ず内容を確認する
    ・各プログラムには「conf.php」があると思います。この中で、DBの名前やPWが定義されているので必ず変更してください。
  • 12.【シングルクォーテーション、ダブルクォーテーションの使い方について】エスケープ文字を使用する場合はダブルを使用するのは理解したのですが、普段使用するする際に推奨されるのはどちらでしょうか?実務ではどのように使われているのでしょうか?また、class.phpのファイル内でarrayの値を指定する際に、keyはシングル、valueはダブルを使用していますが、どのような理由がありますか?
  • エスケープ文字以外でも変数があったときに、シングルクオートは変数の展開がされない、ダブルクオートは変数の展開がされる、という特徴があります。

    $name = '山田太郎'
    echo '私の名前は$nameです。'(シングルクオート)
    出力結果 私の名前は$nameです。
    ※$nameという文字列がそのままでてしまう。

    echo "私の名前は$nameです。"(ダブルクオート)
    出力結果 私の名前は山田太郎です。
    ※$nameの変数が展開されている。

    そのため変数を文字列の中で使用したい場合はダブルクオートを使ったほうが良いです。

    そういった用途以外では若干ではありますが、シングルクオートのほうがスピードも速いためシングルクオートを使うことをお勧めします。実務でも比較的シングルクオートを使うことが一般的です。
    http://d.hatena.ne.jp/kasahi/20070815/1187201809
  • 13.【クラスのコンストラクタについて】Webで調べたところ、コンストラクタは省略可能との記載がありました。基本的に記載すべきという理解であっていますか?
  • プロジェクト内で必ず記述する、というようなコーディング規約がない限りは省略可能なものは省略して構いません。特定の引数をとるような場合は、当然コンストラクタを明記する必要があります。
  • 14.shoppingのPDO Datbaseの予習は何をすればイイですか?
  • 今までは、mysqli_connectでデータベースに接続していましたが、PDOクラスを利用していくことになります。ここに挙げる単語が《鍵》となります。文字通り、データベースに接続する《鍵》のようなものです。
    ・「$dbn」
    ・「$dbh」
    ・「PDO」
    ※nとhを見間違えないように、注意して下さいね。
  • 15.Smartyの設定と予習について教えてください。
  • Smartyをダウンロードして、フォルダをhtdocsに置いてください。また、Smartyまでのファイルパスがmacの場合は、教材(資料)と異なります。
    /Apprications/XAMPP/xamppfiles/htdocs/smarty/libs/smarty.ini.phpとなります。
    フォルダは手作りで、htdocsに、templatesとtemplates_cの2つのフォルダを作成します。templatesの下にshopping(boardの場合にはboardディレクトリを作成)というフォルダを作成。templates_cの下には何も置きませんが、こちらのフォルダはパーミッションを777にしておいてください。
    chmod 777 templates_c
    .tplのファイルはtemplates/shoppingの中に置きます。ファイル同士の繋がり合いは、これから増えてきますので、少しずつ慣れていくと後々の負担も減ってくると思います。また、smartyの基本は、『assignで渡して、displayで表示』です。これを3回くらい唱えておくといいかもしれません。
  •  
  • 16.クラスでファイルを命令とデータに分けているのに、Smartyでまた分ける意味がいまいちわかりません。
  • Smartyの利用場面に関してですが、MVC(モデル、ビュー、コントローラ)と分けて作成を行って行く際のビュー(表示に関わる部分)を担当させます。
    1枚の絵を完成させるとき、筆や紙など材料となるものがMやCです。実際に、絵として見える部分がVです。画家は筆から作るわけではないですよね?表示に関して担当しています。
    プログラムも同様に、データベースの設定など、基盤となるプログラムを作成する立場の人、そしてHTMLなど表示に関わる部分を担当する人が別れることがあります。
    HTMLの中でPHPの変数を使用するためには、開始タグを書かなくてはなりませんが、Smartyは独特の記述法でHTML文書の中にPHPプログラムを混在させやすくできます。
  •  
  • 17.shoppingの中で、「i.crt」や「c.crt」の記載がありますが、「i」や「c」の意味を教えてください。
  • 「i」や「c」は、所属しているテーブル名(の略称)で、「c.crt」は「cartテーブルのcrtカラム」という意味です。リレーションを扱う場合に、どのテーブルのカラムかを識別するために使います。テーブル名をそのまま使うことも可能ですが、長くなるので、省略されることが多いです。
  • 18.個々のコードの理解はできるのですが、それらが組み合わさった時に理解できなくなります。
  • まず、個々のコードを理解することが前提になりますね。次は、SQL、HTML、CSS、JavaScriptなどとの連携、そして、ファイル間の連携(の流れ)を理解していくことが大切になります。

コーディング時に気を付けるべきこと

プログラマとしては書いたソースはただ動けばいいのではなく、常にレベルの高いソースを書くことを心がけたほうが良いです。ただし、どんなソースがレベルが高いのかということは当然最初のうちはわかりません。

また一般の仕事と同様、人や現場によって異なりますが、以下のような点は初歩的かつ一般的な考え方なので学習し始めの段階で意識しておくと後々のレベルアップにつながります。

  • a. 変数名、メソッド名はわかりやすく
  • 変数の命名は非常にセンスが問われるポイントです。
    わかりやすい変数名をつければそれだけソースを理解する時間を短縮できます。 $data,$nameなどの汎用的過ぎる変数名はなるべくさけましょう。

    汎用的な名前は何を表しているのか理解するのに時間がかかるため、なるべく具体的につけたほうがいいです。 この点はメソッドも同じで、どんな動きをしているのかがすぐにイメージできるような変数名をつけることが大切です。

    また我流でつけるのではなく、一般的にはどんなつけ方をするのかを知っておくとよいでしょう。

    (参考リンク参照)
    「プログラミングで変数名や関数名のネーミングに迷ったときに便利なカンニングペーパーまとめ」
    https://nelog.jp/programming-words

  • b. ネスト(プログラムのへこみ)はなるべく浅く(できれば2段以内)
  • ネストが深くなればなるほど、処理が複雑になり、理解するのが難しくなります。複雑な条件分岐がある場合はメソッドを分けるなどして、ネストが増えないように工夫しましょう。

  • c. できるだけ短いメソッドを作るようにしよう(目安30行以内)
  • 長いメソッドは
    ・理解するのに時間がかかる
    ・複雑な処理が絡み合っている
    ・同じ処理が再利用しにくい
    ・テストが難しい
    など様々なデメリットがあります。

    原則としてメソッドでは1つの処理だけをするようにしましょう。その意識をもてば自然と行数が短くなるはずです。 目安としてコメントをいれても30行以内におさえるようにしましょう。

    一般論ですが、30行以上になっている場合、2つ以上の処理を同一メソッド内で実行しようとしている可能性が高く、分けたほうがよいです。

  • d. フォーマットに敏感になろう
  • 一般的な書類でも、文体やフォーマットなど書き方が統一されていないとみにくく、品質が低いと感じられます。

    ソースにおいて同様でif文の中括弧の位置やスペースの有無、インデントなどが統一されていないと中身を見る前に「ダメなソース」判定をされてしまいます。

    フォーマットに関する部分は直接動きにかかわる部分ではないですが、細かい部分で評価を落とさないようにしましょう。

  • e. 常に再利用、共通化を考える
  • システム開発では仕様が変更になり、修正が入ることが一般的なため、いかに変更に強いソースをかけるかがとても大事になってきます。

    似たような処理があれば共通化し、常に別の場所から呼び出される前提でソースを書くのが望ましいです。同じような処理を2カ所以上に書いてしまったら、常に「まとめられないかな?」「共通化できないかな?」ということを意識していると変更に強いソースを書くことができます。

    難しくいうと抽象化するということですが、この視点をもてるほどレベルの高いソースを書くことができるようになります。

  • f. 他人のソースを積極的に読む
  • いいソースを書くために必要なことはたくさんのソースを書くことと、もう一つはたくさんのソースを読むことです。スポーツ同様、自分でプレイするだけでなく、他人のプレイをみて学ぶことも非常に大切になってきます。

    特にオープンソースなどで公開されているソースは比較的レベルの高いものが多く、参考になることが多いです。またダメなソースを保守したりすると、変更が非常に大変で、様々な問題が起こるため、反面教師にもなります。

  • g. 良書で正しいソースの書き方に触れる
  • ソースをたくさん書いたり、読んだりしても、なぜこのように書くのか?がわからなかったりします。その場合正しいソースの書き方について理論的に書かれた本などを読んでおくと理解力が一段と深まります。

    おすすめの書籍
    「良いコードを書く技術 -読みやすく保守しやすいプログラミング作法 」
    初心者向け~中級者向け 対話形式で書かれており、大変わかりやすいです。

    「リーダブルコード」
    初心者向け~中級者向け こちらもかなり基礎的なことから書かれており、正しいソースの書き方などでは常に推薦されている本です。こちらも常に手元において正しいソースの書き方などを勉強できるようにしておくとよいです。

    「客先常駐」で、気をつけるべき8つのこと

    • 1.「会社の社員として、会社の代表として、客先常駐する」ことを意識(行動)する。
    • 2.「会社があなたに何を学んで欲しいのか?何を経験して欲しいのか?」を理解する。
    • 3.エンジニアですから、「技術」は絶対必要(大事)です。しかし、極論ですが、「技術」よりも「仕事をどう進めるか」という「心構え」の方が、もっと大切です
    • 4.エンド顧客が求めているのは「技術(システム開発/インフラ構築)」ではなく「課題の解決」
    • エンド顧客および、会社があなたにお願いしたいのは「顧客が直面している課題を解決すること」です。(例:コスト削減など)。そういったことのできる人材がレベルの高い人材です。これは当たり前のようでいて、全く当たり前ではなく、エンジニアはついつい技術的にレベルが高いことに関心が行きがちです。エンジニアとして真面目な方、向上心のある方ほど、特にそういう傾向が見られます。ですが、顧客の課題解決にとって、役に立たなければ、「ただの自己満足」になってしまいます。自分が興味のない分野に関して、専門家に頼むことを考えればよくわかるかと思います。ですので、まずやるべきは、「顧客(現場)の仕事に興味を持ち、悩みを理解すること」「その悩みを解決するのに、最適な手段を考えること」です。その解決の手段として「プログラミング技術」や「インフラ構築技術」があります。
    • 5.世の中に絶対に正しいルールは存在しない。その場のルールが正。
    • プログラムの書き方や仕事の進め方など、一応セオリー的なものはあるにせよ、現場・現場によってバラバラです。自分にとって、間違っていると思っていても、周りの人がそれを正しいと思っている場合、そこで発生しているルールが「正」になります。また、どんなルールにも良い面、悪い面が必ずありますので、「自分の考えに固執しない」ようにしましょう。「前の現場では、こうだったんですけど・・・」というのは一番嫌われる言葉の1つですので、絶対に言わないように。ただ、周りが困っていて、自分が解決できるようだったら、改善策の提案として、「~してみてはどうですか?」と言ってみるのは良いことです。(ただし、伝え方には気をつけましょうね。)
    • 6.言われなくても、情報の共有は必ず行う
    • 1人で仕事を進めているわけではないので、自分が担当している分野の進捗はたとえ強制されなくても、必ず上司に報告しましょう。上司からすると、今仕事の状態がどうなっているかわからないのが、一番マズい&怖いです。また、具体的なことでいうと、特に仕様の把握に関しては、しつこく確認した方が良いです。(経験上、この部分のトラブルが一番多いです。)日報などの業務記録は備忘録として自分自身のために書くと良いです。バージョン管理ツールなどありますが、それ以外でも、いつどんな処理を書いたのか、どんな対応をしたのか、ある程度正確に残しておくと将来、自分を助けてくれます。
    • 7.上司が最も望むのは、自分の代わりに仕事をしてくれる人
    • 上司からすると、意図を汲み取って、自分の代わりに仕事をこなしてくれる人がもっとも欲しい人材です。そうすれば、自分の労力を他のことに割り振ることができますし、いい意味でラクができるからです。人に指示をいちいちして、仕事をさせるのは、ものすごく疲れる&ストレスがたまります。また一部の人を除くと、そういうことが得意な人&好きな人はほとんどいません。何をさせたらいいかわからない、となることが多いからです。上司を楽にするためにも「自分に要求されているのは何か」を考え、積極的に仕事をこなすようにしましょう。ただし、スタンドプレイはもちろんダメなので、判断を仰ぐところはしっかりと確認しましょう。
    • 8.最後は、人間関係が評価を決める
    • 当たり前ですが、人間がやることなので、最終的には「好きな人」「仕事をしていて気持ちのいい人」と仕事をしたいと思います。付き合いや最低限のマナーなどに気をつけることは大事ですが、単純に「仲良くなる」方があらゆる面でお互いにトクです。また、「我儘」「自分勝手」ではなく、「自分のために」「自分がやりやすいように」周囲のリソース(人)を上手く使うことが大切です。
    •    

    「鬱」にならず、会社で活躍するために大事な5つのこと

    • 1.「こうすべきだ」と決めつけない。
    • 2.物事に対して、極端に白黒つけない。(いろんな意見があって、当たり前。)
    • 3.一度の失敗や良くない出来事にとらわれない。(もちろん、「反省」は大事です。)
    • 4.悪い方に、深読みし過ぎない。(相手の気持ちや考えを慮ることは重要だが。)
    • 5.何でも自分だけの責任、自分の非のように感じない。(社会人として、「他責」ではなく「自責」は必須。だが、「自分を責めること」や「懺悔」ではない。次、同じ事が起こらない・起こさせないための「反省(=新たな習慣や仕組み作り)」をする。)
    •    
    • 仕事で成長することはもちろん大切ですが、心身の健康というのはかけがえのないものです。
    •   

    プログラミング未経験のボクが、23日間の無料PHPスクールでECサイトをつくってみた

    • あの、ドリーム・シアターさんですか? 23日間でプログラミングが学べると聞いて……
      未経験なんですが、大丈夫でしょうか?
      「大丈夫ですよ! ぜひ説明会にお越しください!」
      と言われたので行ってみた。
    • ●説明会当日
      「LAMPという開発環境で、問い合わせフォーム、掲示板、会員登録サイト、ECサイト、あと、ご自身で作りたいWebサイトを開発していただきます。使用する言語は主にPHPです。PHPスクールが始まるまでにXAMPPとgVimをインストールしておいてくださいね」

      よくわかりません。

      「今はわからなくても大丈夫です。そのうち、わかってきますので」

      とりあえずメモって帰ります。LAMP、XAMPP……

      「一般的なITスクールでは、構文や文法をひとつひとつ説明するところから始めますが、無料PHPスクールでは、まずソースコード全体(完成形)をみていきます。つまり、『単語→構文→文章』ではなく、『文章→構文→単語』ということですね。プログラムの中でそれぞれの構文や文法がどのように機能しているかは、慣れてくれば自ずとわかってきます。23日間で実務3ヶ月のレベルを目指しますので、とにかく『慣れてもらうこと』を優先しています」

      約3週間で3ヶ月のレベルに、ですか。大変そうですね。

      「大変ですよ~。課題、予習、復習に追われる毎日になりますから。覚悟していてくださいね(笑)
      ただし、皆さんが『できる』ようになっていただくのが、この無料PHPスクールの目的ですので、『教材を渡して、一人でやってください』という授業ではないので、ご安心ください」

      とりあえずやってみます。
    • ●PHPスクール1日目:とにかく書き写す(まずは慣れること)
      「スクールの期間中、gVimを使って見本のプログラムをひたすら書き写していただきます。それから、わからないことは、どんどん質問してくださいね。就職後は『自己解決』が基本ですが、スクール中は『理解した気にならない』で、どんな些細なことでも質問・確認してくださいね」

      これ全部書き写すんですか?

      「はい。意味がわからなくても、とにかく書き写してくださいね」

      書き写したんですけど、表示されません。なんか、英語でエラーが出てます。

      「正しくコードが書けていないとエラーが出ます。よく注意して書いてくださいね。次回までに3回、家で書き写してきてください」

      …… (無理です)
    • ●PHPスクール2日目:エラーの原因探しは見当をつけて
      「今日は問い合わせフォームをつくっていきます。みなさん、コードはもう書き写していますね」

      はい、書き写したんですけど、またエラーが出てます。

      「よーく見てください。 “;” が抜けていたり、 “{ }” が対応していなかったりしませんか?」

      よーく見てますが、何が抜けているのかわかりません。ううッ、寝不足で目がショボショボしてきました。

      「エラーリストがありますので、それを見ながら、もう一度探してみましょうか?」

      (1時間後)

      見つかりました! “ } ” がひとつ抜けていました。

      「よくあるエラーの原因ですね。これで次から注意しながら書けそうですね」
    • ●PHPスクール3日目:自ら調べることは上達のカギ
      「今日はPHPからMySQLにアクセスしてデータベースを管理していきます」

      “query” って何ですか?

      「“query” とは、ここではデータベースへの命令のことです。 “mysqli_query” はデータベースへの命令を実行する関数です」

      新しく覚えることが多くてついていけません。

      「わからない語があれば、PHPマニュアルのサイトで調べて予習しておきましょう。そうすれば授業がもっとわかるようになりますよ」

      はい、がんばります。
    •    
    • ●PHPスクール4日目:わかったつもりにならない
      「『オブジェクト指向』という言葉は聞いたことがありますか?」

      はい。イヌが「わん」、ネコが「にゃあ」と鳴くことです。予習してきました。

      「考え方は合っていますが、その説明ではちょっとわかりにくいですね。プログラミングにおける『オブジェクト指向』とは、変数や関数をひとつのまとまりとして扱うことで、管理しやすくすることです。(続きはPHPスクールで)」

      イヌとネコの例ではよくわからなかったはずです。

      「Smartyを使って、機能ごとにファイルを分割して管理することができます。これをMVCモデルと言います」

      テンプレートファイルのコードがわかりません。

      「Smartyのテンプレートファイルでは、関数や変数の表記が変わります。PHPから書き換えができるように復習しましょう」

      覚えることが多すぎて、もうお腹いっぱいです。吐きそう……

      「今日で折り返し地点です。ここまで来たら、あきらめずに最後までがんばってくださいね」
    • ●PHPスクール5日目:些細なことでも質問すること
      「今日はJavaScript、jQueryを使った動的なサイトと、Linuxコマンドをみていきます」

      まだ新しく覚えることがあるんですか。最近、夢にコードが出てきて、うなされるようになりました。

      「夢にコードが出てくるのは、よい兆候ですねぇ(笑)。新しい内容は今日で最後ですので、もう少しがんばりましょう」

      先生、JavaScriptとJavaは違うんですか?

      「はい。ぜんぜん違いますので、混同しないように注意してください。面接で、JavaScriptをJavaと言わないように」

      はい、気をつけます。

      「JavaScriptは、HTMLに組み込んで動的な表示を可能にするスクリプト言語です。 “onClick” はマウスでクリックした時の処理を記述しています。他にもたくさんあるので、調べてみると面白いと思います」
    • ●PHPスクール6日目:複雑なプログラムほど、まずは全体を把握する
      「今日は会員登録サイト、7日目はショッピングサイトをつくります。ファイルの数が多いので、しっかりと予習してきてくださいね」

      ファイルが多すぎて、何がなんだかわかりません。とりあえずコードを書き写すだけでクタクタです。

      「細部よりも全体を見渡すように、まずはそれぞれの処理の全体像を理解していきましょう」

      『木を見て森を見ず』ではよくないということですね。

      「まずは森全体を見渡すところから始めてください」
    • ●PHPスクール7日目:関連する関数をたどって
      先生、書き写したコードのどこが間違っているのかわかりません。徹夜で3回も見直したのに、まだエラーが見つかりません。

      「ファイルを分割した場合、エラーを特定しにくいです」

      じゃあ、どうすればいいんでしょう?

      「それぞれのファイルは関数でつながっています。関連する関数をたどってください。特に、データベースの表示に関する関数や、引数に間違いがないか確認しましょう」

      わかりました。やってみます。
    • ●PHPスクール8日目:勉強は始まったばかり
      「会員登録サイトとショッピングサイトは、無料PHPスクールで学習したことの集大成です」

      これができれば1人前のプログラマーですね!

      「自分でプログラムを書けるようになったら1人前です」

      ボクも自分でECサイトを開発して、面接に持っていきます。

      「今日でPHPスクールは終わりですが、プログラミングの勉強は始まったばかりです。これからも勉強を続けていってくださいね」

      23日間、あっという間でした。途中もうダメだと何度も思いましたが、続けられたのは切磋琢磨したスクールのみんなと先生のおかげです。(涙)
    • ●無料PHPスクールを終えて
      ということで、未経験からECサイト構築を経験するまでの怒濤の23日間を終えた。代表の中田さんが「非常識」と自認するカリキュラムは、とにかく課題、予習、復習の量に圧倒される。23日間の内、授業自体は8日間だが、1日たりとも休んでいる暇はなかった。
      さらに、プログラミングだけでなく、就職活動に向けた面接対策まで指導してもらえる。短期間でこれほど充実したITスクールは他にはないだろう。未経験だからとあきらめるのはまだ早い。強い意志を持つあなたなら、プログラマーになれるチャンスがきっとあるかも。
      (終)
    •   

    知識の定着(体得)を行う、「PHPスクール~知識定着編」のご案内

    • ●<サービス内容>各個人の独自Webアプリ(成果物)開発をサポート
      Web開発に必要な基礎知識は、PHPスクール(8日間)内で、全て学んで頂いていますので、知識定着編では、「ひたすら使いこなす時間」を作り、「知っている(知識)⇒出来る(行動)」の「知識の定着(体得)」を行っています。
      システム設計サポート:ご自身で、設計(画面設計/機能設計/DB設計)したものに関して、機能のレビューや、より良いDB構造のアドバイスなどのサポートを行います。
      システム開発サポート:「開発した機能が上手く動かない」「エラーやバグが解決出来ない」「機能の実現方法が分からない」といった問題解決のサポートを行います。
      ネット公開サポート:本番サーバアップに関するサポートを行います。
    • ●<目指すゴール>
      「簡単なWebサイト/アプリであれば、設計から開発、サーバ公開まで一人でできる(70点)」レベルになる。
      ・(基本的なものであれば)、1人でエラーを潰せる。
      ・配列の操作が、自由自在にできる。
      ・基本的なクラスを、設計し使える。
      ・セッションを使える。
      ・大まかにでも、MVCモデルにソースを分けられる。
      ・DB作成→テーブル作成が適切にできてselect/insert/update/deleteがスラスラと書ける。
      ・リレーションを使ったテーブル操作ができる。
      ・集計など基本的な算術計算が使える。
      ・Linuxの操作(主に、ファイル操作と検索)ができる。
      ・パーミッションやユーザー権限のエラーを解決できる。

      プログラマーとしての「入口」が、合格ラインになります。
      ・フォローを貰いながらも、何とかプログラマーとして仕事ができる。
      ・ここまでできれば、簡単なモノから何とか仕事に慣れさせていける。(仕事がふれる、部下として何とか使える)
    • ●期間:2ヶ月(6回、毎週土曜日)
      ●時間:13時~19時(6時間)
      ●料金:48,000円(税別、内訳:6回×8,000円)
      ●人数:3~7人
    •   

    【期間限定】【無料PHPスクール参加者限定】友達紹介キャンペーンのご案内

    • 「無料PHPスクール」で就職先が決定された方限定で、「必ずもらえる!」紹介キャンペーンを実施しています。ご紹介者様とお友達、双方に10,000円のギフト券(全国百貨店共通商品券)を進呈させていただいております。
    • ●開催期間:2015年9月~2016年3月
      <キャンペーンの流れ>
      ・「無料PHPスクール」にお友達をご紹介ください
       ↓
      ・無料PHPスクール説明会に参加 (※ご紹介者様のお名前を必ずお伝えください)
       ↓
      ・無料PHPスクール参加および就職先決定(内定)、入社
       ↓
      ・ご紹介者様と就職決定者様(お友達)、双方に10,000円のギフト券進呈!

      IT/Web業界での就職・転職をお考えのご友人・お知り合いの方がいらっしゃいましたら、ぜひご紹介をいただけましたら幸いです。
      ※大変申し訳ございません。有料参加の方は、本キャンペーンの対象外となります。
    •   
    説明会お申し込みフォームへ進む
    株式会社ドリームシアター お電話でのお問い合わせ
    • 090-3509-3242

    株式会社ドリームシアター
    • 卒業生の声
    • 説明会お申し込み
    • 「非常識な」スクール
    • スケジュール
    • カリキュラム・講師紹介
    • 卒業生の声
    • よくある質問
    • 転職相談ならDTにおまかせ 経験者の転職求人紹介はこちらから
    ページトップへ