PHP
初心者
新人プログラマ応援

プログラムの勉強をしたいけど何を作ったらいいか分からない人へ

More than 1 year has passed since last update.


自己紹介


  • 当方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


目的


以上、私がプログラムの経験を積むために行った課題です。

これからプログラムを勉強しようとしている人に、この記事が参考になれば幸いです。

課題に関して質問等があれば可能な限り答えていきます。





  1. 私の職場では独自のフレームワークとSmartyを使っているので、それらを使いました。