見出し画像

私のプログラミング歴 - 34歳で学習開始から37歳で就職するまで

私は17歳ごろにHTMLとCSSには出会っていたのですが、「掲示板を作るような、プログラミングというやつは私には無理だろう」と決めつけていました。HTML, CSSでもなかなか苦戦していたというのに、掲示板の仕組みなんでわかるようになるわけはない、と。

そのような思い込みを抱いて軽く15年は経った後、プログラミングを学び始め、ついには仕事でプログラミングできるようになりました。掲示板を作る機会はありませんが、言われたらどう作るかの道筋が思い浮かべられます。それまでのことをまとめてみようと思います。

就活についてはこちらの記事で書いています。


17歳の時、携帯電話でHTML, CSSに触れる

私は10代〜20代は絵を描くことが好きでしたので、漫画やゲームのキャラクターの絵を描き、ウェブ上にあげるということをやっていました。ブログの時もありましたが、自分で1からHTMLと CSSでWebサイトを公開していた時もあります。

私がWebサイトを制作するようになったのは「魔法のiらんど」。

今は小説投稿がメインになっているのでしょうか?20年前は個人ホームページを携帯電話からでも作成できる、というのが一番のうりだったと思います。17歳で初めて携帯電話(今でいうガラケー)を使うようになった私は、この魔法のiらんどにのめり込み、毎日せっせとHTMLを携帯でぷちぷち入力していました。

タグを利用して見た目を操るHTMLは非常に魅力的で、そのうち中古パソコンを入手しWindowsパソコンのメモ帳でHTMLサイトを作るようになりました。当時はイラストメインでしたが、そのうち自分の不登校・ひきこもりの苦しみや、その苦しみを和らげる工夫で役に立ったものを記載するようなサイトも運営していました。

そんな感じで20代前半はWebサイトを作ることを楽しみました。掲示板などの難しい機能を作れるようになるとは全然思えず、それならとWebデザインをほんの少しだけ習ったりしました。PhotoshopやIllustratorをその当時は少し使えましたが、おそらく今は全然使えません。

この時点で私のプログラミングに対する気持ちは「私ができるわけがない。すごい人しかできない」でした。

きょうだいがWebエンジニアを目指す

そんな感じでHTMLに触れてから15年以上経ち、たまにWebサイトを更新するくらいでした。HTMLを相変わらずメモ帳でいじっている時、猫がパソコン作業を邪魔してきたので、その様子を写真に撮り、家族のグループLINEに投稿しました。その写真にはパソコン上のHTMLが映り込んでいました。

すると、きょうだい2人から反応が。「あんたもHTMLやっているのか!」と。1人はWordPressでブログを始めたところ、もう1人は「エンジニアがいいぞ」と言い、すでにHTML、CSS、JavaScriptを勉強し、エンジニア転職を考えているというのです。

その時は衝撃的でした。私ときょうだい達はさほど学力の差は大きくないと思います。JavaScriptで一足先にプログラミングをしているきょうだいは大学の偏差値も私より高いし資格も私より上のものをとっていた。でも、そこまで学習面でものすごい差は感じていませんでした。そのきょうだいがプログラミングを学んで、それを仕事にしようとしている…? もしかして、私にも目指せるのでは?と軽く頭によぎりました。

きょうだいがプログラミングスクールを経てエンジニアになる

エンジニアを勧めてきたきょうだいは、その後仕事を辞め、プログラミングスクールに通い、半年ほどで就職し、エンジニアとして働き出しました。きょうだいは30歳をゆうに超えていました。私は当時は30代の転職はかなり難しいと思っていたので、驚きでした。

その時私はひきこもりから脱出したものの、非正規の仕事も続かず、事務員、英語関係(社内翻訳等)の仕事をしつつ、行き詰まっていました。何か武器になるものが欲しいと考えていました。そんな時の兄弟のエンジニア就職の成功は、非常に刺激になりました。

