PORTFOLIO SITE

KAWAICHI PORTFOLIO

僕のポートフォリオサイトです

KAWAICHI PORTFOLIO
使用技術
フロントエンドReact 18, TypeScript, SCSS, Atomic Design
バックエンドNode.js, REST API, SendGrid
インフラAWS(API Gateway / Lambda / SSM 等), Netlify
モニタリングCloudWatch, SNS, Chatbot
プロビジョニングTerraform
主要パッケージ等Recoil, @emotion/react, React Hook Form, Zod, destyle.css(リセットCSS)
品質保証Jest, React Testing Library, Storybook, Chromatic, Hygen(コードジェネレーター)
ビルド CSR(SPA)
コーディング規約 ESLint & Prettier
その他reCAPTCHA(v3), GoogleAnalytics(GA4), GoogleSearchConsole, Illustrator
各種図面
インフラ構成図

フロントエンドはNetlifyでホスティングし、バックエンド(お問い合わせフォーム)はAWS API GatewayとLambdaでデプロイしています。また、IaCであるTerraformを用いてインフラをコード化しています。

ワークフロー図

ブランチは開発と本番で分け、リポジトリへのプッシュをトリガーに、それぞれでWebサイトおよびStorybookをデプロイしています。

工夫した点
Atomic Designによる再利用性を高めたコンポーネント設計
Atomic Designによる再利用性を高めたコンポーネント設計

コンポーネントの再利用性向上のため、コンポーネント設計およびディレクトリ構成として「Atomic Design(※1)」を採用しています。


UIの構造をatoms・molecules・organisms・templates・pagesという5段階に分割するという考え方で、これにより、デザインの一貫性を保つとともに、コンポーネントの再利用性・疎結合性が高まることによる、コンテンツの追加やデザインの変更などの開発スピードを向上させています。


よく議論される問題点として、「バケツリレー、データフェッチ問題」「開発メンバー間のコンポーネント分割単位の認識ズレ」「エンジニア・デザイナー間のコミュニケーション齟齬」がありますが、バケツリレーはCompositionパターンで解消でき、かつデータフェッチのない静的サイトであるということ、コーディング・デザインを一人で担当する個人開発であるということを踏まえて、これらの問題点をカバーできると考え採用しました。

※1: 出典: Atomic Design

icon-storybook-defaultStorybookを導入・公開

サイトの品質向上のため、想定したレイアウトや色のズレがないか、適切なスタイルが当てられており再利用できるコンポーネントとなっているか、などをすばやくブラウザでチェックできるツールである「Storybook」を導入しています。


また、Atomic Designによって作成されたコンポーネントは全てストーリー化し、コンポーネントライブラリとしてStorybookをWeb上で公開しています。

そのほか工夫した点
  • Illustratorを用いたロゴの作成
  • AWS、Terraform、SendGridを使ったお問い合わせフォームの実装
  • reCAPTCHA(v3)によるスパム対策
  • GoogleAnalytics(GA4)を導入、内部トラフィックは「Google アナリティクス オプトアウト アドオン」によって除外
  • EmotionによるCSSのスクラッチ
  • ダークテーマ/ライトテーマを切り替えできるボタンの実装
  • SVG形式およびWebP形式による画像サイズ最適化
  • 画像のプリロードによるUX向上
  • コードジェネレーター HygenによるJestおよびStorybookテンプレートの自動生成
  • OGP対応

など...

開発期間および主なアップデート履歴
年月内容
〜現在現在も継続してアップデート中(デザイン変更やコンテンツ追加など)
2024年5月お問い合わせフォームをAWS & Terraformで実装
2024年3月状態管理をReact Context API から Recoil へ変更
2022年8月React & emotion へリプレイス
2022年7月Vue.js 3 & Tailwind にて初回リリース