tekitoumemo’s diary

思ったことを書くだけ。長文版Twitter

2025振り返って

2024を振り返って - tekitoumemo’s diary

今年も良い年だった

個人サービス

  • LAYHL

8月ぐらいからちょこちょこ作り始めて10月にリリースした。ふと思い立って自分のPCでSD1.5使って画像生成したら思いのほか感動し、AIでストリートスナップサイト作れたら最高じゃね?という感じで始めた。今思うとSD1.5で勝負しようとしてたの情弱の極みすぎて終わってる。逆にいうと情弱じゃなければリソース面で諦めてたので結果オーライ

lahyl.me

  • Ehrotok

大学の友人と作った。フロント担当してバックエンドは友人。DMM動画をTiktokっぽく見れたらよいんじゃね?というノリで作ったので初動めっちゃ開発して今年の3月ぐらいから放置してる。アダルトは宣伝するのが激ムズでそこが課題となってしまった。とはいえ結構流入はあるのでこのまま活かしてもよいかなとは思ってる。とりあえず友人と物作りして楽しめた

※アダルトなので閲覧注意
ehrotok.com

  • olcar

相変わらずアクセス数はほかの運用してるサービスに比べて圧倒的に良い。今年はあまり力入れてないが、Elasticsearch導入とコスト減をやった

ol-car.com

技術

新たに使った技術

  • Elasticsearch

olcarのデータが増えすぎたのでRDBだとクエリによっては数秒かかるようになりElasticsearchを導入。サーバーはConoHa VPSで格安運用にして同時にPlanetScaleからConoHa VPSに移行して維持費めちゃ安くなった

LAHYLもElasticsearch一本にしてる
そもそもRDBで頑張ってパフォーマンス上げること自体間違ってるのでデータによって切り分けるのが正解だとわかった

  • NextJS、Hono

LAHYLで採用した。HonoがCloudflare Workersで使えるという時点で即採用でSSRもいけるのでマジで最強構成だと思う。NextJSはノリ

  • Cloudflare Workers、Cloudflare R2

これ以上良いサービスが見当たらない。Cloudflare D1も迷ったが、RDBはパフォーマンスの懸念がいずれ必ずくるのでやめた

diffusers使うために使ってる。画像生成モデルはひとしきり触った。色々見ていくなかがでSD1.5->SDXL-> FLUX.1-schnell-> FLUX.1-devと渡り歩いた。ここまで来るとあとは札束で殴るぐらいしかないのでどうやっていくか迷い中。

左からSD1.5->SDXL-> FLUX.1-schnell-->FLUX.1-dev。目が肥えすぎてFLUX.1-schnellまでは明らかにAIってわかるようになってきた

あとpythonさわってみて、いろいろ言語論争あるけど一番最強なんじゃないかなって思っている。あきらかに出来ることが多い。

  • codex

codex cli使っているが生産性が異常に上がった。正直NextJSは雰囲気しかわかっておらずほとんどcodexに作ってもらっている。逆に雰囲気わかっていればトラブルシュートが出来るので雰囲気が分かればどんな言語でも使える時代になったの強すぎ

会社でちょこっと触るようになった。あまり興味ないけど、一応新たに触った技術かな

olcarと仕事だけ。なんでも出来る言語ではあるんだけど他に比べて開発体験悪すぎて使う必要性が限定的。Unityぐらいじゃないかな

  • Flutter

ほんとに触ってみたレベルだけどolcarのアプリ作ろうかなと思って触ってみた。olcarは性質的に賛否あるサービスなのでアプリ化するのどうなの?みたいなところもあり辞めちゃったが、所管としては新鮮味あって良い気がする。っかReact Nativeとかいつもと変わらなすぎてやる気削がれるからDartは新鮮味あって良い

Ehrotokでちょこっとだけ。これもC#と同じく必要性がほぼないものって印象。好きだったら使えば良いんじゃないかな。

仕事

今年は暇だった。過去の記事でも書いたが会社を入社した目的がノンストレスで淡々と仕事をしたいみたいな感じだったのでようやく目的通り働けて良かった。仕事に関してはやりたいことが技術以外で全くないのでこれからのキャリアとか真面目に考えないととは思ってるがとりあえず暇であれば良いという思考になってて非常に良くない気がしている。

プライベート

  • 会社のバスケ部に入った

未経験で30半ばのおっさんなのでだいぶ気まづいが勢いで行ってみた。これがきっかけで会社の同僚とバスケ行くようになったのでかなり良かった

  • ジム