とりあえず、エンジニア就職というのはあまりにハードルが高く、できる気がしない。まず、プログラミングの勉強だけしてみよう。それでうまくいくかもしれないし、ダメかもしれない。でも失うものは何もないだろう、とプログラミングを勉強することにしました。その時点で34歳。

最初のプログラミング言語はExcelVBA

最初に学ぶ言語にはExcelVBAを選びました。昔、ひきこもり向けのブログで、ExcelVBAをめちゃくちゃおすすめしている人がいた影響も大きいです。頭の片隅にずっとExcelVBAのことがありました。また私はMOS(Microsoft Office Specialist)のExcelのエキスパートを持っていますが、当時マクロが一つもわからず、マクロの問題は全て捨てて合格し、少し悔しかった思い出があるので、リベンジの意味もありました。

環境としてはWIndowsパソコンを使っておりExcelはすでに持っていたため、すぐに始められるのは魅力でした。

一度の挑戦ではうまくいきませんでした。最初にこの本をさらっと真似してコードを動かして、できた気になりましたが、その後何もせず、完全に忘れる。2度目か3度目の挑戦でなんとなくコツを覚え、次の本に進めることができました。

ただ学ぶだけでは忘れてしまうので、資格を目指すことにしました。

以下2冊で学びました。

スタンダードレベルを受験し、この2冊をあまりやりこめなかったので、当日はぎりぎりの点数での合格でした。合格点ピッタリだったかもしれません。

初めてのプログラミングの資格試験に合格したことで、「私もプログラミングができるのではないか?」という気持ちになっていきました。

ITエンジニアになる道を模索する

ExcelVBAの勉強は非常に面白く、これはぜひプログラミングを使う仕事をしてみたい、と思いました。この時点だと、まだ妄想レベルの夢です。仕事にするにはどうするかを調べ始めました。

YouTubeでエンジニアになるための動画を見始めたのもこの頃だと思います。動画でいくつか30代、また40代でも未経験でエンジニアになるひとの存在を知り、私でもできるようになるのでは、と考えるようになりました。

YouTubeでよく見る勝又健太さんの書籍も読みました。YouTubeで語られている内容が体系的にまとめられているので、非常に参考になりました。

SES、SIer、自社開発のような単語が謎で、それらのなんとなくの特徴が掴めたりしました。「第6章 Web系エンジニアになる方法」にて、非常に具体的に何をしたら良いのか書いてあります。私はJavaを勉強している中でMacBook Proを買ったのですが、この本の影響が大きいです。また、今の会社も若い人はほぼMacなので、Macでよかったなあと思います。

Qiitaのアカウントをつくる、ポートフォリオを作成して公開する等は、ほぼこの本や勝又さんのYouTube動画を見てそうすることを決めました。

次に学ぶ言語をJavaに決める

エンジニアのなり方も調べたので、次は言語設定です。まず、上記の書籍やYouTubeではWebアプリケーションを開発するのに使用するRubyが人気だ。しかし、諸事情があり地元で就職する予定の私の場合、どんな言語を学べば就職できるのだろうか。

地元企業の使用言語を調べるべく、ハローワークのインターネットサービスやIndeedで地元のエンジニア募集の求人を眺めることを始めました。すると、目立つのはC言語とJava。おそらく、私がなんとなく憧れるWeb系の企業はほとんどない。PHPはたまにあるが、YouTubeの影響から、RubyやPythonの方がキラキラしている気がする。が、RubyやPythonの募集はほぼないので、CかJava。Cは難しいと聞く。すごい人気のありそうなJavaにすることに決めました。

Javaで検索するとこのシリーズが人気でしたので、第3版を購入。導入は楽しく学べたのですが、実践的な内容がRPGのキャラクターやモンスターを戦わせる、の様な内容で、業務で使うイメージをつけたい私には非常に退屈で、挫折してしまいました。ゲームを作りたい願望がゼロなので、私には向いていませんでした。

