Twitterのフォローお願いします
30代実務未経験からエンジニア転職成功させたストーリーを公開中

私がエンジニア転職を目指すきっかけになった出来事から実際に転職を成功させるまでの時系列を一つのストーリーとして公開しています!

無料で読む

30代実務未経験から自社開発企業へ転職するためのポートフォリオで採用するべき技術をまとめました

プログラミング
この記事は約10分で読めます。

30代実務未経験から自社開発企業へ転職するためのポートフォリオで採用するべき技術をまとめました

この記事で解決できる悩み
・ポートフォリオを作りたいが、どんなポートフォリオを作ればいいのかわからない
・Docker?Circle CI/CD?どんな技術を採用したらいいのかわからない

私は32歳で実務未経験で自社開発系企業から内定をもらいましたが、私が実践したことは誰でも当てはまることなので再現性は高く、誰でも再現出来ます!

こんな悩みを解決できる記事を用意しました。

この記事でご紹介する「ポートフォリオに必要な技術」を実践すれば、30代で実務未経験でもエンジニア転職への道がグッと近づきますよ!

なぜなら、実際に私もこの方法でエンジニアへ転職できたからです。

実務未経験からエンジニア転職を成功させたい方は是非最後まで見てください!

また最後にポートフォリオを作成する上で最も重要なことを書いているので必見です!

実務未経験者のポートフォリオで必要な技術はこれ!

まず実務未経験者のポートフォリオに絶対に必要な技術はこちらです。

  • アプリ必須機能
    • ユーザー機能
    • 投稿機能
    • マイページ機能
    • 投稿編集・削除機能
    • コメントやいいねなどのコミュニティ機能
  • テストコードをしっかりと記述する
  • 中間テーブル
  • 非同期処理
  • 独自ドメイン化
  • 仮想サーバーの構築(AWSやGCP)

これらの機能が何故必要なのか、とどんな技術かを順番に解説していきます!

アプリ必須機能

アプリ必須機能は世の中に出回っているWEBアプリケーションの多くに採用されている機能のことです。

これから紹介する機能はWEBアプリケーションでは必須の機能といっても過言ではないので、最低限これらの機能は実装するようにしましょう。

ユーザー機能

ユーザー機能は大きく2つの機能に分けられます。

  • ユーザーの新規登録機能
  • ログイン・ログアウト機能

注意点としてはどちらの機能でもバリデーションを設定することとエラー発生した際のリダイレクト時に入力フォームの内容を保持するようにしましょう。

バリデーションとは?

バリデーションとは入力規則のことです。

例えば入力や選択の必須項目を設けたり、パスワードは8文字以上にする、やユーザー名は半角英数字だけにする、といった内容です。

バリデーションはWEBアプリケーションにおいては必須機能です。

またバリデーションを設けることでテストコードもしっかり記述することができるため、おすすめです!

投稿機能

投稿機能では単純にテキストを入力するだけの機能でも良いですが、可能であれば画像を添付する形式にしましょう。

また投稿機能を実装する上で採用するべき技術、機能をまとめました!

投稿機能で採用するべき技術・機能
・画像投稿機能
Amazon S3も導入し、添付画像はS3に保存されるようなシステムを構築するとリンク切れの心配もなくなる
・投稿編集画面でプレビューを表示する機能
・画像を複数枚投稿できる機能

マイページ機能

マイページ機能では自分の投稿だけを表示するビューとメソッドを作成する必要があります。

機能としてはアプリに必要な機能ではあるものの、実装自体は非常に簡単な機能です。

そのため、簡単なマイページで良いので、必ずマイページ機能は実装しましょう。

投稿編集・削除機能

投稿編集・削除機能もマイページ機能と同じく、独自でメソッドを作成する必要がありますが、実装そのものは非常に簡単です。

しかし重要なのはこれらの機能が投稿者本人にしか表示されないという部分をきちんと実装する必要があります。

またこの機能はテストが必要な機能でもありますので、丁寧に実装していきましょう。

コメントやいいねなどのコミュニティ機能

