Perfumeのコールドスリープを観て、自分の推し活を振り返る

先日Perfumeの25周年ドキュメンタリー、コールドスリープを観てきました。

www.perfume-web.jp

 

私は中学〜高校時代にPerfumeのファンをやっていて、FCにも入っていました。

大人になってからは職場の先輩と意気投合して1度だけライブに行きました。それも9年前です。

 

この度コールドスリープするということで、見納めをしてこようと思い劇場に足を運びました。

 

元々観に行く予定はなかったのですが、

最近できた彼女がPerfume好きで、私がファンをしていた頃に同じようにファンをやっていたこともあり、共通の話題となりまして。今後配信されるかわからないし行こうということになりました。

 

私は今、他のアイドルの推し活をしていますが、このコールドスリープという決断は今後のアイドルに少なからず影響を与えるんじゃないかなと思いました。

 

※Perfumeをアイドルと言うか、アーティストと言うかは人それぞれだと思いますが、始まりはアイドルだったはずなので、現代アイドルに全く当てはまらないということはないと思います。

 

今回は映画を見てどう思ったかを綴ろうとしたわけではなく、ただ単に自分の推し活がどこから始まって今どうなっているのかを整理してみたくなっただけです。

 

小学生時代(~2005)

この時は特に何かアイドルやアーティストが好きという気持ちを持っていませんでした。

なんなら音楽を聴く習慣が特にありませんでした。

ただひたすらにポケモンをやっていましたね。

親が車で流していた浜崎あゆみ、サザンオールスターズが耳に残っていたくらいです。

 

中学生時代(~2008)

いつからかは忘れましたが、Mステ等の音楽番組を見ているうちにYUIが気になり出して、ルックスも好きだったので王道のCHE.R.RYとかRolling starをよく聴いてました。

 

次第にお小遣いを貰えるようになったので、CAN'T BUY MY LOVEを買ってひたすらリピートしてました。

CDプレイヤーでランダム再生とか出来ないから頭から聴くことが多くなるんですけど、曲の順番とか覚えちゃったりしてましたね。

そこから過去アルバムとか買ったり、友達にUVERworldのCDを借りて聴いてました。

 

ただこの辺は周りのみんなも聴いていて、天邪鬼だった自分は別のアーティストを探し始めました。

 

確かポリリズムでPerfumeを知りましたが、その時は自分には刺さらず、その後に発売されたBaby cruising LoveをMステで見て興味を持ち始めましたね。

 

当時ようやく実家にPCが導入され、ファン同士が交流する掲示板に入り浸るようになりました。

そこで仕入れた情報などを使ってdigり始め、インディーズ時代の曲から全て聴き込むようになりました。

 

高校生時代(~2011)

引き続きPerfumeのファンをしていました。

バイトも出来るようになってファンクラブのP.T.A.にも入りました。

 

高2になりたての頃、初めてライブに行きました。

「ディスコ!ディスコ!ディスコ!」という、代々木第一体育館で行われたライブですね。

natalie.mu

正直内容は覚えていないし、スタンド席だったこともあってよくわからなかったんですが、周りが楽しそうに手を挙げたりコールをしていて、また行きたいなとなったことを覚えています。

 

あとは、ライブ前にオフ会的なものに参加しました。

参加といっても、掲示板で出会った2つくらい年上のお兄さんと、もう1人くらいいた気がするんですけど、その人たちと原宿で待ち合わせしてクレープ食べたとかだった気がします。

そのお兄さんは早稲田大学に行くために浪人してるとか言ってた気がしますが、結局行けたんだろうか。

(試しに名前で検索してみたらヒットしてびっくりした。)

 

私が入り浸っていたのはPerfume Maniaというファンサイトだったんですが、今はもう管理されていないようでした。

 

ラジオのPerfume LOCKS!とかも聴いていて、あ〜ちゃんの直筆サインというか直筆書き初めが当たったこともあります。当時のペンネームがバレて恥ずかしいですがw

SCHOOL OF LOCKの書き初め 2009

 

次にライブに行ったのは、BLACK AND BLUEという対バンライブでした。

PerfumeとSPECIAL OTHERSの対バンだったらしいですね。全然覚えてませんでしたw

natalie.mu

Zepp Tokyoという、今は無くなってしまった会場ですが、今思えば人気絶頂のタイミングでよくチケット取れたなと思いました。

1Fスタンディングで参戦したんですが、モッシュに飲まれているうちに目の前にのっちがいる位置まで来ていたことだけ覚えています。さすがに目を奪われました。

 

汗だくになることを知らず、着替えを持っていかなかったことを少し後悔しつつも、余韻に浸りながら帰路についたことを思い出します。

 

当時はVOCALOIDが流行っていて、電子音という共通点があって対比されることもしばしばでした。

やはり天邪鬼だったので、VOCALOIDは意地でも聴かないって思ってましたねw

 

そして高3になる頃にはアニメ、ゲーム、カードゲームに興味が移っていました。

どこかでピタッと切り替わったというより、高1の頃からハマっていたんですが、マイノリティ側に行きがちなのでいつの間にかPerfumeを聴かなくなっていました。

 

あとは常に金欠状態だったので、お金のかからない趣味が中心になってしまったんですね。

 

でもこの頃のライブの経験があって本当に良かったです。

行く前は不安だけど、行ったら楽しいものという印象が強かったので、それが今の推し活につながっています。

 

大学時代(~2016)

年代を表記したことで大学に5年行っていたことがバレて辛いんですが、一旦それは良いです(笑)

 

この頃はアニメ、ゲーム、カードゲームに加えて声優にのめり込んでいました。

毎クール10個くらいの深夜アニメを視聴し、主要な声優の名前と声が一致しているほどでした。

 

声優のイベントを開催する系のサークルにも入りました。

推しと言えば、声優の豊崎愛生でした。

別にファンクラブ入ったりとかはしてなかったんですけど、CDをたまに買い、ラジオは毎週聴いてました。

ミニライブだけ1回行きましたが、Perfumeほど熱中しませんでした。

 

社会人(~2018)

大学卒業付近になると、フリースタイルダンジョンにハマるようになりました。

そこに出てくるラッパーの曲をよく聴くようになりました。

Creepy Nuts, 呂布カルマ, 崇勲, 般若あたりが好きでした。今まで触れてこなかったジャンルでしたが、世界が広がる感じがして楽しかったです。

 

フリースタイルダンジョンの公開収録も5, 6回行きました。

今は無くなってしまった新木場ageHaによく行ってました。

そこでドリチケというものを知りましたw

 

会社に入ったら8個くらい年上の先輩がPerfume好きだったので、ライブに一緒に行こうということになりました。

それがPerfume FES!! 2017ですね。

www.perfume-web.jp

 

2日間あって、両方行きました。

チャットモンチー、電気グルーヴとの対バンでしたね。

 

行くとなってから過去5, 6年分の曲を聴き込みました。

席は全然遠い場所だったんですけど、久しぶりの雰囲気を味わえて、ファンをやってた頃を思い出しエモくなってました。

