かわいちのエンジニアぶろぐ!
プログラミングに役立つ記事を投稿しているブログです

フロントエンド | Next.js 13, TypeScript, SCSS(CSS Modules) |
バックエンド | Node.js, GraphQL, microCMS, SendGrid |
インフラ | AWS(AppSync / Lambda / DynamoDB / EventBridge 等) |
モニタリング | CloudWatch, SNS, Chatbot |
プロビジョニング | Amplify, Terraform |
主要パッケージ等 | Tailwind CSS, Font Awesome,cheerio(HTMLパーサ),highlight.js(コードシンタックスハイライト), React Hook Form, [GraphQL]aws-amplify, Apollo, [外部API取得]Axios |
ビルド | SSG |
コーディング規約 | ESLint & Prettier |
その他 | reCAPTCHA(v3), GoogleTagManager, GoogleAnalytics(GA4), GoogleSearchConsole, Illustrator |
「vscode 型 表示」の検索ワードで、【TypeScript】型を調べる方法「VSCodeのホバー表示」の記事がGoogle検索順位1位(※)を獲得しました。
※: 2024年5月時点
そのほかGoogle検索順位1位を獲得した記事
「chrome ショートカット 翻訳 切り替え」
【Chrome】ショートカットで日本語と英語原文の翻訳を切り替え【BetterTouchTool】(獲得日: 2024年8月時点 [画像])
「vscode react import 自動」
【React×VSCode】自動でimport&未使用importの削除とソートで爆速開発!(獲得日: 2025年1月時点 [画像])
AWS Amplifyでホスティング・デプロイしています。コメント機能は、AppSync(GraphQL)・Lambda(Node.js)・DynamoDBで構築および実装しています。 また、IaCであるTerraformを用いてインフラの一部(モニタリング等)をコード化しています。
ブランチおよびAmplify環境は開発と本番で分け、microCMS管理画面からコンテンツ更新した際のWebhook通知、リポジトリへのプッシュをトリガーにデプロイしています。

アーキテクチャとして、フロントエンドとサーバーコンテンツ(データ)を分離し、静的サイトジェネレーターを使用してWebサイトを構築するJamstackを採用しています。
技術選定の候補としてWordPressがありましたが、Jamstackのほうがコストが安い、高速表示できるパフォーマンスがある、また、Next.jsを使ってなにかサイトを作ってみたい、という欲求があったため、こちらを採用しました。
また、コンテンツ(ブログ記事など)管理システムとして、日本製のヘッドレスCMSである「microCMS」を利用しています。
サイトのスタイリングには「Tailwind」を導入しています。開発を始めようとした当時に、注目され流行していたCSSフレームワークだったため、「面白そうだし最新の技術を使ってみよう」というのが検討のきっかけでした。
色々調べていくうちに、デザインにオリジナリティを持たせつつも実装の時間が短縮できる、というメリットがあると知り、案としてイメージしていた「私のプロフィールアイコンを活かした、デザインにこだわりのあるかわいいサイトにしたい」「でも、お仕事しながらだから時間がない...」という課題を解消してくれそうだったので、導入しました。

- Illustratorを用いたロゴの作成
- コメント投稿時、Webhook通知による運営者への通知・IPブラックリスト判定・NGワード判定
- お問い合わせフォームの実装
- reCAPTCHA(v3)によるスパム対策
- バッチ処理による定期的な注目記事の更新 および Webhook通知による運営者への処理成功/失敗の通知
- コンテンツ更新時、Webhook通知による自動デプロイ
- SEO対策として、カテゴリー・タグ・検索結果等の一覧ページをnoindexによって検索エンジンからインデックス除外
- セキュリティ対策として、FWのバージョン情報を隠蔽
パーマリンクの最適化 (参考: Google における URL 構造のベスト プラクティス)
- GoogleTagManager および GoogleAnalytics(GA4)を導入 ※内部トラフィックは「Google アナリティクス オプトアウト アドオン」によって除外
- OGP対応
など...