mesimasi Logo

wordpressのブログをNext.jsとGoに移行した

wordpressのブログをNext.jsとGoに移行した _thumbnail

こんにちは,ましです タイトル通りなのですがWordpressで作成していたブログをNext.jsとGoに移行しました

なぜ移行したのか

  • 自分好みに拡張したいと思った時にPHPをいじるモチベがない
  • Wordpressの枠組みの中で頑張らないとダメなのでつらみがたまにある
  • モダンな技術の素振りができる環境が欲しかった という理由があります

開発期間

開発期間 一番最初のコミットが1月17日なので大体1ヶ月と少しで開発できたみたいです.サーバー2週間,フロントは「りあクト!」を読んで勉強するのも含めて3週間くらいですかね.途中でこんなにブログ開発に時間をかけて良いのかと結構焦っていました...

技術構成

サーバーサイド

コード

REST APIサーバーはGoで書いています.

  • Gin
  • Gorm
  • go-migrate
  • mock
  • blackfriday(Markdown パース用)
  • zap (ログ)

あたりを使用しています. 詳しくは後日サーバーサイドのみの記事を書きます.

フロントエンド

コード

  • Next.js
  • tailwindcss
  • typescript
  • material-ui(管理画面に使用)
  • react-paginate
  • react-simplemde-editor

などを使用しています. Reduxを使わずにContext APIを,API呼び出しにはSWRではなくReact-queryを使用しています.

CI

  • tbls (DBスキーマドキュメントを吐き出してくれるやつ)
  • test
  • golangci-lint
  • goone

などを実行しています.

色々考えたこと

記事管理

よくあるのはmarkdownファイルをgitなどで管理して記事を手元で書いたらpushするやつだと思います.SSGもしやすいですし良いですよね.でも今回はスマホなど出先でも記事を書ける様にしたかったことと,技術の素振りをできる環境を作りたかったので記事を書く画面も作成しました.

管理者ユーザーの管理

登録方法

記事を書くための管理者ユーザーをどう登録するか少し悩みました.envなどで最初から登録しておいても良いのですがちょっと汎用性が低いかなぁと思ったので,コマンドラインでUsecaseを叩いて登録できる様に簡易ツールを作成しました. 管理ツールのコード

認証方法

メールアドレスとパスワード認証にしようとは思っていたものの,SessionなのかJwtなのかなどで悩みました. SPAのログイン認証のベストプラクティスがわからなかったのでわりと網羅的に研究してみた〜JWT or Session どっち?〜 を参考にJWTでの認証に決めました.しかし,JWTでセッション管理してはいけないとある様に,本来JWTでログインなどを管理するのはよくなさそうです.今回は管理ユーザーが自分だけなので秘密鍵を交換することに抵抗がないためJWTを選びました.また,GoでログインSession管理のライブラリを見つけられなかったことも要因の一つです.勉強のために実装するのはまだしも,公開するプロダクトで認証をできるだけ自作したくなかった気持ちがあります.

今後

まだまだ欲しい機能がたくさんあります

  • 管理画面のアップデート
    • 画像のドラッグアンドドロップ挿入
    • アクセス数のグラフを表示
  • 個別OGPの対応
  • 検索機能の実装(elastic searchの素振りしたい)
  • 人気記事の表示

などなど.... 是非こんな機能が欲しい!というのがあればGithubでissueを立てるなりTwitterで連絡ください〜

タグ

Loading...

利用規約

copyright ©めしまし All Rights Reserved.