何年経っても美しいままであり続けている3人が輝いていました。

 

社会人(2019~)

今後誰かを推したりファンになるということはないと思っていたんですが、休日にやることもないので当時好きだったオードリーやサンドウィッチマンの動画をyoutubeで見てました。

 

特にオードリーの漫才は何回も見てしまうほど好きだったので、暇があれば見てました。

そうすると日向坂(当時はけやき坂)とやっている番組「ひらがな推し」の切り抜き動画がレコメンドされてきました。

 

ついでにその動画も見始めていたら、普通に地上波で毎週やっていることを知り、録画して見るようになりました。

 

乃木坂、欅坂、けやき坂の3グループの冠番組が日曜日の夜にやっていて、それぞれベテランの芸人がMCをしているので番組として面白いんですよね。

 

特に欅坂とけやき坂に関してはMVも見るようになったので、そこからのめり込んで行きました。

 

当時坂道の中で目で追ってしまってたのはやはり平手友梨奈でした。

全てのMVで一番目立っていたのもありますけど、ショートヘア好きの自分は逃れられませんでした。

 

この歳(26歳)になってアイドルを推すんか..?という気持ちと葛藤しながらも、坂道の番組とMVはチェックしてました。

 

次第に天邪鬼な私は、すでに人気絶頂の欅坂ではなく、アンダーグループだったけやき坂を応援するようになり(オードリー好きなこともあり)、その中で富田鈴花を推すようになりました。

www.instagram.com

でもまだライブに行くとかはなく、ただ写真をよく検索する程度でした。

 

その後けやき坂が日向坂に改名し、センターがずっと小坂菜緒だった時代がありました。

メンバー全員のことが好きだったので特に不満はなかったのですが、ちらほら頑張って爪痕を残そうとしているメンバーが目立ってきました。

 

富田鈴花もその中の一人でしたが、私の目に留まったのは金村美玖でした。

www.instagram.com

 

シングル曲ではしばらく3列目にいましたが、ダンスには目を見張るものがあり素材としては一級なのに、それに胡座をかかず努力をし、冠番組で結果を残せなくて泣いてしまうことすらあった彼女を応援するようになっていきました。

 

シングル5作目では小坂菜緒ではなく加藤史帆がセンターを務めることになり、平手のようにずっと同じメンバーがセンターをやるわけではないことを知りました。

 

シングル6作目には念願の金村がセンターをやることになりました。

そこで初めてCDを買いました。

www.hinatazaka46.com

もう好きなものには正直でいようと思い、ファンクラブに入り、金村個人のメッセージアプリも購読するようになりました。(それが2021年の前半頃)

 

ライブにも行きたいと思うようになり、2021年のW-KEYAKI FES. に応募しました。

www.hinatazaka46.com

しかし落選し、配信で視聴しました。

 

次は絶対に行きたいと思い、その年のツアーを全ての会場に応募したところ、福岡の会場が当たりました。

www.hinatazaka46.com

1人で初めての福岡に行き、アリーナ席のC席でめちゃくちゃメンバーが近くて興奮したのを覚えています。

生涯忘れない自信がありますが、初めて買ったアイドルのグッズが金村のタオルで、それを掲げたら金村に2回レスをもらいました。

 

こんなに胸が熱くなったのは久しぶりで、そこから全てのライブに応募するようになりました。

 

翌年行ったライブのストーリーをインスタに上げたところ、同じライブに行っていた大学時代の友人がそれを見て連絡してくれて、実は日向坂のファンだということを知りました。その友人とは十数年ぶりに再開して一緒にライブに行くようになり今に至ります。

 

感想

振り返ってみての感想ですが、何かしら好きなものがある時期の自分は生き生きとしていました。

それがアーティストや芸能人でなくても良いとは思いますが、趣味が人生を豊かにしますね。

ずっと1つのものを好きでいることも素晴らしいですし、いろいろなジャンルを経てたどり着くものもあると思います。

 

私に関しては大学時代に声優が好きだったことで繋がった友人と疎遠になっていたが、日向坂でまた再開することもできたので、何があるかわからないなと思いました。

 

そして、婚活ではYUIやPerfumeが好きという共通点で仲良くなれたお相手と今はお付き合いできています。

 

必ずしも趣味で繋がるべきとは思いませんが、ドンピシャな趣味があると心の距離が近くなるなと思いました。

自分から興味の範囲を狭めずに正直に好きなものを追っていると良いことありますね。

 

余談ですが、コールドスリープを観た日に行ったカラオケでは、Perfumeだけで時間を使い切ってしまいました。

 

女性アイドルは卒業や活動休止のタイミングが難しいと思いますが、Perfumeはコールドスリープするとなった経緯や理由を公にすることで現役アイドルの選択肢を広げてくれたんじゃないかなと思います(MIKIKO先生の言葉そのままにはなってしまいますが)

 

輝き続けてくれている彼女たちだから変わらずいてくれると思いがちですが、私個人としてはアイドルをやっていても恋愛や結婚は自由にしてほしいと思いますし、本人の幸せを第一にしてほしいなと思っています。

 

そんなことを感じた映画でした。

 

P.S.

映画で久々にPerfumeの3人を見ましたが、今が一番美しいなと思いました。

自分が場面緘黙症だと32歳になってから知る

 

はじめに

今回はyoutubeにてある動画のコメントを見ていたときに目に入った障害名が初めて見るもので、それが自分にドンピシャで当てはまっていたという話をします。

 

その名も「場面緘黙症」というものです。

詳しくは緘黙症について研究や支援している団体が細かく説明してくれているので、詳細に知りたい方はそちらを参照ください。

 

mutism.jp

www.kanmoku.org

 

目的

自身の経験や思考の整理をするのが1つと、同じ症状を抱えていて、現在進行形で悩んでいる方の一助になればというのが目的です。

SEO的には超雑魚なのでここに辿り着く方がどれだけいるかはわかりませんが。。

 

発症してから現在に至るまで

記憶にある限りだと、4~5歳の物心ついた頃から発症していたと思います。

家族以外の方の前では基本的には一言も喋れませんでした。

 

お店の人はもちろんのこと、保育園の同級生や、親戚とすら話すことができませんでした。

親も自分もただ「恥ずかしがり屋」、「内向的な性格」と思っていました。

 

そのまま小学校に入学するのですが、保育園の頃の同級生は私以外に2人しか同じ小学校に入学しませんでした。

しかもその2人は双子の女子でしたので、誰も知り合いが居ないに等しかったです。

 

それが影響してか、低学年の頃は1人も友達ができませんでした。

1人だけ放課後に遊ぼうと声をかけてくれた女の子がいて嬉しくて公園で遊びましたが、その時もほとんど声を発することなく、首を縦か横に振るだけで乗り切っていました。

 

見かねた親が私が小3になった頃に近所の同級生の親御さんに相談してくれて、ポケモンが好きという共通点を使って繋げてくれました。

 

その同級生がとても優しい子で、当時流行っていたポケモンのルビー&サファイアで対戦をしたことがきっかけで人生で初めて友人ができました。

 