続いてる。ベルトやパワーグリップ使ってるので結構気合入ってるジムにいる人みたいになってる

  • 仮想通貨

ビットコイン以外にも少額だけどやり始めた。普通に赤字すぎてやめようと思ってる

総括

こどもも元気で運動できて個人開発も楽しめてるので非常に充実した一年だった。年齢的にもそこそこなキャリアを積めてるのでそこまで悪くはないなと思ってる。自分のアイデンティティとして自分のサービスを新卒の頃から作り続けてるのでそれが来年も再来年も続けてられるかが自分のなかで重要な要素なんだろうなと思う

2024を振り返って

総評としては良い年だった。あらゆる面で改善できた

 

olcar

フロントエンド

やっとNuxt3にリプレイスできた!5ヶ月と長い期間が掛かった。。

 

バックエンド

データ量が100万件を超えパフォーマンスが落ちるようになってきたのでキャッシュとインデックスの見直しに注力した

 

マネタイズ

アドセンス以外はなし。なんか去年より増えた、アクセス数は変わっとらんのに。

 

健康

今年の4月からダイエットはじめた。85キロから69キロと16キロ減り腹筋割れるまであと一息のところにきたと思う。

 

仕事

長年一緒にやってきた人たちがほぼ辞めてしまった。キーマン的な人が辞めるとここまで影響あるのかと思うほど退職が続き衝撃を受けた一年だった。地味な仕事なので欲を出さずに適度にやっていこうと思う

 

個人開発

 

友人とtiktok風の🔞サイト作った

フロントは俺でバックエンドが友人、その他企画とか他の人もいる。

 

余裕で🔞なので閲覧注意

 

今年の目標

 

  • ラソン大会に出る
  • バスケサークルに入る
  • 腹筋割る
  • olcar継続

 

olcarをNuxt2→Nuxt3にアップデートした

ようやくolcarのNuxt3アップデートverをリリース出来た。今回は時間捻出などいろいろ工夫した点もあるので備忘録として

 

期間

コミット開始の3/14から7/28までの4ヶ月半。実際ほNuxt3の勉強もしたので約5ヶ月掛かってる。Nuxt2のサポート切れに間に合わんかった😭 

 

時間の取り方

仕事も忙しく、子どもの寝かせ付けは交代でやっているので時間が取れなさすぎて1日30分〜1時間を週3ぐらいで開発した。さらに4月からジム行き始め、子供が寝た22時すぎから週3ぐらいでジムに行くので開発に集中出来ていない。ただ時間がないからと言って1時間以上はやらず、きっちりやめるということを徹底した。結果的に体壊さずにすんだ。

 

やり方

Nuxt Bridgeを挟まず、一からリプレイスした。設計やライブラリなど見直したかったのでNuxt Bridgeだと逆に効率悪いと思ってやめた。アプリケーションの規模によるが、大規模であればNuxt Bridgeを挟んだ早くなる気がする。ただ、ほぼ違うフレームワークになったぐらいの認識なので一からやり直す方が無難。これはVueオワコンになるなと改めて実感した

 

Nuxt3リリースかバージョンアップまで一年以上空けた

リリース直後はVue3の評判が死ぬほど悪く、破壊的変更がヤバすぎたので使ってるライブラリのVue3対応が軒並み遅れてた。実際にVuetifyやNuxt Seo周りが全然ダメだったので周辺ライブラリが落ち着いた半年後ぐらいに始めるのがベストだと判断した。Vue3.2から3.3まで2年以上空けており、しばらく待ったのは大正解すぎた。また去年はDBをplanetscaleに変えたり、playwrightで自動化を進めてたので単純に時間がなかった

 

新たなライブラリ

今回Nuxt2時代と変えたライブラリが以下

  • bun
  • tailwindcss
  • dexie→localstorage
  • Edge

yarnからbunへ。早いという点とNuxtのドキュメントにpnpmとbunがあったのでbunを使ってみるかーぐらいの感覚。デプロイまでのリードタイムは早くなったんじゃないかな。tailwindcssはユーティリティクラスの集合体なので感動は無かったが、eslintが効くのと名前を考え必要がないのが開発体験としては最高だった。dexieはindexDBのライブラリだが、要件としてはlocalstorageで充分なのでシンプルなlocalstorageにした。ただ、localstorageはただの文字列なのでindexDB使った方が結果的によかったかもしれない。最後はまさかのEdge。今使ってるmacbookがきびしい感じになってしまい、chromeが唸るようになったのでEdgeに変更したらかなり改善した。パフォーマンスの最適化がchromeよりはるかに良い。chromiumベースなので使いごごちも変わらないし言うことなしだった。chromiumgithub落ちるのでやめた

 

