Webエンジニア アウトプットのすゝめ


前置き

本記事は、Webエンジニアかつ
業務外でアウトプットをした事がまだ殆ど無いよという方に向けた
アウトプット活動の啓発記事です。

普段からいっつもアウトプットしてるよー?という方には
「なんだ当たり前の事じゃん」という事が連ねてありますので、その点をご理解頂い上でお読み頂けると幸いです。

はじめに

Webエンジニアの皆さん
普段からアウトプットを行っていますか?

Webエンジニアとして自らの知見や、学習成果をアウトプットする事は、大変に有益な行為です。

私自身も、これまでWebエンジニアとしてアウトプットをいくつか重ねてきましたが、その過程で学べたアウトプットに対するメリットや、そもそもアウトプットって具体的にはどんな事?という気付きを、本記事でお話させて頂こうと思います。


なぜアウトプットが大事なのか

新規プロジェクトへのアサイン、転職時等、エンジニアとして自らのスキルを他人に伝えなければならない場面というのは往々として存在します。
そんな時、自分で作り上げたアプリや、ソースコード、技術的知見を記した記事等は、かなり具体的に、自らのスキルを相手に伝える事が出来ます。

また、アウトプットをするという事は自分以外の第三者の目に作り上げた成果を晒すという事にも自ずと繋がります。
他人も見うるという意識づけが、出来上がる成果の品質向上に繋がり、その品質の向上を目指す過程で得られる気付きは、エンジニアにとってかけがえの経験値となります。

具体的な内容は、以降の項目にてそれぞれお話させて頂きます。


Webアプリとしてアウトプットする

Webアプリに限らず手を動かして実際に作ってみるというのは、技術の学習において非常に効果的な手法の一つであるという事は、皆さんご存じの通りです、が

Webアプリは更にそこから、グローバルにホスティングをして、ネット上にアプリをリリース(≒アウトプット)する事が可能です。

個人学習なのにローカルで完結させず、わざわざネットにリリースまでする意味って何?と思われるかもしれませんが
私が思う、個人学習で行うWebアプリアウトプットの最大のメリットは実践的な視点が培われるという点です。

フロントエンド側に寄った、ほんの一例ですが

■リソース(CSS、javascriptファイル等)のファイルサイズの調整。
  →通信量の意識
■認証用のキー値等、ローカルではつい楽をして直書きしてしまっていた部分を、環境変数や設定ファイルを利用して外だしさせる等の、リソース管理の方針変更。
■javascriptリソースの難読化。
  →セキュリティ等、アプリの堅牢性に対する意識
■スタイルシート等を利用した、より高度なレイアウト装飾や調整。
  →UIやUXに対する意識

如何でしょうか。
いずれも、ローカル開発時には中々気を回しきれない(私だけ?)有用な気づきだと思います。

これだけでも、リリースまでを行ってみる価値がある様に思えますが、更に

そのアプリをグローバルにリリースしている以上は、URLを伝えるだけで第三者に作ったアプリを共有する事が可能ですし
例えばそのアプリをレスポンシブに作成していれば、PCを持ち込めない様な面接面談の場においても、自分のスマホを取り出してアプリの画面を相手に見せれば、その場で成果を相手に共有する事も可能である

というメリットもあります。

もちろん、要件よってはグローバルに公開する事が難しいブラウザアプリも中にはあるかもしれませんが、個人開発で学習する範疇のアプリであれば、グローバルに公開して差し支えない要件の物が殆どだと思います。
(ポートフォリオサイト、Hello World代わりのTODOアプリ等)


ソースコードをアウトプットする

github等のパブリックなgitサービスを利用すれば、作成したソースコードを第三者に共有する事も容易です。

普段の業務で書いたコードを第三者に共有する事は、セキュリティやコンプライアンスの観点から見ても中々難しい事ではありますが、業務外で個人的に書いたソースコードなら、大手を振って第三者に共有する事が出来ます。

現在のWeb開発の現場では必修といっても過言では無い、gitの知識も最低限は備わっているというアピールにも繋がります。

余談ですが、エンジニア職の応募要項に、githubのアカウントの入力が必須となっているWeb系企業も最近はチラホラと見かけます。
企業側として、それだけエンジニアの普段のアウトプットに着目する風潮になりつつある、という事ですね。