その友人の家には毎日のように通い、外で野球をしたり、ポケモンをして遊ぶようになりました。

次第に別の友人を呼んでくれて5人ほどの友人ができました。

幸いにも友人は全員同じクラスだったので、次第にクラスにも馴染めるようになり、一丁前に好きな女の子もできました。

 

なんとか周りに(よっ友も含め)友人を増やし続けて小学校時代は乗り切りました。

 

そして中学生になります。3つの小学校の生徒が1つの中学校に進学する地域でした。

完全にリセットとまではいきませんが、2/3以上は知らない生徒だし、先生は自分のことを知らないので、中1の頃にはあまり喋らなくなってしまいました。

 

今でも記憶に残っているのが道徳の授業の時のことです。

教科書のあるエピソードを読んでその感想をクラス全員の前で話すというものでした。

 

誰かに自分の話を聞かれるということを考えただけで体が萎縮し、教科書の文章がただの文字列にしか見えなくなっていきました。

 

そのため、感想が一切浮かばず、発表が自分の番になったときに全く喋れなくなりました。

担任の方針なのか、何か喋るまで終わらないという地獄になりました。

時計すら見る余裕がなかったので体感ではありますが20分くらい教卓で全員に注目されるという体験を2, 3ヶ月に1回くらいしていました。

 

指名される日は大体予想できて、日付から何らかの四則演算をして出た数字と一致した出席番号の生徒を指名することが多かったです。

なので、かなり先の予定まで確認して自分になる可能性がある日がいつなのかを予想していました。

 

当時の自分は緊張するタイプなだけでなく、読解力がなくて感想が浮かばないだけなんだと思い込んでいました。

なので、現代文や道徳、総合の時間は指名されても答えられなくて恥ずかしいので苦痛でした。

反面、数学は答えがシンプルなので気楽でした。

 

とはいえそこまで生活に支障が大きく出るわけではなかったので、無事卒業し高校に行きました。

 

高校や大学になると自分で所属するコミュニティを選べますし、全員と仲良くしなくてもやっていける社会になったので次第にストレスは減っていきました。

 

大学のゼミとかは特に、決められたメンバーとグループワークをする形式なので、心理的安全性が担保されていて楽しく取り組めました。

 

次の障壁としては就職活動でした。

初めて会う面接官に自分の事を話したり、考えを伝えるなんて想像しただけで身の毛がよだちます。

さらにはグループディスカッションなんてより地獄ですね。自分より優秀に見える学生に自分の拙い意見を聞かれるなんて辛すぎます。

 

特に私は文系学部出身でしたので、面接で雄弁に語れないと相手にもされません。

どうにもやる気が起きなかったので就職できないかもしれないと思った矢先、エンジニアなら技術力で採用してもらえるんじゃないか...?と気付きました。

 

ビジネス職等に無事なれたとして、知らない人と話すことが日常化するくらいであれば、学生のうちにプログラミングのスキルを付けて叩き上げでも良いからエンジニアになりたいと思うようになりました。

 

結果、大した技術力は付けられませんでしたが、文系からエンジニアになるために勉強してきた話をしたら拾ってくれた会社がありまして、薄給ながらもエンジニアとしてスタートすることができました。

 

エンジニアだからといって誰とも話さず仕事ができるわけではないので困る場面は多々ありましたが、社内の人に限定されるので(自社サービスの開発を担当していたというのもあり)まだマシでした。

エンジニアはたいてい5人程度のチームを組んで長期間仕事をするため、自分にとってはかなり働きやすかったと思います。

 

そういえば新卒研修ではテレアポを1日100件、5日間やらされるという地獄がありました。

場面緘黙症にとって営業活動がどれだけストレスになるか、今思うと頑張ったな自分と思います。

ちなみに5日目にはストレスで死にそうだったので、仮病を使ってサボりました。

 

場面緘黙症のくせにキャリアを上げたくて転職を3回もしているのですが、やはり最初の1ヶ月はストレス値が高かったですね。

4社目に入社したばかりの現在も絶賛辛いです。

 

ただ32年も生きていると自分のことはよく分かっているので色々対策しながら凌いでいます。

 

具体的にどんな症状か

だらだら書いてきちゃいましたが、具体的にどんな症状なのかを調べてみました。

www.kaien-lab.com

 

- のどが圧迫されるような感覚で声が出ない

- 質問したいことがあるのに上司や同僚に話しかけられない

- 話しかけられたときにすぐに答えられない

- あいさつや雑談ができない

- 会議や打ち合わせで発言できない

- プレゼンのように大勢の前で話すのがつらい

- 周囲の視線が気になって集中できない など

 

ほとんど当てはまってますね。。

 

- のどが圧迫されるような感覚で声が出ない

こちらはかなりあります。口は動くんですが喉が圧迫されているので声が出ないんですよね。

 

- 質問したいことがあるのに上司や同僚に話しかけられない

こちらは完全に無理ではないんですが、まずカレンダーを見て予定が被っていないか確認し、その後様子を見て集中していそうか確認して、大丈夫そうなら「お時間よろしいですか」って言います。

でも極力話さなくても済むように自己解決できないか調べまくります。

 

- 話しかけられたときにすぐに答えられない

内容や相手にもよりますが、一瞬頭が真っ白になって思考停止はしますね。で、数秒遅れで言われた事を思い出して、考えて回答します。

なので、瞬発力は低いです。

 

- あいさつや雑談ができない

挨拶は初対面の人や数回しか会ってない人にはしないですし、向こうが自分の事を覚えている確信がない時は自分から話しかけないです。

あとは、相手の名前を呼べないです。

間違っていたら嫌だという気持ちと、本人や周りが「馴れ馴れしいな」と感じていないかを気にしちゃうので、名前を呼ばなくても完結する会話では名前を呼ばないです。

 

- 会議や打ち合わせで発言できない

絶対的な自信がある時しか発言できないです。

それも、言い方を何度も頭の中で反芻してから一言一句間違わないように言うようにします。(もしくはメモ帳に書いて、それを読み上げます)

 

- プレゼンのように大勢の前で話すのがつらい

これは辛くない人はいないと思いますが、多分他の方よりは辛く感じていると思います。

事前練習は死ぬほどするんですが、本番でそれを発揮できないです。

自分が話している事を自分が理解できなくなるくらい頭が真っ白になります。

 

- 周囲の視線が気になって集中できない

これはめちゃくちゃありますね。

図書館で勉強するとか、カフェで本を読むとか、周りから常に監視されているような感じがして集中できません。

勉強、読書、仕事は全て自宅派です。

リモートワークやオンラインで完結しやすいような世の中になって本当によかったです。

 

小さい頃からこういった症状が出てしまっていたので、周りからは「なんで喋らないの?」とか、「すごい!◯◯君が喋った!」とよく言われていました。

 

そんな事を言われると余計に辛かったですね。。

 

今思うと納得する自分の行動

自分が場面緘黙症だと分かった事で、過去の自分の行動や考えが何故そうなったのか、長年の謎が解明された気持ちになりました。

 

