PHPを勉強した話【音MAD Advent Calendar 2022 in Summer】

この記事は音MAD Advent Calendar 2022 in Summerの一日目の記事です。

他にも素敵な記事が次々と投稿される可能性があります。

(普段と違って自分で人を集めた訳ではないのでどれぐらい集まるのか分かりません…)

はじめに

今回例年の企画と異なる部分として、サイトを自作した。

というのも、普段年末の企画で使っているAdventarは毎年12月にしかカレンダーを作れないのだ。本来アドベントカレンダークリスマスを待つ為のアイテムなのだから当然だ。夏に開催するのは本来あり得ないことなのだ。

でも企画はやりたい… なので自作する必要があった。

 

作る上で考えたこと等がもしかしたら音MADを始めとするような何らかの別の事柄においても役立つかもなぁと思ったので、今回日記という形で残すことにした。

プログラミング自体の話よりは、何かをする上で今後も汎用的に役立ちそうな思考の部分だけ書くつもりです。

前提

僕のプログラミング経験は学生時代に授業で学んだ程度。課題等で必要があればコードを書いた程度で独学的なことはあんまりしなかった。

今回は三年ぶりぐらいにちゃんとコーディングをしたことになる。

ちなみにPHPは生まれて始めて触った。学生時代は何故かVBAを気に入っていた。

期間

かかった期間:1ヶ月ぐらい

最初は別の言語でカレンダー部分だけ作っていて、それだと上手くいかなそうだったので途中からPHPで作り直した。

乗り換えた後の作業期間がだいたい1ヶ月。それ以外も含めると多分2ヶ月ぐらい。

ジムに寄ってから帰る日は疲れて作業出来ないことも多かったので、週の2日ぐらいを開発に当てていた程度だろうか。

全然夏じゃないのにSummerとか言ってるのは気付いたら8月後半になってしまっていたからだ。元々は8月1日~31日を期間とする予定だったのだ。つまり僕の力不足だ

気をつけたこと

・出来るだけ手間をかけさせないようにした

どういうことかというと、例えばTwitterで参加者を募って「参加したい人DMで希望日と記事のタイトル教えて下さい!」とか言えばわざわざ動的なサイトを作らなくてもHTMLだけで実装可能だったのだが、それだと気軽に参加しづらいと思ったので、利用者が気まぐれで参加しやすいように自主登録制にした。

他にも登録の削除を行う機能は利用者にパスワードを入力させる機能を作れば楽に実装出来るのだが、覚えておくのも面倒だし、入力させる手間を省きたかったので三日ぐらい頑張ってTwitter認証システムを実装した。

 

・本家Adventarにデザインを寄せた

サイトのデザインが安っぽいと参加する側も「この企画大丈夫か??」となってしまうと思ったので、とりあえず間違いは無いだろうと思って本家のサイトを再現した。

「左上にログインボタンがあって、ユーザーは登録ボタンを押せば参加出来る」という部分を再現することで新しく操作を覚える必要が無いという点では上で挙げた手間の話とも遠くないと思う。

あと目標が明確に定まったのも良いと思う。本家を完全再現出来れば100点。音MADでもテンプレを100%踏襲するのって技術的な成長に繋がりうるのかもなぁと思った。

CSSはかなり苦戦して最後まで完全な再現は出来なかったのだが、それでも当初よりはだいぶマシになった。*1

やる気を保つためにやったこと

・本を買った

何からやれば良いのかよく分からなかったので、初めに新宿のブックファーストで良さげな本を一冊買った。確かにネットで調べれば情報はいくらでも出てくるのだが、やる気を出すという点では本の方が圧倒的に優秀だったと思う。一度買ってしまうとWebページのようにタブを消すことも出来ないので…

今までの自分の傾向として「やり始める段階の必要なやる気の傾斜が尋常ではない」というものがあって、初めに本を買ってしまうことでその段階を無理矢理突破出来たのも今回最後までやり遂げられた要因の一つだと思ってる。

買った本のAmazonリンクも付けておきます。とても分かりやすかったです。*2

・やる気が出ない時は変化が分かりやすいところから手を付けた

例えば、この「ボタンが上に載った時にボタンが赤く変わる仕様」なんかは正直要らなかったけど、他の"やらなければいけない実装"をやる気が起きなかった時に「これぐらいなら面倒じゃないな」と思って実装した。

この機能自体が大事なのではなく、簡単なものでも自分が考えた通りに実装出来たら次のやる気に繋がりうるんじゃないかという部分。やっぱ何事も上手く行けば少しはやる気も出ると思う。

自分を飽きさせない為の工夫と言えると思う。仕事を創出する能力が問われる。

音MADで言うと、めちゃくちゃ手間のかかる人力部分じゃなくて裏の音合わせから進めてみるとかやってみると良いのかもしれないと思った。

 

・定期的に課題を箇条書きでメモした

所謂ToDoリスト。自分に対して道筋を示すという点で有益だった。

何かをする際には「大きい目標と小さい目標を立てる」ことが大事だと思うのだが、今回で言うと大きい目標がサイトの完成で、小さい目標がこの箇条書きメモに当たる。

Twitterをメモ代わりにしたので必然的に140文字に収まる程度の分量しか書けなかったのだが、これも結構プラスに働いたと思ってる。毎回提示されるのがクリア出来ない程度の分量ではないから投げ出さずに済んだ。

 

・その日一日の進歩、気付いたこと等をメモした

その日一日で「何も学べなかった…」となるとあんまり続かないと思ったので自分を褒めて伸ばす方針を取った。毎日少しでも進んでいると思い込む為の策。全く勝てないゲームはあんまり続かない。

とにかく成長のハードルを落とすことに気を付けた。1cmでも成長出来ていればそれでOK!

問題しか出なかった日は「問題に気付けた分前進!」と思ってそれも進捗としてメモした。

おわりに

近年音MADにしても何にしても守りの姿勢に入りがちで新しいことにチャレンジ出来ていなかったと思うので、今回こういう風に新しく何かを学んで成果を出せたのは自信に繋がった。ほぼ間違いなくこの数年間で一番頭使った。

一応プログラミングが「可能」なだけの能力は持っているのに「出来ない」という前提で動いてしまう節があったのだが、今回自分の力で成果物を出せたのはかなり大きい。ある種のイップス的なものを解消できるキーたり得ると思う。

 

一方で、今回の場合は完全に自分の独断でやっているからともかく、厳密に守らなければいけない期限等がある場合に今回のペースでは流石にマズいと言えると思う。

また、結局デザインの不完全さも途中で諦めてしまった。

今後の課題も山積みといえる。また一つ一つ目標を分割してステップアップしていくしかない。

 

C言語Javaは一通り!次はPHPです!」

どうでもいいが、この記事の太字の使い方が胡散臭い自己啓発本っぽくてキモい。

*1:当初は誰も登録してない日のセルに登録ボタン分のスペースしかない状態なんてこともあった

*2:ただ、誤植っぽい部分があったので、脳死で内容をコピペしてると多分引っかかる。