どのような言語を使用するかによっても難易度は変わりますが、必要最低限の機能でもあるため、技術的にはそこまで難しくないので、必ずこれらの機能は実装するようにしましょう。

場合によってはこの後紹介する中間テーブルを使用しなければいけない可能性があります。

その点はアプリの設計とテーブル設計によります。

ただ技術的にはそこまで難しいものではないため、導入は必須といえます。

テストコードをしっかりと記述する

テストコードを記述することはWEB開発にとっては非常に重要です。

重要な理由は2つです。

・テストを行うことでアプリケーションのクオリティを担保できる
→人的なミスが発生する可能性がある
→どのようなテストを行なったのか記録が残らない
→仕様が変わったら全て1からやり直し
・アプリケーションの仕様を見極めることができる
→テストを行う際に仕様を洗い出すことができる
→テストの実行ができる=仕様を理解できる

各機能に対してテストコードを記述してレビューをもらうというのが当たり前

実際の現場での開発の流れ

  1. 要件定義
  2. 詳細設計
  3. コーディング
  4. 単体テスト
  5. 結合テスト

簡単な流れではありますが、上記のような流れで開発は進みます。

また各機能ごとに開発をすることになりますので、各機能ごとで上記の1〜5のプロセスを踏みます。

つまりどの過程においても開発においてはテストを書くということは当たり前です。

またテストの工程は下流工程といい、プロジェクトに参加しているメンバーが担当することが多いタスクです。

つまり入社後、一番最初に割り振られるタスクになる可能性が高いので、しっかりと記述することでアピールにも繋がります。

中間テーブル

中間テーブルというのは多対多のテーブル紐付けをする際に用いられます。

多対多のテーブル紐付けをそのまま実装しても問題ありませんが、運用上問題があります。

これはチャットアプリをベースに考えるとわかりやすいと思います。

例えば、チャットアプリでユーザーが自由にルームを作れる仕様だとします。

そうすると1人のユーザーは複数のルームを持つことができるため、usersテーブルとroomsテーブルは一見、一対多という関係のような気がします。

しかし、Aというルームにはuser1さんとuser2さんが属している場合は多対多という関係が成り立ちます。

「多対多」は、関連するテーブルのidをお互いが複数持っている関係性となります。

たとえば今回のような、「ユーザーは複数のチャットルームに所属する」「チャットルームには複数ユーザーが所属する」という場合の関係性です。

このテーブルの関係性を示すために、外部キーへ複数の値を保存できれば簡単なのですが、1つのカラムに対して複数の値を保存することはできません。

ここで、よく考えられる方法として、関連するidが増えるごとにカラムを増やすというパターンがあります。

しかし、上記のようにカラムを増やすと、いくつかのレコードにとって不要なカラムが生まれてしまいます。

このようなDB設計は、関連するレコードが増えるほどカラムが増えるため、良くない設計とされているものです。

この解決策として使用するのが、中間テーブルです。

中間テーブルはテーブル設計というものをしっかりと理解しているかどうか、ということを判別するための指標と言っても過言ではないため、採用すべき必須機能とも言えます。

非同期処理

ブラウザをリロードしなくても、画面の情報が更新される仕組みです。

非同期処理の例
・チャットアプリでリロードなしでメッセージが投稿される
・Amazonで2ページ目の商品情報をリロードなしで表示させる
主にJavaScriptを使用して、記述することが多いかと思います。
非同期処理はブラウザの読み込み回数が増え、ユーザーにロード時間を感じさせないために導入します(ユーザーエクスペリエンスの向上)
そのため、無闇に導入するのではなく、ユーザーが快適にアプリを使用できるシーンで導入しましょう。
先ほどのアプリ必須機能で言えば「コメントやいいねなどのコミュニティ機能」で導入すると良いでしょう。

独自ドメイン化

独自ドメインはURLだけで他候補者と差別化できます。

何故なら、独自ドメインということはほぼ自身でサーバー構築も学習していることがわかるためです。