composables良い

Nuxt3のメリットといえば確実にこれ。ステートとロジックを共通で使えるのはシンプルに強いし、下手にグローバルステートを使う理由も無くなったので今はほとんどグローバルステート使ってない。

 

苦戦
  • Vuetify&Tailwind CSS

Vuetify v2では使えてた機能が使えなくなったり、tailwindcssとVuetifyのユーティリティクラスが競合すると言った絶妙にやり辛い部分があった。Vuetifyにユーティリティクラスをoffにするオプションが用意されてるが、offにするとVuetifyコンポーネントのスタイルが崩れるのでtailwind側にprefixをつける対応した。

 

  • Vite

一番喰らったのはrequire。以下のようなコンテンツ系は全部markdownで書いていてrequireが使えなくなってしまったのでNuxtのserverでファイルを読み込むようにした。importではSSRに対応出来なかったので地味に頭を悩ませたところ。またプロキシも地味に悩んだ

 

 

最後に

Nuxt2はasyncDataなどのSSRの取り扱いが結構だるかったので、そこら辺は意識せずに開発出来るようになったことは素晴らしい。domのref周りを心配してたがdefineExposeで参照を明示的に指定出来たりなどよりさらに良くなった。propsの型周りだけ絶妙にTypescriptじゃない感じがどうにかならんものかと思ってるが別にいいでしょう。ソースコード環境変数とか非公開にしたから一応公開してる👇

 

 

 

 

2023振り返って

2022振り返って - tekitoumemo’s diary

 

会社員

育休を3ヶ月半取った。育休中もめっちゃ開発やってたので復帰するときに違和感はなかったのは良かった。復帰後にお世話になってた上司が辞めてしまったので残念だったが今んとこ前向きに進められている。淡々となにも求めずに仕事をやるスタンスでいきたい

 

副業
Playwright

個人事業主のPR用のSNS運用を請け負ってるのだが、Playwrightを用いて運用している。また、olcarのTwitterアカウントもChatGPTと合わせて運用しているのでほとんど手が掛からなくなった。e2eはこれ一択。今年1番感動した技術

 

PlanetScale

Cloud SQLが耐えられなくなったタイミングで移行した。どちらかと言うとコストの関係で移行したが開発体験が良すぎたので最初から使っていれば良かった。設計ミスで29ドルのプランで爆発してしまったがチューニングした結果改善した。クエリのコストが見やすいのでチューニング体験が良いのも⭕️

 

olcar

行政書士さんと組んで「お任せ代行サービス」をはじめた。一言で言うと個人売買で納車までの手続きをサポートするという内容。車屋で買うと料金に含まれるので普通の人は意識しないところだが、実際はマージンが取られているのでうちより割高になる。初心者には厳しいが個人売買という性質上、ある程度知識やある人向けのサービスとなる。課題は山積みだが、使ってくれたお客さんは喜んでくれたし売り手買い手どちらにも需要があるサービスであることがわかった。この手のサービスはいまいち伝わりづらいのでどうやってユーザーに繋がるのか課題がある。

 

 

みんなの洋楽ランキングを閉鎖した

5年運用したみんなの洋楽ランキングを閉鎖した。流入も2万PV程度だったので少しもったいない気もしたが今後のビジョンが見込めない点とolcarに注力すべく閉鎖した。勢いで3ヶ月ぐらいで作ったサービスだが、思った以上に長く続いた。

 

olcarの流入が減った

月3万PV、4000ユーザーと年始と比べ1/3程減ってしまった。要因としてはTwitter APIの有償化、アカウントのシャドウバンが影響してTwitterアカウントが3ヶ月機能しなかった。ただ、思いのほかSEOが機能して6割の流入になってきたのでユーザー層が変わったと言う点では良かったかもしれない。あとはスレッズ運用もはじめたので流入がどうなるか検証中。

 

Nuxt3に上げられなかった

今年のミッションとして掲げてたがTwitter APIの有償化に伴う対応、DBが耐えられなったのて移行したりなどやれる暇がなかった。来年こそは上げたいのでとりあえずはNuxtの知見をぶっこむことから始める。

 

マネタイズがうまくいかない

