私のITエンジニアとしてのポートフォリオにつながるプロフィールを箇条書きにするなら以下のとおりです。
- 2000年代初頭にホームページを作成した
- PCを自作した
- 2010年頃にPerlとJavaScriptを使って動的なサイトを一から作成して実際に利用した
- 20年以上塾講師の仕事をすることにより英語と数学を鍛えてきた
- Linuxを10年以上利用している
- WordPressで構築したブログに学習記録を蓄積してきた
- 日常的なデータをSQLで管理する仕組みを作った
- スクリプト言語(PerlやPython)で業務を効率化してきた
- 法律や経済に関係する仕事をしたことがある
- LaravelとDjangoでWebアプリをいくつか作った
- AWS、Google Cloud(GCP)、Firebaseなどのクラウドサービスを利用しながら勉強中
- エンジニアの業務に加えてIT翻訳やプログラミングスクールの講師をしている
以下は物語形式です。ITエンジニアとしてのプロフィール(1)昔話の続きです。Webサイト制作の個人史とWebサイト制作の個人史2を前後の話も加えて再構成しました。
大学1回生のときに、半期でホームページを作るという授業を取りました。HTMLとCSSが未分化だった時代ですから、太字にするなどの装飾のためにHTMLタグを使いました。出身地の紹介ページを作る学生が多い中、私は国語や数学などの勉強法を書いたページを作りました。今とやっていることが変わりませんね…。必修科目というわけでもなく、興味本位の軽い気持ちから参加したのですが、まさか後々これを仕事にすることになるとは思ってもみませんでした。何がどうつながるかわからないものです。
そこで得た知識を活用して茨木高校陸上部OB会のホームページを作りました。そのhtmlファイルを発掘したので、当時の雰囲気を味わうために貼り付けます。
最終更新から計算すると20年以上前ですね。左上の領域には何があったのでしょうか。アクセスカウンターだったような気がします。
掲示板はWEB PATIO : KENT-WEB CGI/Perl フリーソフトの古いバージョンだと思われます。パーミッションに悪戦苦闘しながら試行錯誤を繰り返してどうにか設置した記憶が蘇りました。
同じ頃にPCを自作しました。夏休みにアルバイトに精を出して貯めた約10万円を握りしめて大阪の日本橋に行き、一日でパーツを買い集め、次の日には使える状態にしました。AMDの1.3GHzくらいのCPUで、メモリは忘れましたがハードディスクが40GB、OSはWindows XPです。ブラウン管のテレビに画面出力しました。動いたのが奇跡だと感じました。このときの経験がインフラエンジニアとしての仕事の原点になっています。
ここで私のマシン遍歴をまとめます。自作PC→HPのノートPC(型番は忘れました)→ThinkPad X40→ThinkPad X220、以上です。ThinkPad X220を10年以上使っています。キータッチが気に入っていて、この記事もそのキーボードで入力しています。メモリとストレージを増強すれば、今でも現役で十分使え、現に私はこのマシンで仕事をしています。軽量のLinux(Linux Mint 21 Xfce)を使っているおかげとも言えます。
茨木高校陸上部OB会のホームページを作ってからしばらくの間は、本格的なITエンジニアとしての活動をしませんでした。学業と塾講師を中心とするアルバイトに力を入れていました。今から振り返ると、英語と数学に取り組むことで、ITエンジニアとしての足腰を鍛えていたことになります。また、WordPressやその他サービスのブログ記事を投稿したり、動画の編集をしたりと、ITサービスやソフトウェア利用者としての活動は積極的にしていたほうなのではないかなと思います。
次の転機は京都アカデメイアサイトの制作です。2010年頃に当時の大学院生を中心に立ち上げた団体です。ホームページ作成の経験があるということで、私がサイト制作担当の中心になりました。最初はよくわからないままに先輩から教えてもらったDreamweaverでいじっていました。しかしそれでは掲示板などの機能が作れないと気づき、F先生の教えを受け、PerlでMVCモデルに則ったWebサイト(Webアプリ)を作るところまで到達しました。
この図もまた当時の雰囲気をよく伝えてくれます。デザインはさておき、動きのあるサイトを最初から作って実際に公開して利用したという経験は大きいです。サーバー、データベース、バックエンド、フロントエンド(JavaScript)といったWebサイト(Webアプリ)の全体像を掴むことができましたし、顧客(メンバー)の希望により苦労してイベントカレンダーを作り上げたのに入力が面倒だという理由ですぐに使われなくなったという、ありがちな経験をしたのもエンジニアとして仕事をする上での財産になっています。
このときに開発環境としてLinux(Ubuntu)を導入したことが人生を変えました。最初はWindowsと併用していましたが、徐々にLinuxの比重を高めてきました。日常的にLinuxを使っていると、本格的な開発業務をしていなくてもトラブル解決のためにLinux関係の事柄を調べますし、ちょっとしたテキスト変換などをプログラム的に解決しようという発想になります。塾講師の仕事で使う数学の教材をLaTeXできれいに作ったりもしました。
WordPressで構築したブログに学習記録を蓄積し始めたのもこの頃です。更新頻度は決して高くありませんが、長い期間にわたって多様な分野で苦闘してきた記録はあまり類例を見ないのではないでしょうか。初期に書いた記事の中では、残業代をエクセルで計算するの反響が大きかったです。
日常的なデータ管理にもSQLを使うようになりました。小さな団体の会計管理にはLibreOfficeのCalc(Microsoft Excelに相当)とBase(Microsoft Accessに相当)が適していて、今でもそれらを使って管理しています。わざわざ大規模な会計ソフトを導入しなくても、LibreOffice Calcのマクロで仕訳帳から総勘定元帳を作成するのようなミニマムな機能でいいと思っています。
ただし、現状ではLibreOfficeのCalcと比べてMicrosoft Excelのシェアが圧倒的ですから、顧客の依頼を受けて仕事をする場合はExcelを使うことが多いです。私が初めて対価を得たエンジニアの仕事は、ExcelのVBAとLibreOffice Baseを連動させて従業員の勤怠と利用者の送迎の座席などを管理するシステム制作でした。Microsoft Accessを持っていないということだったので無料でインストールできるLibreOffice Baseにしました。業者の見積もりが高すぎると相談された知り合いからの依頼でした。顧客が求めているのは、案外、見栄えがよくて汎用的だけれども高価なシステムではなく、地味だけれども安くて使えるシステムなのかもしれません。
事務員として勤務しながら自分の業務をPythonで効率化することにも取り組みました。別の人が作ったシフト表から、元請けが求める形式のExcelファイルへと、データを転記するためのプログラムなどを書きました。毎月わざわざ間違えやすいのに手でそのような作業をするのが嫌だったのです。また、業務記録を入力するExcelファイルが使いづらくよく壊れていたので(関数部分を触ってしまって壊れたのでしょう)、Djangoで入力システムを作りました。機密データを取り扱っていましたから、インターネットに接続して利用するのではなく、USBメモリに保存したSQLiteからデータを読み込んでローカルで起動する仕組みにしました。入力インターフェイスとしてブラウザを利用したかったので、Djangoで開発しました。当時はリファクタリングという概念を知らず、ぐちゃぐちゃのコードでしたが、自分で使う分にはどうにかなりました。
私は経済や法律に関係する仕事もしてきたので、その分野に関わるプログラムやアプリケーションを作ることに強みがあります。IT×○○というかけ算の力ですね。ビジネスドメインの知識を持っている人がプログラムを書くと無駄なく早いです。コードを書ける経理担当者として、給与計算をしてから給与明細を自動でメール送信するシステムを自分で作って使っていると(GASで宛先ごとに添付ファイルを差し込みメール送信する)、いざ定額減税が導入されても既存のコードを少し書き換えるだけで対応できました。
次の転機は2020年頃に訪れました。知り合いに誘われてWebアプリの開発を目指すスタートアップでエンジニアの業務を行うことになったのです。これまでの流れから、Perlを使ってGoogle, Yahoo, Facebook, Twitter, LINEの5種類のソーシャルログインまで実装したり、Gitを使ったほうがいいと中途半端に聞いてVPSに自前のGitリモートリポジトリを構築したりと、今から振り返ると努力の方向が間違っているように思われて仕方ありませんが、必死で食らいついていきました。さすがに途中で方針転換してLaravelを使うようになり、Vue.jsを導入して、リモートリポジトリにはGitHubを用い、Dockerを活用するようになりました。最終的には、Google Cloud(GCP)上のKubernetesで動くサービスを構築し、CypressのE2Eテストを実行して、GitHub ActionsによりCI/CDを実践するまでになりました。エンジニアは私一人で曲がりなりにもそこまで到達したのは奇跡的です。
それからはプログラミングスクールのインストラクターとして教えるために必要な技術をキャッチアップし、知人やクラウドソーシングサイトを通じて受けたエンジニア案件の仕事を完成させ、興味のおもむくままに新しい技術を学ぶなどして、現在に至ります。書き始めると脱線が多くなってしまったので、ポートフォリオはまた改めて別にまとめたいです。