私がなんとなくJavaがわかりかけて気がする、と思えたのがこの本です。ログイン機能やショッピングサイトを実装できるので、非常に実践的だと思いました。また、私はターミナルなどのコマンドラインでの結果より、ブラウザで動作が確認できるのにやりがいを感じていると実感できました。

私は就活のためのポートフォリオ作成をイメージしていたので、Webブラウザで見られるアプリケーションであるのが重要な気がしていました。それ以外の場合のポートフォリオはどんな感じなのか、いまだにわかりません。

Javaでは結局さくらのVPSを契約し、勉強時間を計測するアプリを超適当な見た目で作り、しばらく自分だけで使っていました。いままでエクセルで勉強時間をちまちま記録していたので(ExcelVBAで記録が楽になるプログラムを組んではいたが)、スマホで勉強時間を記録できる様になったのは自分としては非常に満足だったのを覚えています。

英語関係の仕事につけず、ICT支援員になる

Javaで自分用Webアプリを作っていた頃、派遣で短期の翻訳含む英文事務の仕事をしていました。契約が切れる前に転職活動をしていましたが、翻訳の仕事はほぼ通訳も必須で、面接でも落とされる日々でした。そんなおり、私の所持資格にMOSやVBAエキスパートがあるのを見た派遣会社のコーディネーターに勧められたのが、ICT支援員でした。

ICT支援員は、小学校中学校に赴き、教員や児童生徒に対してタブレット・パソコンの使い方を教える仕事です。教員向け研修の講師や、タブレットを使用する授業で教員のデジタル関係の補佐として教室を回ります。話を聞いて非常に面白そうな仕事と思いましたので、応募、面接、採用となりました。

ICT支援員の仕事では、プログラミングを教えることもあります。Scratch、viscuitというサービスを使い、プログラミングの初歩の初歩を小中学生に教えます。これらを使用した学習を行おうとする教師への研修・授業補助もあります。

私はICT支援員の業務で結局プログラミングを使う業務はありませんでしたが、仕事の手が空いたときにかなり長い間Scratchやviscuitをいじって使い方を覚えていました。

PHPで自分のサイトを作る

ICT支援員の仕事を辞めた後、私はエンジニアになることを決めました。と同時に、当時少しずつ単位をとっていた放送大学をなるべく早めに卒業することも決めました。私はマルチタスクが上手ではなく、働いている時には仕事に集中したいので、勉強を同時にするのが難しかったので、仕事をせず勉強に集中することにしました。実家に住んでいたのもあって、食費等生活費を家族に甘えて、放送大学を2022年度に卒業することに決めました。

放送大学の卒業までの最後の方の単位は、ほぼ情報系の科目を取っていました。放送大学はプログラミングの授業も多く、C言語、Java、ExcelVBAがありましたので、全て取りました。データベース、コンピュータの仕組みなどもあり、将来を見据えて単位を取っていきました。

放送大学の勉強と同時に、自分のWebサイト作りもしていました。データベースを使って、楽にサイトの更新をできるようにしたかったため、動的なシステムにしたいと思いました。Javaサーブレットの経験があったのでそれを使うのも一つでしたが、私には気楽に作れるものではなかったので、サイトを作るなら手っ取り早そうなPHPを選びました。

アプリケーションを作りながら楽しくPHPを学べるこちらの本を使用しました。

「入門教室」の方を終えたら、こちら。ショッピングサイトを実際に作るというものです。よくわかっていないまま、セッション等を利用して、ショッピングカートやログイン機能を実装していきました。

自分のサイトでは公開画面も作りましたが、超簡易的な管理画面も作成し、SQL文を書くよりは簡単にデータベースの更新ができるようにしたりしました。これは現在の仕事に一番近いことをしていたと思います。

基本情報技術者試験に不合格 - C言語の学習

2021年、2022年の前半は放送大学の単位習得に集中しましたが、放送大学の卒業とともにエンジニアとしての就活を始めたかったので、就活の助けになればと基本情報の受験を決めました。