デメリットとしてはドメインを取得するために約1000円ほど料金が発生しますが、約1000円で他候補者と簡単に差別化できるのであれば、安いです。

パブリックIPアドレスと取得したドメインを紐づけて、公開する必要があり、各種レンタルサーバーでもドメインを紐づけるサービスがありますし、AWSであればRoute53というサービスを利用することで、自身のアプリケーションのサーバーのパブリックIPアドレスと取得したドメインを紐づけることができます。

仮想サーバーの構築

いわゆるAWSやGCPといったクラウドサービスを利用して仮想サーバーの構築をしてください。

サーバーというのは例えるなら家のようなものです。

そしてWEBアプリというのは人で例えるとわかりやすいと思います。

例えばあなたが友人の家でゲームをしようと思った場合、あなたは友人の家の住所を頼りに、友人の家に行き、友人と会うわけです。

サーバー、つまり家というのは本来、各個人が用意しなければならないのですが、仮想サーバーというのは寮をイメージすると良いでしょう。

建物そのものはすでに用意されていて、部屋を割り当てられるようなイメージです。

当然、すでに用意されているため構築は簡単でスピーディ、費用も家を買うよりも寮を借りる方が安いですよね?

このようなイメージを持っていただければ良いかと思います。

Herokuでデプロイしたポートフォリオがダメな理由

理由は2つあります。

  • サーバーとしてのスペック不足
    表示までに1~2分かかってしまうことも
  • 一定期間経過すると画像がリンク切れになってしまう

どちらもWEBサービスとしては致命的な欠陥とも言えます。

AWSであれば細かいことはさておき、ハンズオン形式でデプロイすることも可能です。

こちらのQiitaの記事は実際に私が学習中にAWSでデプロイしていた内容をまとめたものなので、ぜひ参考にしてください!

DockerやCircle CIは必要ないのか?

結論、私はDockerやCircle CIを採用しませんでしたが、自社開発系企業からは内定を貰いました!

もちろん導入できれば、導入するに越したことはありませんが、評価ポイントはそこまで高くないと考えています。

何故ならDockerやCircleCIを使用していたことが面接官に伝わりにくいからです。

自社開発系の企業には日々多くの応募が来ているため、ポートフォリオを全てチェックしているということはほぼあり得ません。

中にはGithubのREADMEを読み込んでいないケースや人事担当が非エンジニア出身の場合もあり、そのような場合はDockerやCircle CIという技術そのものを知らないケースもあります。

そのため、DockerやCircle CIは導入する余裕があれば導入したほうが良いですが、その点に労力をかけるのなら、志望動機や転職理由など面接対策に力を注いだほうがよっぽど効率的です

ポートフォリオが大切な理由は志望動機と直結するから

最後に皆さんに一つ質問です。

企業がポートフォリオを見るのはなぜでしょうか?

未経験でも技術フィルタをかけたい

技術力のある未経験者を採用したいから

これらはほぼほぼハズレです。

というのも企業側は未経験者にプログラミング技術など求めません。
それこそAWSを扱えようがDockerを扱えようが、入社後に研修が出来れば事足りるのです。

ではなぜポートフォリオを見るのか。

それはポートフォリオこそ志望理由を形にしたものだからです。

例えば

業務効率アプリを作ってみたいからエンジニアになりたい

というのであれば、まがいなりにもポートフォリオで業務効率アプリを作るべきなんです。

それがエンジニアになってやりたいことでもあり、志望理由になるからです。

なので、技術よりもまず最も大切なことはエンジニアになってやりたいことをポートフォリオとして形にできているのか?ということです。

未経験でエンジニアを採用しようとする企業はポートフォリオであなたがエンジニアになってやりたいことを少しでも形にできる能力があるかどうかを判断基準にしています。

単に技術力だけであれば、経験者のエンジニアを採用すれば良いのです。

まとめ

いかがでしたか?

今回は実務未経験者のポートフォリオに必要な技術についてまとめました。

是非参考にしてみてください!

またこちらの記事も参考にされている方が多いので、是非合わせてご覧になってください。

コメント

タイトルとURLをコピーしました