olcarで始めたアドセンス以外のマネタイズは平均して月2000円程度の収益しか上げられなかった。単純に需要がないことに対してマネタイズを行なっていることが原因な気がする。あとは数が少なかったので来年は思いつく限りマネタイズ化できるものは始めていく。olcarとは別で個人で受注しているが注力したくないため、依頼があったら対応するという形をとっていく。受託はそこそこの金額を受けないとやらない方が良いというのが今年の経験としてわかった。

 

総括

プライベートに関しては二人目も生まれたこともあり充実していた。副業面でいうと、DBの移行やチューニング、TwitterAPI廃止対応など対応せざる得ないものばかりだったため進展がなかった。ただ、DB周りやX等のSNS運用などコストが掛かっていた部分が解消されたため来年は改善に注力できそう。来年はマネタイズになることを注力していきたい。というか思いつくことを全部やっていかないと歳とってきたのでなにも残らなくなりそうという危機感が募った一年だった

 

FluentMigratorからgooseに移行した

olcarのマイグレーションをFluentMigratorからgooseに移行した。

 

経緯

 

Dapperを使っていることからEF Coreのマイグレーションだけを利用するということが嫌だったので.NET用のマイグレーションFluentMigratorを使っていた。クエリビルダーなどC#との親和性が高く使いやすかった。

 

問題

 

PlanetScaleに移行した際にFluentMigratorが動かなくなった。元々MySQL5までのサポートしかしてなかったのでかろうじて動いてたという感じだったがPlanetScaleのMySQLのバージョンに対応しなくなってしまった。開発も2年前で止まっているし、もう捨てても良いかなという判断にした。

 

選定

 

選定基準としてC#と親和性のあるものを探していた。

 

- EF Core

MS謹製のORマッパー。全部入り。機能モリモリ。

 

- DbUp

.NETでは人気っぽい。今も開発はされており、MySQLもサポートしてる。SQLビルダーはなさそう?ドキュメントが読みづらいし使いづらそう

 

という感じで自分の求める条件に一致するのがEF Coreのみ。大人数で開発するのであればEF Coreという選択肢もありだが、マイグレーションだけ使うのも微妙だし、そもそも使いづらそう。ということでC#のライブラリは選定対象から外した。

 

結論

GO製のマイグレーション、gooseにした。選定理由はめちゃくちゃシンプル、人気だから。Go製のマイグレーションは使いやすいものが多い印象。GoもORマッパーが微妙らしいのでこのようなライブラリが多いのかもしれないけど。

 

 

おわりに

 

.NETのORマッパー周りはかなり酷いと思う。.NETの後方互換性は最強クラスだけど他が弱すぎるから勧められない言語の一つ

育休中にやったこと(技術)

第二子が生まれ、出産から3ヶ月育休を取った。

3ヶ月のうち1.5ヶ月はある程度余裕もできたのでやった技術的なことを書く

サイクル

1日交代で日勤、夜勤みたいな感じで子守をした。日勤の場合は娘を保育園に送ったあとの8時〜12時、夜勤は22〜2時に赤ちゃんの子守をするサイクルが出来たのでその間にいろいろやった

Playwright

playwright.dev

これがまっっっっっっっっっっじで神がかってた。TwitterAPIが死んで途方に暮れてたところにこいつで有料で使えなくなったAPIの代わりができた(本来と違う使い方)。当初はCypressで検証したのだが以下の点においてはるかにCypressよりよかった