旧試験でしたので、午後試験ではプログラミング言語が問われます。私は「なんかできたら格好良いから」という理由でC言語を選びました。問題集を1冊解き、過去問は最終的に100パーセントを何度か取れたのですが、本番では56パーセントしか解けませんでした。

問題を解く実力はつきませんでしたが、C言語をいじって動かす楽しみを味わうことができました。午後試験のアルゴリズムは擬似言語が使われますが、私はある程度問題集の擬似言語をC言語で実装し、動かすところまで行いました。これも面白かったです。ポインタもまあまあ使いこなせました。今は忘れています。

この本が非常にわかりやすく、この本に出会えたので旧試験の基本情報を受けて本当に良かったと思います。試験は不合格でしたが、C言語を学ぶモチベーションを得られたことが収穫です。

C言語の一番基本のところはこの本で学びました。C言語は難しいもの、という思い込みを持つものからしたら、「そんなことはないのでは?なんとか動かせるのでは?」と思えるような、良い導入の本だったと思います。

機械学習を将来使いたい気がするからPythonにする

放送大学の卒業も間近に迫り、いよいよ就活の際のポートフォリオや、就職先の目星をつける時期になりました。この時になって、私はメインの言語をPythonに決めました。Javaを学び始めた時はきちんと求人情報を調べ、需要のある言語、という選び方をしましたが、Pythonを選んだのはほとんどミーハーな気持ちだったと思います。

一応の理由としては、将来外国語を学ぶアプリを開発したい。その際、例文の生成や採点などを機械学習ができる可能性があるのでは。機械学習といえばPython。Webアプリ自体もPythonで作れば、機械学習の要素との連携が簡単そう、と考えたということもあります。

実は本格的にPythonを学ぶ前、基本情報のプログラミングでPythonを選ぶことを少し考えていて、ほんのちょこっと勉強していました。上の本で基本の基本を学び、下の本で文法関係を学んでいきました。しかし、やはり何かを作る目的ではないとなかなか学習は進みづらいですね。

ちなみに地元の企業ではPythonの記載のある求人広告は本当に少なかったです。就職のことをほぼ考慮に入れない選択でした。

Flaskでポートフォリオを完成させる

外国語学習をするアプリケーションをポートフォリオにすると決めたので、フレームワークの選定です。なぜDjangoにせずFlaskにしたのか、現在あまり明確に思い出せません。

Flaskでのアプリケーション作りはこの本で学びました。サーバーレスは特に実装する気がなかったですが、この本は非常にわかりやすくて好きでした。Flaskでアプリケーションを作る、ということの全体像をつかむことができました。

サーバレスの本で全体像を掴んだら、こちらの4冊でライブラリについて深掘りしました。これらの本も非常にわかりやすく、ライブラリの使い方を一つ一つ覚えていきました。

このポートフォリオ開発中からQiitaでも技術記事を書けるようになりました。そしてポートフォリオが完成し、Qiitaで記事公開、GitHubでもコードを公開しました。

就職後はFlaskはおろかPythonを一度も使っていませんが、フレームワークというのはどういうことか、フレームワークでアプリケーションはどう作るのかということを作りながら覚えることができたので、その後のCakePHPの学習にも役に立ちました。FlaskはCakePHPやLaravelで採用されているMVCではなくMTV(Model, View, Template)ですが、ほとんど違和感はありませんでした。

就職後、1年間CakePHPに没頭する

就職が決まった会社の求人には、PHP、Pythonの経験者ということが書かれていました。結果はPythonを仕事で使うことはなく、PHPオンリーで開発しています。

就職前にCakePHPを学び始めました。地元のもくもく会でもこちらの本を使って勉強していました。

こちらはバージョンが3、会社では4を使っていると面接でききました。現在の最新は5です。もくもく会では、この本のコードを4で再現する、というような学習をしていました。超入門としてわかりやすいです。