例えば就活をしていた頃、ビジネス職になるのは嫌だし、面接をするのすら嫌だったので、そういったものを全て回避できる仕事としてライティングの仕事なら良いんじゃないかと考えた時期がありました。

ただ生業とするにはかなり修行が必要そうだったのと、副業ならまだしも一本でやっていくのはなかなか競合が多くて厳しそうだったのでやめました。

 

他には、私はあるアイドルグループが好きなのですが、定期的にあるミーグリ(1対1のお話し会)には参加していません。

過去に参加していたことはあるのですが、どうにも当日を迎えるまでに緊張によるストレスで寝付けなくなったりとかしていました。

若い女の子がオタクと会話したいことなんてあるわけない」とか、「数十秒の間で実のある会話ができる気しない」、「キモいオタクのうちの1人だと思われるかも」といった事を考えだすとどうも乗り気になれませんでした。

認知してもらっていればまだ良いですが、そんな強いオタクではありません。

楽しいイベントのはずなのに、ストレスで体調を崩すくらいならやらない方がいいと言う決断になりました。

 

あとは、私はデジタル健忘症を自覚しておりまして、そうなったきっかけは場面緘黙症にもあると思っています。

というのも、場面緘黙症の症状の一つに周囲のことを気にしすぎてしまうというものがあります。それによって脳のリソースを圧迫してしまうため、脳の負荷が高くなります。

それを避けるために記憶することを放棄するようになりました。そして記憶を放棄するためにデジタルデバイスに保存しておけばよいことに気づき、それが加速しました。

デジタル健忘症が加速すると認知症のリスクが上がるそうなので、気をつけたいです。

 

知ったことでどう変わりそうか?

この障害である事を自覚したことで今後の生活にどう言う影響がありそうか考えてみました。

 

まずは、喋れなくなる事ががむしゃらな努力だけではどうにもならない事と、どうしても突破できない場合もあるということが理解できたので、本当に無理な時は諦めてもいいという言い訳ができました。

ただこれをネガティブな理由で使うと言うより、やれるところまでやったというポジティブな理由で使うようにしたいです。

 

例を挙げると、先日転職した初日に入社同期会が行われました。

話せる人を増やしたかったので悩んだ末に参加したのですが、行った頃にはすでに輪ができていて、最初の10分くらいは誰とも話すことができませんでした。

本当に帰りたい気持ちが強くなっていたのですが、来てすぐに帰ると変なのでその場を動けなくなってしまいました。目線も段々と下に下がり、周りの顔を見れなくなりました。

そうして受け身な状態を続けていたら1名の方に話しかけてもらってことなきを得たのですが、今振り返るとその時の自分は、その場に行っただけで頑張ったんだと思えるようになりました。

 

あとは、この症状は新たなコミュニティに属し始めたとしても、1ヶ月程度で解消するらしいので、もう少し頑張ってみようと思っています。

 

今は週3日リモートワークで、他は出社を指示されているのですが、診断書をもらえたらフルリモートにしてもらえるかもしれないなあ、などと邪な事を考えたりもしています。

 

終わりに

場面緘黙症を自覚してすぐに筆を取り、ここまで思いつくままに書き連ねてしまったので読みづらさはあるかと思いますが、世の中の同じ悩みを抱えている方の安心につながれば幸いです。

 

今度親にも話してみようと思います。

 

それでは。

確定申告が終わったのでその記録

8ヶ月ぶりですが、ネタができたので書きます。

 

掲題の通り、確定申告をしました。

なんだかSEOに良さそうな単語ですね。

 

確定申告のハードルって結構高いと思います。

その原因となっているのが、人によって必要な手続きや仕訳の仕方が様々だから、自分に当てはまるやり方がどれなのかわからないところだと思います。

 

すべてのドキュメントに目を通すのは骨が折れますし、大抵は近い事例を探してそれっぽく進めていくことになるので時間もかかります。

 

私のケースはそこそこよくあるケースで、仕訳もシンプルだったのでなんとかなりましたが、がっつりフリーランスの方だと大変なんだろうなと思いました。

 

というわけで運良くこの記事に辿り着いた方の参考になればと思い、私の事例を紹介します。

 

 

私のケース

  • 正社員として収入があり、年末調整が完了している
  • 2024年度中(2024/01 - 2024/06)に副業を行なっていた
  • 副業の所得金額が200,000円を超えている
  • iDecoをやっている
  • ふるさと納税はやっていない

大前提確定申告が必要なのは、本業以外の所得金額が200,000円を超えている場合のみです。

給料として貰った金額から経費を差し引いた金額のことですね。

なので、210,000円の給料を副業で得ても、交通費等で10,000円を超える経費が発生している場合は申告不要です。

 

事前準備

マイナンバーカード

事前準備の時点でハードルが高いと思うんですが、マイナンバーカードは散々国から作れと言われていますし、流石に作っておいた方がいいです。

注意点としては、作ってから5年経っていると電子証明書の有効期限が切れているので、役所に行って更新する必要があります。

私はちょうど今年に期限が切れる年だったため、先月更新したばかりでした。危ない。

 

ちなみにパスワードはマジで忘れないようにしておいた方がいいです。

開業届

そして、控除額が最大になる青色申告をするために、開業届を提出する必要があるので、まだの場合は急いでやった方がいいです。freee開業とか使うと無料でできます。

ただし、開業届を提出すると受けられなくなる国の福利厚生(失業保険とか)があるので注意

そして、開業届を提出する過程でマイナポータルにログインできるようになっているはずです。

源泉徴収票

本業でいくら稼いでいるかも一緒に報告する必要があるため、源泉徴収票も手元ない場合は会社に申請しておきましょう。

 

ふるさと納税をやっている方は証明書的なものも準備した方がいいと思います(私は今回やりませんでした)

 

仕訳作業

利用サービス選定

事前準備が終わったら仕訳作業です。

おすすめはMoneyFowardやfreeeなどのサービスを利用することです。

 

1から申告書を作成するのは流石に費用対効果が悪いです。

税理士とか簿記1級持ってる方なら良いと思います。

 

MoneyFowardだと月額が1000円以下なので、私はこちらを利用しました。

※最初にfreeeを使おうとしたのですがUX悪すぎて年額契約してしまい萎えたので、マネフォにしました。返金依頼をしていますが、受理されるのか...

※そういえばMoneyFoward MEを使っていることを思い出して、連携が楽にできそうだったというのもあります

 

他には弥生もあると思いますが、使ったことがないので良し悪しは不明です。

以降はMoneyFowardを利用する前提の話です。

仕訳作業

口座やクレカの連携ができるので、副業に利用した口座やクレカを連携します。

 

副業に関係のある収支を仕訳表に登録します。

私の場合はリモートワークで仕事を請け負っていただけなので、基本的には収入のみでした。

経費として計上したのは後述する家事按分のみでした。

家事按分

こちらはググればたくさん出てきますが、業務とプライベート両方で利用したものを利用率分だけ計上するやり方です。

 

