自己紹介
- 当方1年目の新人プログラマ
 - 使用言語はPHP
 
内容
未経験で開発会社に入社した際に、上司から「確実にスキルがつく鉄板の課題だからやっておいてね」と言われて出された課題を記載しています。
※なお、私はこの課題をPHPで作ったので、他の言語でスキルが上がるかどうかはわかりません。
11/24追記 LEVEL7を追記しました。
LEVEL
LEVEL0:FizzBuzz
仕様
- なし(どういうものかはググってね)
 
目的
- if / for 文を理解したかの確認
 
LEVEL1:計算機
仕様
- 四則演算ができること
 - 括弧を含んだ計算ができること
 - 負の値も計算できること
 - 一気につくるのではなく、四則演算->括弧->負の値 の順番で作ること
 
目的
- 勉強した基礎知識(ifやfor等)をアウトプットする
 - PHPで定義されている関数を使ってみる
 - データ型についても学べる
 
LEVEL2:一行チャット
仕様
- 必要項目
 - 名前(未入力の場合は汎用的な名前を自動挿入(2ちゃんねるの「名無し」みたいな))
 - 投稿日時(フォーマットは 年/月/日 時:分:秒)
 - 本文
 - 画像投稿機能を実装
 - 日付毎、名前毎にフィルタリング機能を実装
 - ページネーションを実装(「< 1 2 3 ... >」「<前へ 次へ>」どちらでも可)
 - チャットのログはテキストファイルに保存
 
目的
- ファイルの保存、読み込み、編集を学ぶ
 - 現在日時の出力方法を学ぶ
 
LEVEL3:カレンダー
仕様
- 初期表示は現在日時の月を表示
 - 指定した月のカレンダーを表示
 - 土曜日は青、日曜祝日は赤で表示する
 - 指定した月日を祝日扱いにする(指定する月日はプログラム内に直接書き込んで良い。また振替休日等祝日のずれは考えないものとする)
 
目的
- 現在だけでなく過去や未来の年月日を出力する方法を学ぶ
 
LEVEL4:住所録
仕様
- 必要項目
 - id
 - 氏名
 - カナ氏名
 - 登録日時
 - 変更日時
 - 郵便番号
 - 住所
 - 電話番号
 - 備考(複数行テキスト)
 - データの保存はデータベースを使う(初心者にはMySQLがオススメ)
- なお、ここから先の課題でデータを保存する際はデータベースを使うこと
 
 - 登録、変更、削除ができること
 - 10件ごとにページネーションで区切る
 - カナ氏名、住所で検索できる機能を実装
 - カナ氏名でのソート機能を実装
 
目的
- データベースの使い方を学ぶ
 - ソートの使い方を学ぶ
 
LEVEL5:おみくじ
仕様
- ランダム関数を使い、おみくじをつくる
 - ただし、ただランダム関数を使うのではなく、一捻りしてなるべく偏りがなくなるようにする
- 具体的には回数の平均値の誤差を10%以内にする
 
 
目的
- ランダム関数の仕様を学ぶ
 
LEVEL6:ツリー型掲示板
仕様
- ある書き込みに対してのレスはインデントをつけること
 
目的
- これまでの課題の復習
 - ロジック(処理)を作る練習
 
LEVEL7:フレームワーク・テンプレートを使う
仕様
- 今まで作ったものをフレームワーク・テンプレートを使って作り直す
 - 元のプログラムは流用可
 - エラーを出さずに組み込むこと
 - Noticeも不可
 - フレームワークは何でもいいけどCakePHPがオススメ1
 - 逆にLaravelは初心者が手を出すとしんどいらしいのでオススメしない
 - CakePHPが一番情報が多いので躓きにくいとのこと
 - テンプレートエンジンはSmartyを使うこと1
 
目的
- オブジェクト志向のプログラミングを理解する
 - MVCモデルを理解する
 - 私はこのサイトで上記2つを理解しました
 - 開発する上でフレームワークは必須なので覚えておきましょう
 
以上、私がプログラムの経験を積むために行った課題です。
これからプログラムを勉強しようとしている人に、この記事が参考になれば幸いです。
課題に関して質問等があれば可能な限り答えていきます。