私はのちに会社でCakePHP2、3、4のコードを見ることになりますが、バージョンが違ってどこが違うのか、というのを発見&対処するのは、自分は嫌いではないなあと感じました。大変ですが、結構面白いです。

会社で研修が始まった時は、会社に置いてあるこちらの本に沿って勉強しました。この本もいろいろ網羅されていて、非常に良い本です。やはりバージョンは3なので、いろいろ変更する必要があります。

さて、職場では先輩方が作成した会社独自のアプリケーションのテンプレートを使用し、お客様それぞれの要望に合わせてカスタマイズする、というところから始まりました。

そのうち難易度の高い機能の実装も任されましたが、たいてい過去に先輩方が実装しているので、過去案件のコードをみせてもらい、真似して応用する、という形でした。

1年目の最後に、マイページ機能を初めて実装し、一つの大きな山場を越えられた気がしました。セッションについてやもろもろのセキュリティについて、やはり昔から評判の良いこの書籍が本当に参考になりました。

厚くて大きな本なのですが、とにかく読みやすく、1ページ目から順に読んでも読めるし、必要な箇所だけ拾って読むのでも勉強になるし、最強の1冊だと思いました。この本を何度も何度も読み、実践で似たケースに出会ったらまた読み直し、ということを続けていきたいです。

2年目、Laravelに突入

1年間CakePHPをやったあと、職場ではメインのフレームワークをCakePHPからLaravelにしていこうという動きがありました。ということで1年目の終わりごろから、Laravelの学習を始めました。プライベートは結婚前後で準備や結婚後の手続きに忙しかったので、ほとんど会社で勉強しています。

今までは先輩の作ったフレームワークをちょっといじる、というところだったのですが、今度は先輩のてがけた参考になる過去案件もないまま、Laravelではどんなコードが適しているのかもわからないまま、Laravel版の会社のテンプレート作成に携わっています。レベルがだいぶ上がっていて大変ですが、わくわくも多いです。

会社で残っていたコードが8だったので、8から学習をスタートさせましたが、つい先日先輩と話していて、最新の11で実装することが決まったので、これから8と11の違いを調べつつ、11を学んでいく必要があります。

まとめ

この記事は、以下のXのポストを発展させたものとなります。

Excelで関数の面白さに目覚める→ExcelVBAで環境構築なしにプログラミング学習開始。一度挫折したが、二度目か三度目の挑戦で継続でき、VBAエキスパートのスタンダード取得→Javaで簡単なWebアプリつくる→ICT支援員時代にScratchをいじる→自分のウェブサイトのためにPHPを使いある程度動く→

2024年8月2日のX

基本情報のためにPythonやってみるが続かず、Cをまあまあやる→放送大学で単位欲しさにExcelVBA、C、Javaを履修→PythonのFlask使って韓国語学習アプリ作成→就職してPHPのCakePHPを業務で使う。そして次にLaravelスタートが目前。なんとなく自分のプログラミングすごろくを書いてみた。

2024年8月2日のX

280文字以下のものが約8000字となってしまいました。これ、まだ記憶の新しい今のうちに書けてよかったです。

今までのプログラミング学習遍歴を書いていたら、プログラミング学習、楽しかったなあ…としみじみ思います。

私はICT支援員として働いていて小中学校のプログラミング学習についても学びましたが、人生の早いうちからプログラミングに触れるのは大賛成なのです。私はプログラミングに触らず難しいものだと決めつけていました。小中学校に少しでもふれていれば、20代ですでにゴリゴリコードを書く未来もあったかもしれません。まあ、私の場合は37歳での就職が非常に良かったですが…。

さて、今回の記事では私のプログラミング学習遍歴を書きましたが、では実際どのようにプログラミング言語等を学ぶのか、というところまでは書けませんでした。いつか、「こうやって学ぶ」の具体的な方法をまとめられたら嬉しいです。

いいなと思ったら応援しよう!