例えばリモートワークしている時の家賃と通信費、電気代等です。

これを自分が業務している時間等で割合を算出し、計上します。

これをしないと控除額が減って税金が増えてしまうので、忘れないようにしましょう。

その他収支の登録

本業の収支を登録

副業分の仕訳が完了したら、源泉徴収票を元に本業の収支や天引きされた社会保険料等を記入します。

その他保険料控除、ideco控除等の登録

年末調整の時にやっていることをここでもやります。

11月くらいに届く書類を見ながらやることになると思いますので、失くしていたら再発行するしかありません。

 

基本情報の登録

氏名や住所、その他自分に当てはまる項目を全て埋めていきます。

案内通りやれば迷うことはおそらくないです。

 

また、還付金振込先の口座も登録できます。

還付金とは、確定申告した時の所得税の支払いが多かった場合に返ってくるお金のことです。年末調整と同じですね。

 

確定申告書の作成

これまでの入力を済ませておけば、確定申告書がほとんど出来上がっていると思います。

少しとっつきにくいですが、確定申告書のすでに入力された金額を1つ1つ確認し、全て説明できる数字が並んでいれば問題ないはずです。

 

下記に例を挙げてみました。

----

収入

本業の収入:5,000,000

副業の収入:1,000,000

合計:6,000,000

 

控除額

社会保険料控除(本業で控除済み):800,000

