自己紹介
- 当方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つを理解しました
- 開発する上でフレームワークは必須なので覚えておきましょう
以上、私がプログラムの経験を積むために行った課題です。
これからプログラムを勉強しようとしている人に、この記事が参考になれば幸いです。
課題に関して質問等があれば可能な限り答えていきます。