「PHPが好きでエンジニアを目指しているけど、どんなポートフォリオが作れる?」
「ポートフォリオ作成のポイントが知りたい!」
この記事では、Javaを使ったポートフォリオのポイントや準備事項、PHPを使ったポートフォリオの例まで徹底的に解説します。
また、未経験者におすすめのポートフォリオ制作に特化したスクールや転職エージェントについても紹介しています。
ポートフォリオを作成する前に一読してほしい内容です。それでは早速見ていきましょう!
エンジニア転職にポートフォリオが必須な理由
エンジニア転職にポートフォリオが必須な理由は以下の3つです。
- 開発スキルや実績の証明に必要だから
- 企業とのミスマッチを防げるから
- 未経験の場合だとポートフォリオなしに転職活動ができないから
それでは一つずつ解説していきます!
理由①:開発スキルや実績の証明に必要だから
就職・転職の際にポートフォリオを提示するだけで、持っているスキルが一目で伝えることができます。
ポートフォリオは、資格や言葉ではわからない技術力を面接の時にアピールできるメリットがあります。
また、プログラミング未経験者や別の業種からIT業界に転職する方は、ポートフォリオを作成すれば面接時の話の種にもなるでしょう。
IT業界で働きたい方がポートフォリオを作成することで、面接などで有利に働くことが多いと言えます。
理由②:企業とのミスマッチを防げるから
企業の採用面接官の立場からすると、どのようなスキルを持っているのか口頭だけではわからない場合が多いです。
そのときに、ポートフォリオがあれば、応募者のスキルと企業側が求めるスキルとのミスマッチがないか確認することができます。
応募者側としても、入社してから自分が培ったスキルとは異なる仕事ばかり任され、困る心配も少なくなるでしょう。
このように、ポートフォリオを作成すれば企業とのミスマッチを防ぐことができます。
理由③:未経験の場合だとポートフォリオなしに転職活動ができないから
IT未経験からエンジニアへ転職する場合、企業によってはポートフォリオの提出が絶対であるところも多いです。
ポートフォリオによって、面接をする前に自社に合ったスキルや実績を持つ人物なのかどうか判断されます。
未経験の方であれば、独学でポートフォリオを作成するのではなくプログラミングスクールに通って、現役エンジニアから的確なアドバイスをもらうようにしましょう。
おすすめのPHPポートフォリオ例
おすすめのPHPポートフォリオ例を5つ紹介します!
- お問い合わせフォーム
- ショッピングサイト構築
- SNS開発
- 業務システム
- WordPressのプラグイン
それでは一つずつ解説しますね!
例①:お問い合わせフォーム
お問合せフォームやメールフォームは、プログラミング未経験の方がPHPに慣れるために作成してほしいポートフォリオです。
作成手順も至ってシンプルで、HTMLで記述後PHPを使うといった流れです。
具体的には、まず、HTMLでテキストボックスやボタンなどの部品を用意します。項目には、名前やメールアドレス、お問合せ内容などを用意するとよいでしょう。そして、PHPを使ってHTMLの送信ボタンを押したときの処理を作ります。
まず、HTMLの部分です。
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
- <title>sample</title>
- </head>
- <body>
- <form action=”confirmation.php” method=”post”>
- 名前:<br />
- <input type=”text” name=”name” size=”50″ value=”” /><br />
- メールアドレス:<br />
- <input type=”text” name=”mail” size=”50″ value=”” /><br />
- 問合せ内容:<br />
- <textarea name=”inquiry” cols=”50″ rows=”5″></textarea><br />
- <br />
- <input type=”submit” value=”送信” />
- </form>
- </body>
- </html>
次に、PHPの部分です。
- <!DOCTYPE html>
- <html>
- <head>
- <meta http-equiv=”Content-Type” content=”text/html; charset=utf-8″ />
- <title>sample</title>
- </head>
- <body>
- <h2>問合せ内容</h2>
- <form action=”mailto.php” method=”post”>
- <table border=”1″>
- <tr>
- <td>名前</td>
- <td><?php echo $_POST[“name”]; ?></td>
- </tr>
- <tr>
- <td>メールアドレス</td>
- <td><?php echo $_POST[“mail”]; ?></td>
- </tr>
- <tr>
- <td>問い合わせ内容</td>
- <td><?php echo $_POST[“inquiry”]; ?></td>
- </tr>
- </table>
- <input type=”submit” value=”送信” />
- </form>
- </body>
- </html>
上記プログラムコードを参考に、オリジナルの問い合わせフォームを作ってみましょう。
例②:ショッピングサイト構築
今流行りのショッピングサイト構築は需要が高まってきているため、PHPをアピールする材料として非常に効果的と言えます。
ECサイトの表部分である、商品の表示・カートに追加・購入部分と、裏側となる商品の追加・修正・削除などの管理部分を連携します。
この記事では、Bootstrapを使ってECサイト構築していきます。ちなみに、Bootstrapにはテンプレートコードがいくつか用意されているので参考にしてみてください。
まず、index.htmlに下記コードを貼り付けます。
- <!doctype html>
- <html lang=”ja”>
- <head>
- <!– Required meta tags –>
- <meta charset=”utf-8″>
- <meta name=”viewport” content=”width=device-width, initial-scale=1, shrink-to-fit=no”>
- <!– Bootstrap CSSの読み込み –>
- <link rel=”stylesheet” href=”https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css” integrity=”sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z” crossorigin=”anonymous”>
- <title>Bootstrap Practice</title>
- </head>
- <body>
- <!– Optional JavaScript –>
- <!– jQuery first, Popper.js, Bootstrap JSの順番に読み込む –>
- <script src=”https://code.jquery.com/jquery-3.5.1.slim.min.js” integrity=”sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj” crossorigin=”anonymous”></script>
- <script src=”https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js” integrity=”sha384-9/reFTGAW83EW2RDu2S0VKaIzap3H66lZH81PoYlFhbGU+6BZp6G7niu735Sk7lN” crossorigin=”anonymous”></script>
- <script src=”https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js” integrity=”sha384-B4gt1jrGC7Jh4AgTPSdUtOBvfO8shuf57BaghqFfPlYxofvL8/KUEfYiJOMMV+rV” crossorigin=”anonymous”></script>
- </body>
- </html>
- 次に、ナビゲーションメニューを作成します。タグの下に下記コードを張り付けてください。
- <!– ナビゲーションメニュー –>
- <nav class=”navbar navbar-expand-lg navbar-light bg-light”>
- <a class=”navbar-brand text-dark” href=”#”>Portfolio</a>
- <button class=”navbar-toggler” type=”button” data-toggle=”collapse” data-target=”#navbarNavAltMarkup” aria-controls=”navbarNavAltMarkup” aria-expanded=”false” aria-label=”Toggle navigation”>
- <span class=”navbar-toggler-icon”></span>
- </button>
- <div class=”collapse navbar-collapse” id=”navbarNavAltMarkup”>
- <div class=”navbar-nav “>
- <a class=”nav-link text-dark” href=”#”>Home <span class=”sr-only”>(current)</span></a>
- <a class=”nav-link text-dark” href=”#skill”>Skill</a>
- <a class=”nav-link text-dark” href=”#works”>Works</a>
- <a class=”nav-link text-dark” href=”#contact”>Contact</a>
- </div>
- </div>
- </nav>
そして、最後に、画像と文字が合わさった「カード」と呼ばれるものを実装してみましょう。下記コードをナビゲーションメニューのコードの上に張り付けてください。
- <!– カード –>
- <div class=”container py-4″ id=”works”>
- <h2>Works</h2>
- <p>This is sample description.This is sample description.This is sample description.This is sample description.This is sample description.This is sample description.</p>
- <div class=”card-deck”>
- <div class=”card”>
- <img src=”img/sample4.jpg” class=”card-img-top” alt=”…”>
- <div class=”card-body”>
- <h5 class=”card-title”>Work1</h5>
- <p class=”card-text”>This is sample description.This is sample description.This is sample description.This is sample description.</p>
- <p class=”card-text”><small class=”text-muted”>Last updated 3 mins ago</small></p>
- </div>
- </div>
- <div class=”card”>
- <img src=”img/sample4.jpg” class=”card-img-top” alt=”…”>
- <div class=”card-body”>
- <h5 class=”card-title”>Work2</h5>
- <p class=”card-text”>This is sample description.This is sample description.This is sample description.This is sample description.</p>
- <p class=”card-text”><small class=”text-muted”>Last updated 3 mins ago</small></p>
- </div>
- </div>
- <div class=”card”>
- <img src=”img/sample4.jpg” class=”card-img-top” alt=”…”>
- <div class=”card-body”>
- <h5 class=”card-title”>Work3</h5>
- <p class=”card-text”>This is sample description.This is sample description.This is sample description.This is sample description.</p>
- <p class=”card-text”><small class=”text-muted”>Last updated 3 mins ago</small></p>
- </div>
- </div>
- </div>
- </div>
また、先ほど開設した問い合わせフォームと組み合わせてみても魅力的なサイトが完成することでしょう。ぜひ、自分でアレンジしてみてくださいね!
例③:SNS開発
ど定番のポートフォリオです。未経験者がPHPを使って何かアプリを制作するならまず初めに取り組んでもよいでしょう。
SNSのポートフォリオに関する知識やフレームワークであれば、Qiitaをはじめとする技術系ブログでたくさん紹介されています。
データベースの作成やconfigファイルの設定などの環境構築を完了させた後、ログイン機能をつけていきます。
- $ php artisan migrate
- $ php artisan make:auth
モデルとマイグレーションファイルを作成します。
- php artisan make:Model Tweet –migration
- <?php
- どのユーザーがツイートをしたかというのを知るために、user_idカラムの追加、ツイート内容を保存します。
- use Illuminate\Support\Facades\Schema;
- use Illuminate\Database\Schema\Blueprint;
- use Illuminate\Database\Migrations\Migration;
- class CreateTweetsTable extends Migration
- {
- /**
- * Run the migrations.
- *
- * @return void
- */
- public function up()
- {
- Schema::create(‘tweets’, function (Blueprint $table) {
- $table->bigIncrements(‘id’);
- $table->integer(‘user_id’); // <— 追加
- $table->text(‘tweet’); // <— 追加
- $table->timestamps();
- });
- }
- /**
- * Reverse the migrations.
- *
- * @return void
- */
- public function down()
- {
- Schema::dropIfExists(‘tweets’);
- }
- <?php
- /*
- |————————————————————————–
- | Web Routes
- |————————————————————————–
- |
- | Here is where you can register web routes for your application. These
- | routes are loaded by the RouteServiceProvider within a group which
- | contains the “web” middleware group. Now create something great!
- |
- */
- Route::get(‘/’, function () {
- return view(‘welcome’);
- });
- Auth::routes();
- Route::get(‘/home’, ‘HomeController@index’)->name(‘home’);
- Route::get(‘/timeline’, ‘Auth\TimelineController@showTimelinePage’); // <— 追加
- Route::post(‘/timeline’, ‘Auth\TimelineController@postTweet’); // <— 追加
- 次に、SNSには欠かせない、タイムライン機能を実装します。
- $ php artisan make:controller Auth/TimelineController
- <?php
- namespace App\Http\Controllers\Auth;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class TimelineController extends Controller
- {
- //
- }
- <?php
- namespace App\Http\Controllers\Auth;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class TimelineController extends Controller
- {
- public function showTimelinePage()
- {
- return view(‘auth.timeline’); // resource/views/auth/timeline.blade.phpを表示する
- }
- public function postTweet(Request $request) //ここはあとで実装します。(Requestはpostリクエストを取得するためのものです。)
- {
- }
- }
ここに、ルーティングの時に設定した、showTimelinePageとpostTweetを作成していきます。
- <?php
- namespace App\Http\Controllers\Auth;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- class TimelineController extends Controller
- {
- public function showTimelinePage()
- {
- return view(‘auth.timeline’); // resource/views/auth/timeline.blade.phpを表示する
- }
- public function postTweet(Request $request) //ここはあとで実装します。(Requestはpostリクエストを取得するためのものです。)
- {
- }
- }
ビューの作成は以下の通りです。
- <!DOCTYPE HTML>
- <html lang=”ja” style=”height:100%;”>
- <head>
- <meta charset=”utf-8″>
- <meta http-equiv=”X-UA-Compatible” content=”IE=edge”>
- <meta name=”viewport” content=”width=device-width, initial-scale=1″>
- <meta name=”csrf-token” content=”{{ csrf_token() }}”>
- <title>SNSを作ってみよう!</title>
- <link href=”{{ mix(‘css/app.css’) }}” rel=”stylesheet” type=”text/css”>
- </head>
- <body style=”height:100%; background-color: #E6ECF0;”>
- <div class=”wrapper” style=”margin: 0 auto; width: 50%; height: 100%; background-color: white;”>
- <form action=”/timeline” method=”post”>
- {{ csrf_field() }}
- <div style=”background-color: #E8F4FA; text-align: center;”>
- <input type=”text” name=”tweet” style=”margin: 1rem; padding: 0 1rem; width: 70%; border-radius: 6px; border: 1px solid #ccc; height: 2.3rem;” placeholder=”今どうしてる?”>
- <button type=”submit” style=”background-color: #2695E0; color: white; border-radius: 10px; padding: 0.5rem;”>ツイート</button>
- </div>
- </form>
- </div>
- <script src=”{{ mix(‘js/app.js’) }}”></script>
- </body>
- </html>
最後に、ツイートをビューで表示しましょう。
- <?php
- namespace App\Http\Controllers\Auth;
- use Illuminate\Http\Request;
- use App\Http\Controllers\Controller;
- use Illuminate\Support\Facades\Auth;
- use \App\Tweet;
- class TimelineController extends Controller
- {
- public function showTimelinePage()
- {
- $tweets = Tweet::latest()->get(); // <— 追加
- return view(‘auth.timeline’, compact(‘tweets’)); // <— 変更
- }
- public function postTweet(Request $request)
- {
- $validator = $request->validate([
- ‘tweet’ => [‘required’, ‘string’, ‘max:280’],
- ]);
- Tweet::create([
- ‘user_id’ => Auth::user()->id,
- ‘tweet’ => $request->tweet,
- ]);
- return back();
- }
- }
これを参考に、自分のオリジナルSNSを作成してみてくださいね!
SNS開発は比較的簡単で取り組みやすいがゆえに、アピールできる実績としては少し足りない可能性もあります。
そのため、SNS開発に加え他のアプリも制作してみましょう。
例④:業務システム
PHPエンジニアの業務の一つとして、業務改善アプリの開発があります。そのため、業務システムを想定したアプリ開発は企業へのアピールとして効果的と言えます。
業務システムの例としては、勤怠管理アプリやToDo管理アプリなどが制作しやすいでしょう。
例⑤:WordPressのプラグイン
WordPressのプラグインもPHPで可能となっています。自作ブログをアピールできるだけでなく、PHPスキルもアピールできる一石二鳥のポートフォリオです。
初心者にオススメなのが、テーマの変更です。オリジナリティ溢れるブログを作ってみましょう。
PHPエンジニアを目指す人向けのポートフォリオ作成ポイント
PHPエンジニアを目指す人向けのポートフォリオ作成ポイントについて、現役エンジニアの目線を踏まえて解説します。
- オリジナリティがある
- こだわりポイントを記載されている
- 使用した技術を明記
- GitHubやQiitaなどのURLを記載
それでは一つずつ見ていきましょう!
ポイント①:オリジナリティがある
ポートフォリオはオリジナリティが最も大事と言えます。
参考サイトに落ちていたサンプルコードを少し変えただけの内容では、アピール材料としてはイマイチとなります。また、初学者によくあるミスとして、プログラミングスクールに通ったものの、サンプルの中から選ぶことになり他の受講生と制作物が被ってしまうということです。
自分を採用するメリットを企業側に伝えるためにも、オリジナリティ豊かなポートフォリオで自分のスキルを正しく伝えるようにしましょう。
ポイント②:こだわりポイントを記載されている
せっかく時間をかけて作ったポートフォリオでもこだわりポイントが面接官に伝わらなければ意味がありません。
ポートフォリオには、苦労した点や工夫した点など記載するようにしましょう。Webアプリの場合では、工夫したポイントをアニメーションで伝えれると尚更よいでしょう!
ポイント③:使用した技術を明記
プログラミングスキルに加え、デザインで勝負したい方でも使用した技術を明記するようにしましょう。
見た目だけでは、どのような技術が使われているのかを伝えるのは難しいでしょう。
たとえば、Photoshop使用歴3年というように、使用した技術と共に使用期間についても記載があるとなお良いと言えます。
ポイント④:GitHubやQiitaなどのURLを記載
GithubやQiitaなどのURLは必ず記載するようにしましょう。
ただし、Githubに関してはしっかりと開発実績(草が生えている)があること、Qiitaに関しては投稿した内容が少しでもバズっているとよいでしょう。
実績も大事ですが、開発した過程や学習履歴も重要なアピールポイントとなります。
未経験ならプログラミングスクールでポートフォリオを作成しよう!
ポートフォリオを制作スキルを身につけたい未経験の方におすすめのスクールを紹介します。
- 侍エンジニア
- テックアカデミー
- DMM WEBCAMP
それでは一つずつ見ていきましょう!
おすすめのスクール①:侍エンジニア
SAMURAI ENGINEER(侍エンジニア)は、挫折しないプログラミングスクールとして売り出しています。
侍エンジニアでは30種類以上のオリジナルWeb制作から選択して学ぶことができます。
そのため、フリーランスとしての実績作りを学びながらできるメリットがあります。
また、現役エンジニアと交流ができるイベントが定期的に開催されるため、継続的にモチベーションを維持することができます。
口コミについては以下の参考記事から確認しましょう。
おすすめのスクール②:テックアカデミー
Tech Academy(テックアカデミー)の特徴は、通過率10%の選考に合格した現役エンジニアの講師によるマンツーマン授業を受けることができることです。
また、コースも他プログラミングスクールを圧倒する豊富なラインナップがあります。
そのため、以下のようにポートフォリオ作成に特化したコースも複数提供されています。
自分が伸ばしたいWeb制作スキルを組み合わせることができるスクールです!
各コースの口コミや評判については、リンクから参照してくださいね!
おすすめのスクール③:DMM WEBCAMP
DMM WEBCAMP SKILLSでは、「はじめてのプログラミングコース」と「Webアプリ開発コース」が用意されています。
両コースとも、未経験から最終的にWebアプリケーションを自作できるようになるカリキュラムです。
どちらかと言えば、Webアプリ開発コースの方がポートフォリオ制作もカリキュラムに含まれているので、短期間で副業スキルを身につけたい人に向いているコースです。
口コミについては以下の参考記事から確認しましょう。
未経験からエンジニアを目指したい人におすすめの転職エージェント
未経験からエンジニアを目指したい人におすすめの転職エージェントについて紹介します。
- doda
- IT求人ナビ
- レバテックキャリア
それでは一つずつ見ていきましょう!
転職エージェント①:doda
テレビCMでもお馴染みの「dodaエンジニア IT」では、優秀企業やトップヘッドハンターから直接スカウトをもらえるメリットがあります。
また、日本最大の紹介エージェントを誇り、ベンチャーやスタートアップ企業から大手企業までさまざまな案件を取り扱っています。
転職エージェント②:IT求人ナビ
「IT求人ナビ」はIT業界の専門エージェントとして10年以上の実績があります。
また、フリーランスや転職、未経験などそれぞれ求職者のタイプ別でサービスが提供されています。
キャリアコーディネーターが経歴や業界の動向などを考慮し、過去の事例をふまえてアドバイスをします。
気になる方は、以下の記事にて口コミや評判を確かめてみましょう!
転職エージェント③:レバテックキャリア
「レバテックキャリア」は、特にITエンジニア経験のある20・30代の転職に強みを持つ転職エージェントです。
キャリアアドバイザーによるカウンセリングや書類添削、面接対策まで一貫したサポートを受けることができます。
取引企業も業界屈指で、応募が殺到する優良ベンチャー企業や新規サービスの中堅メンバーを募集中の企業など非公開求人が多数用意されています。
まとめ:ポートフォリオで自分のスキルを証明しよう!
今回、PHPエンジニアを目指す人向けにポートフォリオの作成例やポイントについて解説してきました。
現役エンジニアの私がおすすめするPHPを使ったポートフォリオ例は以下の通りです。
- お問い合わせフォーム
- ショッピングサイト構築
- SNS開発
- 業務システム
- WordPressのプラグイン
初学者にとって取り組みやすいポートフォリオをピックアップしました。
この記事を参考に、自分のスキルを効果的にアピールできるポートフォリオを作成しましょう!