基礎控除(本業で控除済み):480,000(参考

小規模企業共済等掛金控除(ideco):200,000

合計:1,480,000

 

確定申告による控除額

青色申告特別控除:650,000

 

副業で発生した経費

家賃等:30,000

 

課税対象の所得金額

6,000,000 - 1,480,000 - 650,000 - 30,000 = 3,840,000

 

所得金額に対する所得税額(参考

3,840,000 × 20% - 427,500 = 341,000

 

本業で支払い済みの源泉徴収

150,000

 

定額減税

30,000

 

確定申告時に支払う所得税

341,000 - 150,000 - 30,000 = 161,000

----

 

こうして並べてみると控除って結構されてるんだなーって感心するんですけど、控除がたくさんあっても税率が高いんだったら意味ないなとなりました。

そして所得税より社会保険料をもっと低くしてほしいですね。

 

青色申告決算書

ここまで作ったら終わりかと思いきや、決算書も作成する必要があります。

確定申告書よりかは大雑把なものでした。

メインとなる収入について記載するのと、地代家賃などの経費の合計額を記入する感じですね。

貸借対照表が一番最後に出てきますが、年末時点での口座の金額と一致するように作る感じですね。(事業用の口座にしていることが前提)

 

利息が付いたり、個人用に利用した場合には「事業主借」の科目にする必要があったりしますね。

 

提出

ここまできたらこの2つの書類をxtxの形式のファイルとして出力できるようになります。

提出の方法はいくつかあります。

 

PC

  • e-tax (web)から提出
    • 私は導線を見つけられず断念しました
  • e-tax(ソフトウェア)
    • windows限定ですが、ソフトウェアをインストールして提出する方法があります
    • 私はMacOSなので家族のwindowsを借りて進めましたが、電子証明書の確認がICカードリーダか、他のよくわからない方法しかなかったため先に進めず断念しました

スマートフォン

  • MoneyFowardのアプリ経由で提出
    • 最初からこの方法でやればよかったと心の底から思いました
    • 電子証明書の確認は、スマホについているICカードリーダにかざせば良いだけでした
    • 仕訳等の入力はPCのブラウザで行い、提出だけスマホアプリからやるのがスマートそうでした
    • 注意点としては、提出方法をMoneyFoward上で選ぶ必要があり、そこで「スマホアプリで提出(電子申告)」を選択しておく必要があります
    • おかげさまで10分もかからずに提出は完了しました
    • 前の日に3時間くらい格闘したのに..

 

終わりに

なんだかMoneyFowardの回し者みたいになっちゃいましたが、案件ではないです。

UXの改善余地はあったものの、基本的には書いてある通りにやりつつ、わからないところはググるかchatGPTに聞きながら進めればあまり迷うことなく進められました。

 

ちなみに簿記2級を学生時代に取得したのに全然覚えていなくて悲しかったです。

 

そして実は、前職の後輩(2名)や新卒の時の同期が今freeeに転職して働いているので、金返せ!って言ったらワンチャンあるかもしれないなと妄想しています。

 

そういえば、フリーランスの先輩に聞いたんですが、確定申告って1月末くらいからできるらしいですね。

わざわざカレンダーに入れて満を持して取り組んだのに。。

 

それでは。

記録

この2ヶ月くらいに色々やったのでまた書いていこうと思います。

 

私生活

デスク周り

2, 3年前からリモートワーク用のデスク周りを少しずつ改善してきました。

順番は前後するかもしれませんが、下記のような改善を重ねてきました。

 

改善対象 before after 効果
 モニター   直に設置  モニターアーム使用   省スペース化、掃除しやすくなった 
 マイク   PC内蔵マイク or airpods  外付けマイク  ノイズキャンセリングにより音がクリアに(同僚からの評判が良い)
 椅子  5000円くらいの椅子  akracing  腰への負担が楽に。仮眠も取れる
 モニター  27インチ + 21インチ  29インチのワイドモニター + 27インチ  デスクトップ上の作業スペースが広くなり、効率化
 webカメラ  PC内蔵カメラ  外付けカメラ  角度の調整がしやすくなり、顔が正面から映るように。macbookを閉じた状態で置けるように。
 配線や切り替え作業   手動で差し替え   KVMを導入  私用のPCと仕事用のPCに繋いでいるモニター、キーボード、マウス、マイクをボタン1つで切り替え可能に 
 マウス  logicoolの適当なやつ  logicoolトラックボール  マウスを動かす必要が無くなり、可動域の確保が不要に
ライト  部屋の明かりのみ  デスクライトを設置  作業スペースが明るくなり目に優しい。カメラに映る自分の顔がハッキリした。
 充電器  コード  ワイヤレス充電器設置  スマホairpodsの充電は置くだけでできるように
 デスク  ニトリの貰い物  flexispot + ニトリの天板  安定感+、高さを自由に変更可能。スタンディング対応

こう見るとだいぶやり切った感ありますね。

リモートワークが主流ではなかった2019年初頭の頃の自分がこの表を見たら、「金掛けすぎだろw」と言いそうです。

ここまでやってしまうとオフィスでの仕事効率が下がりますね。

昇降デスク

さて、その中でも一番下のデスク交換についてです。

つい昨日行ったばかりなので、組み立て後の興奮冷めやらぬうちに詳細を書いておこうと思います。

flexispotとの出会い

flexispot自体はだいぶ前から知っていて、持っている人に使わせてもらったりして憧れはありました。

今年に入ってから腰を痛めることが増えてきて、mtgの時くらいは立って仕事するようにしたいなと思っていた矢先、

5月末あたりにたまたまセールをやっていたので思い切って買いました。

3人くらいの同僚にもかなりおすすめされたので、結構背中を押されています。

購入した型

私が購入したのはEJ2という型で、最新はE7 proかな?

比較してみたんですが、フレームがコの字型になっているところ以外は大差なくて、1万円くらい値段が違ったのでコスパを取りました。

 

元々公式がこのくらい値下げしていて

53,900円 → 43,120円

 

yahooショッピングを見に行ったらもっと安くなっていました。

43,120円 → 29,000円(大体)

 

本当か?!と思って何度も型番を比較しました笑

そこからyahooショッピングのインスタントクーポンみたいなもので1,500円値引きされ、paypayの還元率が5%とかだったので実質25,000円くらいで買えました。

天板

天板は別で買いました。flexispotもそういったカスタマイズを想定した設計しているあたり好感が持てます。

選択肢は様々ありましたが、そこまでこだわりがないためニトリの5000円の天板を選びました。

送料込みで6000円。こちらもpaypay還元が多少あったかな。

組み立て準備

さて、天板を別で買ったということは、穴を自分で開けなければなりません。

さらに今回は木ネジではなく鬼目ナット + ボルトを使うことにしました。

引っ越しの際に取り外しがしやすい、穴がバカにならない、といった理由があります。

この辺は同僚に教えてもらいました。

 

工具やパーツに何が必要なのかメモ的に買いておきます。

  • 鬼目ナット M4 10mm × 10個(長さは天板に合わせる)
  • 六角穴付きボルト M4 20mm × 10個(天板用。穴は11個ありますが、1個くらいなくても大丈夫)
  • 六角穴付きボルト M4 15mm × 2個 (昇降させるリモコン用)
  • 六角レンチ(M4ボルトが回る大きさが必要)
  • 電動ドライバー
  • 木工用ドリル 6mm
組み立て

さて、買うものは買って全部届いたは良いものの、組み立てが面倒すぎて2週間くらい放置していましたが、重い腰を上げてようやく取り組みました。

一番の不安要素が穴開けでした。

一度もやったことがないのでミスって貫通したらどうしようという不安の中、穴開けをしている動画を見まくってイメトレを繰り返しました。

 

いざやってみるとそんなに簡単に貫通はしませんでした。1つ終わったらあとはポンポン開けて終わり。

ただ、中央付近は中が空洞になっているようで、穴がすぐ開いてめちゃくちゃ焦りました。

 

かかった時間は合計2時間位ですかね。

デスク

現在のデスク環境

webカメラが2つあるのはKVMのポートが足りない関係で仕方なくという感じです..w

 

ジム

腰を痛めることが多いと前述しましたが、それは恐らく筋力不足からきています。

姿勢も悪いですし、運動不足でもあるのでジムを検討しました。

※危機感ニキに触発されたわけではありません。

 

3年ほど前にジムに通っていたのですが、引っ越ししたこともありそれっきりでした。

また同じようなジムでも良かったのですが、1人で始めても続く気がしませんでした。

 

なので、パーソナルトレーニングを選択しました。

とはいえどこも料金が高額なので、なるべく安いところで..。

調べまくっていると、地元密着型のyoutuberが近所のジムを紹介する動画をupしていて、中々雰囲気が良さそうだったので体験に行ってみました。

 

しつこい営業もないし、年齢の近いお兄さんに付いてもらえたこともあって楽しく過ごせました。なんというか美容院に行ってる感覚に近いです。

満足度が高かったこともあり、そこに3ヶ月通うことにしました。

今2ヶ月目ですが、気持ちいい筋肉痛が続いています。

 

そのうち自己トレーニングができるようになって、普通のジムに変更することを検討しています。(トレーナーからもそれがいいと言われている)

現在は実家の近くで一人暮らしをしているのですが、その実家で犬を飼い始めました。

dog

実家の犬

親が昔犬を飼っていたり、2年くらい前にも叔父の家で飼っていた犬を面倒見る機会があったことから、自分でも飼いたくなったようです。

 

この写真は私が昨日プレゼントした夏用のベッドで寝ている姿です。

元々猫派だったのですが、こういう姿を見てしまうと結局可愛いですね。

 

家が近いこともあり2, 3日に1回は会いに行っています。

この子のおかげもあり家族交流の機会が増え、運動不足解消にもなり、家の片付けも習慣化するようになりました。おまけに可愛いので一石四鳥ですね。

仕事

昇格

現職では1年に2回昇格の機会があります。

一般社員は6段階あり、スペシャリストやマネジメント特化している方はその上の等級になります。

 

私は中途入社した時に等級4から始まり、2年半経ったこの前等級6に上がりました。

次はスペシャリストに向けて成果を出していく必要があるのですが、ここの壁がとても厚い。

1000人弱いる会社ですが、スペシャリストは数えるほどしかいないそうです。

うまく行っても2年後とかですね。

 

それは良いとして、弊社では等級に対する給料が固定(レンジがない)ので、等級が上がらないと給料が上がりません。

 

2年間給料上がらないとかマジ...?

変動があるとしたら賞与ですが、業績に左右されるのでアンコトローラブルです。

それに最近は賞与額低いししょっぱい。

 

何をモチベに仕事すれば良いのか。

その逃げ道として今は週休3日にして副業の割合を増やしていますが、それも限界がある。

 

転職活動

ということで、動くのは早い方が良いので3年ぶりに転職ドラフトに参加しました。

正直選考受けるの面倒なのであまり乗り気ではないですが、覚えているうちに職務経歴書を更新しておきたかったので、そのついでに参加しました。

 

5社ほどから指名があり、提示年収も希望額通りのところが大半なので悪くなさそうです。

そろそろ返答期限が迫っているので悩んでいますが。。

 

もうちょっと今の安定した環境で市場価値を高めてからにしたい気持ちはあります。

今までwebアプリケーションエンジニアとしてスキルをつけてきましたが、もうちょっと後ろ側のネットワークやインフラに興味が出てきたので、その辺の勉強を今はしています。

 

今まで経験則で補ってきた部分が補完されていく感覚が気持ちいいですね。

 

1社くらいは話聞いてみようかなと思います。

 

それでは今回はこの辺で。

雑記

こんにちは。

 

1年以上書いていませんでしたが、文字でアウトプットしてみたくなったので思いのままに書いてみます。

2023年はそれなりに激動でした。

私生活

引越し

元々は都内に住んでいましたが、1月に地元の千葉に引っ越しました。

都心に住むのに疲れ、地元以外の郊外にはすでに何ヶ所か住んだことがあり、さらに特に住みたい場所も無かったので戻る選択をしました。

 

たまたま実家から徒歩で行ける場所に条件の合う物件があったので、内見したその日に契約しました。

やはり実家が近いと生活におけるメリットがたくさんあります。

  • ご飯を作る気力がない時は実家に行けば何か出してくれる
  • 遠出したい時や大きい(物理的に)買い物をする時に実家の車を使える
  • 家族の様子が分かる
  • 誕生日などのイベント事で呼ばれたときにすぐ行ける

 

なんと言っても精神的な安心感がありますね。

自分に何かあった時だけでなく、家族に何かあった時にすぐ駆けつけられるので目に見えない不安からある程度解放されます。

 

直近で言うと年始早々コロナになりまして、そこまで重症化しなかったものの、すぐに食糧を届けてくれました。

※2022年の12月にもコロナになっていて、ほぼ2年連続でした😞

 

また、地元の友達と遊べるというメリットもありますが、そういえばまだ1回も遊びに行っていませんでした。

twitterでは繋がっていますが、いつでも会えるとなると逆に面倒になってしまってます。よくないですね。

 

生活

概ね満足しています。

まず家のスペックが上がったのでストレスが減りました。

before after
1K 1LDK
25平米 42平米
1階 2階
東向き 南向き
駅徒歩10分 駅徒歩5分

 

まず広くなりましたね。広さは正義です。

圧迫感があるとストレスですから

 

1階は最悪でした。陽が入りにくいし近所の目は気になるし、場所によっては虫が出たりします。

2階になってしかも南向きになったので、部屋が暖かいです。

 

駅徒歩はそこまで苦では無かったのですが、近いに越したことはないですよね。

その他

  • ピアスを開けました。ちょっとだけ外に行くのが楽しくなりました。
  • 親知らずを3本抜きました。ずっと放置していたんですが、歯磨きの効率が悪いので抜いたろうと思って抜きました。そんなに辛くなかったです。

仕事

本業

今の会社に来てから2年経ちましたが、相変わらず仕事内容はそこまで楽しくないです。

事業内容とかサービスにはあまり面白さを感じないので、技術面で面白さを見出してなんとかやってます。

 

2023年で1つ挑戦だったのは、社内専用のnpm packageを作った事ですね。

ライブラリを開発する思考は今までなかったのですが、弊社のプロダクト群は細かくマイクロサービス化されているため、共通する機能をそれぞれに実装してしまうと色々問題も起きやすいことから実装に至りました。

 

nodeのversionとか、buildの事とか普段あまり考えない領域の知識がついて良い経験になりました。

成果物としてもかなり全体最適なものを作れた自信があり、目標設定では「これを作り切ったら等級上下られると思う」と言われたので、8月と9月に身を削って作り切りました。

 

そしていざ評価面談になると、「使われるまで評価できない」とのこと。なんやねん。

そうだとしてもどれだけ頑張ってたかは見てるやんか

 

別件で対応したノーコードツールでの成果物で人件費1/3にしたんですけど、そちらの方が評価されました。エンジニアっぽいことで評価してや。

上司

という感じで評価周りで上司への不信感が高まりましたが、10月から部署が統合されて上司が変わりました。

今の上司は、先の上司と比べて普段の仕事ぶりをとてもよく見ているし、評価に反映してくれます。

サポートも(大丈夫かと心配になるほど)手厚いし、次は良い評価になることを期待しています。

同僚

部署が統合されたので同僚も少し変わりました。

前よりも専門性が高いメンバーが多く、刺激を受けています。

上司も含めてほとんどプロパー社員なので、会社による洗脳の影響で思考が偏ってて反吐が出ることもありますが、概ね満足しています。

副業

10月から副業を始めました。社員数15人くらいのスタートアップでバックエンドエンジニアとして働いています。

今は一生終わらなさそうなデータ移行の仕事を粛々とやっています。

業務委託なので面倒な責任がなく、コードを書くこと以外は何もやらなくていいので気が楽です。

 

また、時給的にも本業より高いため、本業より副業の比率を高くしています。

具体的には週休3日制を導入しました。

固定で金曜日が休みになるのですが、そこを副業の時間に充てることで手取りの給料が純増しました。

(そして今更奨学金を払い終えました。)

英語

本業の方で英語のオンラインスクールに無料で通わせてくれるとのことで、希望者かつ適任者の10名程度がエンジニア全体から選ばれました。

事業に興味がない&別のスキルを付けるいい機会だと思ったので希望したら通りました。

なお、大学受験をまともにしていないので英語力が高校2年くらいで止まっていて辛いので、最近は合間の時間に英語の勉強をしています。

ペラペラになるのはおそらく無理ですが、ちょっとした会話がすんなりできるようになれたらなと思います。

最近ハマっているもの

  • 韓国ドラマをコツコツ観ています。最近は「トッケビ」と「恋はゴールドメダル」を観ました。ナムジュヒョクが好きです。
  • LIGHT HOUSEをこの2週間くらいでちまちま観ていました。星野源とオードリー若林の対談です。結構刺さる内容が多かったです。「物事は二項対立で説明できることはほとんどなくて、大抵はグラデーションなんだ」という話で幾分か気持ちが楽になりました。
  • 日向坂46に2019年頃からハマっていますが、今年も引き続きライブなどに行く予定があります。生写真集めはいつからかやらなくなってしまった。。
  • スプラトゥーンは半年くらいやってなかったんですが、年明けに少しやった事で週1くらいで復活しています。

最近欲しいもの

  • マウス
  •  キーボード
    • 家では青軸のキーボードを使っているのですが、副業を外でやる機会が生まれ始めたので、打鍵音の小さいキーボードが欲しいです。
  • windows PC
    • steamのゲーム(今はパルワールド)をやってみたい。

 

以上

SymfonyでAPI Platform使ってみたが、うまくいかなかった話

こんにちは。

本業の方が結構退屈なので、最近はプラベートで開発をしています。

 

とある案件があってAPIサーバーを作ることになり、前職で利用していたSymfonyで作ろうかなーと作業していました。

 

swagger UI的なものでAPI仕様も表現したくて、公式が推奨しているAPI Platformを触ってみました。

symfony.com

 

これすごいですね。

ソースコード上にendpointやrequest parameter, reposnseを定義して、それをそのままAPI PlatformのUIで表現できる。

f:id:kenshlro:20220416232458p:plain

 

I/Oの定義が可視化されているだけでなく、実行もできちゃいます。

f:id:kenshlro:20220416232522p:plain

[Try it out]を押すと実行状態になります。

 

f:id:kenshlro:20220416232602p:plain

 

本業の方でtypescriptのフレームワークloopbackを使って全く同じようなこと直近でやっていて、他でもこういうのやりたいなーと思ってたらsymfonyでできちゃいました。

 

このページも/apiにアクセスするだけで見れてしまうので、直感的で良いですね。

 

公式の感じだと、tableに対応するEntityがそのままAPIのEntityとして使われる想定みたいでした。

tableと紐付けないAPIのEntityを作って実現していくのも一応できそうでしたが、あまりドキュメントが充実していないくてベストプラクティスに辿り着けませんでした。

 

この辺とか、かゆいところに手が届かない。

api-platform.com

 

symfonycasts.com

 

1階層?のEntityありきで、input, outputのDTOを作るところまでは行けたんですが、

ネストされたinput(post requestのパラメータが深いjson構造になってるとか)だと受け切れなくて諦めました。

 

今までだとControllerでrequestを受け取って、それをFormTypeにバインドするってことができたと思うんですが..

 

具体的には、LINEのメッセージをwebhookで受け付けるAPIを作りたかったんですが、うまくやる方法を見つけられませんでした。

https://developers.line.biz/ja/reference/messaging-api/#message-event

 

なので、普通にControllerで受けるやり方にすることにしました。

そのうちいいやり方が見つかったら置き換えていくのもそんなに難しくないと思うので、誰かがうまくやってくれる日を待ってます。

 

なんかこれを見るとAPIのリクエストはそのままだとバインドできないのか..?

また色々試してみます。

qiita.com

PHPのMVCフレームワークを作った

お久しぶりです。

今回はプライベートでPHPMVCフレームワークを作る機会があったので、記録ついでに書いていきます。

 

とりあえずMVCだけあれば良かったので、routing, Response, Requestあたりは作ってません。

 

public/.htaccess

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>

 

Apacheの設定ファイルですね。

ここでは、パスと一致するファイルが存在しない場合、アクセスをindex.phpに集約するということが書かれてます。

 

少し雑ですが、要件としては問題ないのでこれで。

 

public/index.php

<?php
define('ROOT_PATH', str_replace('public', '', $_SERVER["DOCUMENT_ROOT"]));

require_once(ROOT_PATH.'Controllers/ContactController.php');
use Controllers\ContactController; // pathを取得 $path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH); if ($path === '/contact/index') { $controller = new ContactController(); $controller->index(); } if ($path === '/contact/confirm') { $controller = new ContactController(); $controller->confirm(); } if ($path === '/contact/complete') { $controller = new ContactController(); $controller->complete(); }

超絶手作業ですが、routingは今回スコープ外なのでこれで。

 

例えば、http://localhost:8888/contact/index

でアクセスされたらContactControllerのindexメソッドが呼ばれます。

 

ちなみに今回は問い合わせフォームを作ってます。

 

ContactController#index

class ContactController
{
    public function index()
    {
        ViewBase::render('/Contact/index.php');
    }

~~~

本当はrequireとかuseを上の方に書いてますが、省略。

indexメソッドにアクセスが来たら対象のviewファイルをrenderするようにしています。

 

renderの中身は後述しますが、ViewBaseというrender用のクラスを作ってます。

名前適当につけたんですが、一般的なフレームワークはなんて名前付けてるんでしょう。

symfonyはここから先追えなかったのでわかりませんでした。

symfony/AbstractController.php at 6.1 · symfony/symfony · GitHub

 

ViewBase

class ViewBase
{
    public static function render($fileName, $params = [])
    {
        $filePath = ROOT_PATH.'/Views/'.$fileName;
        extract($params);

        ob_start();
        ob_implicit_flush(0);
        require $filePath;

        $content = ob_get_clean();

        echo $content;
exit;
    }
}

Viewsディレクトリにあるファイルを出力してます。

埋め込む変数も渡してextractで作っています。

 

この辺書いていて思い出したんですが、renderの元を辿るとechoだったなと。

我々はechoから始まったんだった。というのを思い出させられました。

 

普段フレームワーク使ってると意識しないですよね。

 

ContactController#confirm

class ContactController
{
  public function confirm()
    {
       // POSTのみ受け付ける
        if (!$_POST) {
            header('Location: /contact/index');
            exit;
        }

        $contactValidator = (new ContactValidator($_POST));
        if ($contactValidator->isValid()) {
            ViewBase::render(
                '/Contact/confirm.php',
                [
                    'name'  => $_POST['name'],
                    'kana'  => $_POST['kana'],
                    'tel'   => $_POST['tel'],
                    'email' => $_POST['email'],
                    'body'  => $_POST['body'],
                ]
          );
        }

        ViewBase::render(
            '/Contact/index.php',
            [
                'name'   => $_POST['name'],
                'kana'   => $_POST['kana'],
                'tel'    => $_POST['tel'],
                'email'  => $_POST['email'],
                'body'   => $_POST['body'],
                'errors' => $contactValidator->getErrors(),
            ]
      );
   }

confirmです。

validatorを挟んで、問題あれば入力値保持したままindexへ。

問題なければconfirm画面を表示

validatorはただのクラスなので特に載せません。

 

ContactController#complete

class ContactController
{
  public function complete()
    {
       // POSTのみ受け付ける
        if (!$_POST) {
            header('Location: /contact/index');
            exit;
        }

        if (!$_POST['name'] 

            && !$_POST['kana']
            && !$_POST['tel']
            && !$_POST['email']
            && !$_POST['body'])
        {
            header('Location: /contact/index');
            exit;
        }

$contactValidator = (new ContactValidator($_POST));
        if ($contactValidator->isValid()) {
            try {
              $pdo = (new Database())->getPdo();

              $sql  = 'INSERT INTO contacts (name, kana, tel, email, body) VALUE (:name, :kana, :tel, :email, :body)';

              $stmt = $pdo->prepare($sql);

              $stmt->bindValue(':name', $_POST['name'], \PDO::PARAM_STR);
                $stmt->bindValue(':kana', $_POST['kana'], \PDO::PARAM_STR);
                $stmt->bindValue(':tel', $_POST['tel'], \PDO::PARAM_STR);
                $stmt->bindValue(':email', $_POST['email'], \PDO::PARAM_STR);
                $stmt->bindValue(':body', $_POST['body'], \PDO::PARAM_STR);

                $stmt->execute();

                // 表示
                ViewBase::render('/Contact/complete.php');
            } catch (\PDOException $e) {
                error_log($e->getMessage());
                var_dump($e->getMessage()); //エラー画面へ遷移させるとかする
exit;
            }
        }
        // indexへ戻す
        ViewBase::render(
            '/Contact/index.php',
            [
                'name'  => $_POST['name'],
                'kana'  => $_POST['kana'],
                'tel'   => $_POST['tel'],
                'email' => $_POST['email'],
                'body'  => $_POST['body'],
                'errors' => $contactValidator->getErrors(),
            ]
        );
    }

DBに接続して保存してます。

Repositoryは作ってないのでsqlとか直書きです。

 

Models/Database

class Database
{    
    private $pdo;

    public function __construct()
    {
        $dsn      = 'mysql:host=127.0.0.1;port=3306;dbname=casteria;charset=utf8';
        $user     = 'root';
        $password = 'root';
        $opt      = [
            // エラーを取得するため
            \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION,
            // sqlインジェクションを回避するため
            \PDO::ATTR_EMULATE_PREPARES => false,
        ];

        $this->pdo = new \PDO($dsn, $user, $password, $opt);

    }

    public function getPdo()

    {
        return $this->pdo;
    }
}

DB接続です。

 

簡単ですがここまで作ってみての感想ですが、あらゆる場所で「あのケースも考慮しなきゃダメでは..?」みたいに常に不安になりながら実装してました。

なのでフレームワークには大感謝ですね。PRしてみようかなという気持ちになります。

 

また、実務に直接関わることはなさそうですが、忘れていた部分も多かったのでやってみてよかったです。

最近競技プログラミングをちょっとだけやっているのですが、そのスキルがこの辺で使えそうだな、と思いました。