・コード生成(codegen
・マルチオリジン
・認証状態を保持する(Preserve authenticated state)
GitHub Actionsのテンプレ

コード生成、マルチオリジンに関してはCypressじゃ厳しいし、認証状態を保持するのはマジで神。これをGitHub Actionsで気軽に実施出来ちゃうからやりたいことがyarn create playwrightに全て詰まってて最高だった。codegenはそのまま使えるわけじゃないけど、dom見て解析するのは地味に辛く、簡単にサポートしてくれるだけでもめちゃ助かる。

PlanetScale

PlanetScale: The world’s most advanced database platform — PlanetScale

MySQLのサーバーレスプラットフォーム。Cloud SQLが高すぎてアイオワ州の共有コアを使ってたがレコードが100万近くなり頻繁に爆発するようになった。改善するにしても東京リージョンの専用コアで一番安いやつが65ドルぐらいするしGCPがCloud SQLを見捨ててる感もあり何も変わらなそうな感じだった。それに比べてPlanetScaleダウンタイムのなしのスキーママイグレーションgithubっぽいブランチ機能が備えているので本番DBへの直接スキーマ変更はDeploy Requestで実施するし差分がわかりやすい。しかも無料枠がかなり多いので駆け出しでサービス作るにはかなり使える。olcarは1日で1億回readが走るので無料枠では使えなかったが29ドルと比較的リーズナブルで助かっている(無制限にしても39ドルから始められる)。ちなみにPlanetScaleが指す1read,writeはレコード数ではないので単純に見積もるのはむずかしそう。ちなみにちなみにマイグレーションで使うテーブル(railsだとschema_migrations)はブランチ切ってもデータを残すことが可能なので今まで通り使える。RDBは太古の技術みたいな扱われ方してるのでCCP、AWS、Azureの3大クラウドでもろくなもんがないがRDBにおける死ぬほど辛い課題が解決されてて個人的には革新的だった。まじでMySQL採用してよかったわ、当時はpostgreと迷ってた

ChatGPT API

あのChatGPTがそのままAPIになっただけ。1000トークンあたり0.002ドルとよくわかんない金額設定だが、日本語だと100〜300文字程度な気がする。1日30回程度使ってるが0.02ドルぐらいでほぼタダみたいなもん。質問が長いと一気に跳ね上がるが、そこまで怯えなくてもよさそう。あと制限掛けられるので超えたらAPIが使えなくなるだけになる。最大120ドルまでの制限もかけられてるからわりかし安心。

sitemapindex

別に新しい技術じゃないけど、サイトマップって5万までだったんだね...知らなかったよ...。@nuxtjs/sitemapちゃんと対応しててえらい

もともと自分は技術が大好き!というわけじゃないので別に新しい技術じゃなくても良いんだが、楽なやり方を追求すると新しい技術が答えを出してくれる感じがテクノロジーの進化を感じられてエモい

こうやってみると育児休暇といいつつかなり充実しているように思えるが、出産後1ヶ月は全くコミット履歴がなく1ミリもPC触れる余裕がなかった(というか睡眠不足すぎて死にそう)なので育児休暇を取る人は1ヶ月だと体ぶっ壊すから最低2ヶ月は取った方が良いよと偉そうに助言したい

みんなの洋楽ランキングを閉鎖した

突然だがみんなの洋楽ランキングを閉鎖した。つい最近まで継続する方向で考えていたが、惰性で続けていくことに疑問を感じ、SSL証明書の期限と同時に閉鎖した。

 

 

閉鎖する理由

•収益率が下がってきた

アクセス数減によって月500円〜1000円の出費が嵩むようになった。月3万PVぐらいないとトントンにならないのだが、最近は割ってきたので赤字を掘っている状態↓。ちゃんと記事を書けば直帰率も下がるのでPVも増えていくが、運用していくモチベーションがない。惰性+赤字は地味にメンタル的に悪く、常に気にしていくことにストレスがあった

f:id:tekitoumemo:20230525103027j:image

 

•洋楽のwebサイトは伸びない

2018年当初は「洋楽ランキング」でSEO1位になると50万近いPVを見込めたのだが今や1万程度になった。要因としてランキングを楽しむコンテンツはspotifytiktokyoutubeにシフトしたことが大きい。同時にビルボードの軸となる売上、ラジオ再生回数の割合がストリーミング等のよって減ってきたため、無名なアーティストがビルボードに浮上するようになりビルボードの権威が落ちてきた※1。さらに政治的な操作※2があったりと信用が薄れ、それだったらSpotifyとかのランキングの方が良いよねという傾向になっている。つまりwebやテレビで洋楽情報を入れる時代ではなくなってきている。

 

※1 BTSが飛躍したことやDrakeのTOP10独占するなどランキングが操作可能になったことで信用が薄れてきた

 

※2 黒人をカントリーチャートに入れないことや問題のあるアーティストを一位にさせないなど数字とは関係ないところで操作していることが問題となっている

 

最後に

つい1ヶ月前まで継続しようかと思ってたが、アクセス数を確認して伸びが見込めないと思ったので急遽閉鎖を決めた。今後、WEBで音楽を楽しむことは少ないだろうし、やれることがなくなってきた。私生活も忙しくなり、フォローできなくなりつつあることタイミングでの閉鎖でよかったと思う。当初は自分のポートフォリオとしてアピールできるものになれば良いやという感じで作ったが5年も継続し、微々たるものだが黒字化出来てよかった。

 

とはいえ、月1万MAUは大きい数なのでmeta refreshを使って最後の最後まで搾り取っていく(笑)👇