未経験からIT業界に入って1年と少し経ちましたが、日々本当に勉強することが多いな〜と感じています。
特にIT(あるいはWeb)は本だけではなくネットの技術記事も充実していますし、よほど最新の技術動向でもない限りは大抵の探したい情報はどこかに書いてあったりもするので、「知識は必要になったときにその都度学べばいい」という気分にもなりがちです。
机上の知識VS実務経験
ただ、「知る」ことと「使う」ことはまた違うのも事実です。
「それ、知っているけど実務に結びつくのかな?」ということもあれば、「なんか上手くいっているけど、なんでこれで動いているのかワカラナイ……」ということも。
そんななか、これから未経験でエンジニアになる方向けに、「机上の知識」と、「実務上の課題」が接点を持つって大事だよ、をテーマにケーススタディー(風)のポエムを書きました。
これからエンジニアになられる方、「こんなのいつ使うんだろう?」と思いながらも学習する方へのモチベーションに繋がれば幸いです。
ケーススタディー(※わたしの実体験に変更を加えています)
①背景
あなたが担当するWebサービスをPageSpeed Insightsで確認すると、改善できる項目として以前から「次世代フォーマットでの画像の配信」がおすすめされていたとします。
次世代フォーマットとはわたしたちが普段なじみのあるjpgやpngではなく、具体的にはWebPやAVIFといったものが該当します。
知らなくても問題はないですが、一応参考に↓。
②要件(やりたいこと)
近年は主要ブラウザもほぼWebPに関してはほぼ対応が完了したということもあり、あなたが担当するサービスの方でも配信画像のjpg⇒WebP変える向けた対応を行うことになりました。
③現実の課題(実務)
画像はCDNで配信されているのですが、ここで一つ問題が……!
影響調査の結果、既存の「jpg」で配信されて画像をとあるバッチ処理が取得し、別チームのサービスにて取得した画像を外部API経由で加工していることが発覚します。
しかも加工に使用するツールはWebP未対応。できるだけ時間をかけずに済ませたかったけど、大幅な改修は必須?
あなた「加工に必要なところだけjpgのままとかできないですかね。。。」
メンバーさん「HTTPヘッダーのacceptでimage/webpを除外する方法はどうでしょう?」
あなた「!!」
④知識(そもそもHTTPヘッダーってなんだっけ?)
HTTPヘッダーとは?
HTTP ヘッダーにより、 HTTP リクエストやレスポンスでクライアントやサーバーが追加情報を渡すことができます。 HTTP ヘッダーは、大文字小文字を区別しないヘッダー名とそれに続くコロン (:)、 値で構成されます。値の前にあるホワイトスペースは無視されます。
参考:
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers
例えば以下のコマンドを叩くとこういうものが返ってくる……というのは、HTTPについての入門書を読むとなんとなくは分かります。
$ curl -v http://google.com/
* Trying 142.251.42.206...
* TCP_NODELAY set
* Connected to google.com (142.251.42.206) port 80 (#0)
> GET / HTTP/1.1
> Host: google.com
> User-Agent: curl/7.64.1
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Location: http://www.google.com/
< Content-Type: text/html; charset=UTF-8
< Date: Wed, 05 Oct 2022 21:27:10 GMT
< Expires: Fri, 04 Nov 2022 21:27:10 GMT
< Cache-Control: public, max-age=2592000
< Server: gws
< Content-Length: 219
< X-XSS-Protection: 0
< X-Frame-Options: SAMEORIGIN
<
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
* Connection #0 to host google.com left intact
* Closing connection 0
それに加えてリクエスト、レスポンス、クライアント・サーバーモデル……一応全部基本情報技術者試験レベルの話ではありますが、意外と「ちゃんと知らなくてもとりあえず動くもの」は作れてしまうため、初心者は迂回しがちなところな気もしています。
⑤知識×実務=「これ〇〇でやったところだ!」
ここで分岐が発生します。
ルートA:
あなた「HTTPリクエスト!ああ!それアリかもですね!」
メンバーさん「ちょっと確認お願いしますね!」
あなた「あいよ!」
ルートB:
あなた「えいちてぃーてぃーぴー? あくせぷと?」
メンバーさん「えーっと、今度詳しく教えますんでわたし調査しますねー」
そうです。
「これ進○ゼミでやったところだ!」
ってなれるかどうかでエンディングが変わるタイプのゲームです。
「画像フォーマットをjpgで取得したい~」という具体的な課題が発生すると、その瞬間「知識として知っていたこと」と「現実の課題」が一つの接点を持ちます。
「ちゃんと知識を持ってますよ」というのをアピールできれば、タスクも任せてもらえるかもしれません。きっとこれを機会にHTTPへの解像度はぐっと上がると思いますし、HTTPヘッダーについて解像度のあがった個所を起点に、例えば下記のような「q=0.9」とかが相対品質係数を指しているとかも気になってくるかもしれません。
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
はたまた以下のような分厚い本に手を出す勇気が出るかもしれません。
↓HTTPの良書。濃ゆすぎてまだまだ消化不良です(褒め言葉)。
まとめ
大した内容ではないですが、経験のある人ほど無意識化されて「言うまでもない」ことなのかもしれないので、ちょうどわたしぐらい「経験のない」人間が「知識VS実務」に対して所感を残しておくのもいいかもなと思いました。
わたし自身、最近は採用に少しだけ関わらせてもらっている都合で、未経験からエンジニア転職を目指す方のレジュメを拝見することも増えましたが、「知識を実務で得よう」と考えている人は、採用面接の際に「自走力がない」と思われてしまいがちな気がしています。
大事なのは、「いざ知識を活用する場合が来た時のために、その時をチャンスと捉えられるだけの知識を前もって蓄えておくこと」なのかな、と思います。
未経験からエンジニア転職を目指される方は、そのあたりも意識してアピールしていくことも大事になるはずです。
エンジニア募集中です!
というわけで、弊社は「KANDOUカンパニー」をテーマに、沖縄、仙台、東京、ベトナムの各拠点でエンジニア採用に力を入れています!
カジュアル面談も受け付けていますので、お気軽にお問い合わせください!