技術的な知見を記事としてアウトプットする

ご存知Qiita等の技術的知見を記事として公開出来るサービスに投稿する事も、当然アウトプットに含まれます。

自らの知識の棚卸にもなり、Webアプリのアウトプットと同様、第三者の目線を意識するが故に、出来上がる記事の品質向上に繋がり、引いては書き上げる過程での自らの成長に繋がります。
 →例えば : 記事内で上げた外部出典の精確性を追求するために、自分でもより詳しく記事の内容について調査を行い、その過程でさらなる知識が身につけられた。等

他人の困りごとを解決しつつ、自分の成長にも繋げられるまたとないチャンスと捉える事も出来ます。


そんなに敷居は高くない

Q. Webアプリのホスティングって、お金もかかるし、手順も大変じゃない。。。?

A. 現在はfirebaseNetlifyといった、基本無料で静的サイト(≒フロントエンドリソース)をホスティング出来るサービスもパブリックに提供されています。
サーバーサイドのリソースを含む動的アプリですらも、例えばherokuを利用すれば、そのまま動くWebアプリとしてデプロイする事が可能です。(無料枠ではいくらか制限はありますが)
ホスティングの手順に関しても、いくつかコマンドを叩くだけでデプロイまでが簡単に出来るので、レンタルサーバーを借りてホスティングするしか無かった時代から比べると、技術的な敷居が格段に敷居が下がっていると言えます。

 
Q. 自分のショボいソースコードをクラウドに上げるのはちょっと抵抗が。。。。

A. 始めは誰だってショボいです。筆者自身も過去のリポジトリには、歴史から抹消したいと思える物がいくつも残っています。(じゃあ今はどうなんだと言われると・・・)
ですがそうした気づきが出来るのも、過去の自分の成果(ソース)をいつでも見て振り返りが出来るが故、と考えています。
先程も触れましたが、githubやQiita等を活用している時点で、ある程度の技術的リテラシーは見る側に伝わりますので、あまり深く思いつめずに、自己表現の一端と考えて、恐れずにアウトプットしましょう。
めげずに繰り返すうちに、目を見張る成長へと繋げられるはずです。
 
 
Q. 記事を投稿したら、厳しいコメントをされるのが不安で投稿出来ない。。。

A. 俗に言うマサカリを投げられる、というヤツですね。
質問や称賛、感謝、雑談の他に、批判、注意や指摘めいたコメントを頂く事も当然あります。
謂れのない人格攻撃等まで発展してしまう事も稀にありますが、例えばQiitaで言えばコメントに対する通報制度があり、人格否定や、過度に攻撃的なコメントは削除される仕組みになっています。
という事は、たとえ厳しい批判だとしても、そのコメントが消される等の処置をされずに残っているという事は、自分にとってとても意義のあるコメントであるという見方も出来ます。
良薬口に苦し、ではありませんが、たとえ批判や指摘を受けた所で、死ぬ訳ではありません。(繰り返しますが批判といっても、必要以上の攻撃的な口調や、謂れの無い人格否定や人格攻撃はまた別です)
称賛も批判も、全て自分の成長に繋げる度量をもって、いざ記事を書き始めてみましょう。


最後に

私自身が、Webエンジニア(Web以外の知識も全然無い)であるという前提もあり、今回はWebエンジニア視点でのアウトプットの重要さを説く内容となりましたが

アウトプットが重要である、という点に関しては「Web」エンジニアに限った話では無いと思っております。

ネットワーク、インフラ、DB、機械学習、ゲームetc、種別を問わず、エンジニアとしてアウトプットを重ねるという事は
エンジニアとしての知識と経験のアップデートに繋がり、また第三者への明確なアピールにもなりうる、引いては 自分自身にチャンスを与え続ける事に繋がる、と私は考えています。
 →ここで言うチャンスとは、素晴らしい会社への転職チャンスだったり、楽しい案件へのアサインチャンス等々です

もちろん、学習の手法としてアウトプットが絶対ではなくて、座学的、体系的に学ぶ事も非常に重要だと思います。

エンジニアである以上、全員がいついかなる場合においてもアウトプットを必ず心がけて行うべし!という訳では無くて

アウトプットが技術の学習に対する、非常に有用なアプローチの一つである(Webエンジニアは特に!)という事が本記事でお伝えできれば幸いです。