研究ページのリファクタリングとコンポーネント統一を実施しました

2025 / 06 / 27

研究ページの大規模リファクタリングを実施し、コンポーネントの再利用性向上を行いました。

これまで研究ページ(aviation、cognitive、team-ai)は似たような構造でありながら、コードの重複が多く保守性に課題がありました。
今回、大規模なリファクタリングを実施し、コンポーネントの統一化と機能拡張を行いました。

主な変更内容見出し「主な変更内容」

1. 研究データのHTMLリンク対応見出し「1. 研究データのHTMLリンク対応」

研究詳細セクションで外部リンクを表示できるようになりました:

  • researchDetail.astroでHTMLレンダリング機能を追加
  • 外部リンク(GitHub、公式サイト等)を適切なスタイリングで表示

2. 研究コンポーネントの統一配置見出し「2. 研究コンポーネントの統一配置」

研究関連コンポーネントをsrc/components/research/ディレクトリに統一:

  • researchDetail.astro - 研究詳細セクション(HTMLレンダリング対応)
  • researchTop.astro - 研究トップセクション
  • LanguageSelector.astro - 国際化対応言語選択
  • ImageHoverEffect.astro - 画像ホバーエフェクト

3. 画像アセット管理の最適化見出し「3. 画像アセット管理の最適化」

研究関連画像を適切な公開ディレクトリに移動:

  • src/pages/research/aviation/_*.jpgpublic/research/aviation/
  • 相対パス参照から絶対パス参照への変更
  • CLS(Cumulative Layout Shift)防止のためのwidth/height属性追加

4. 型安全性の向上見出し「4. 型安全性の向上」

TypeScriptインターフェースの整備:

src/types/research.ts
interface ResearchItem {
title: string;
subTitle: string;
detail: string; // HTMLレンダリング対応
hoverImage: {
backgroundImage: string;
hoverImage: string;
};
}

5. コンポーネントのモダン化見出し「5. コンポーネントのモダン化」

researchDetail.astroの設計刷新:

  • <li>から<article>への変更(セマンティックHTML)
  • モダンカードデザイン
  • アニメーション効果付きの区切り線
  • TypeScript Props インターフェース追加

技術的改善見出し「技術的改善」

パフォーマンス向上見出し「パフォーマンス向上」

  • 画像最適化による読み込み速度改善
  • コンポーネント統一による保守性向上
  • 不要なコード重複の削除

アクセシビリティ強化見出し「アクセシビリティ強化」

  • セマンティックHTML構造への変更
  • 適切なARIAラベルの追加
  • キーボードナビゲーション対応

開発体験向上見出し「開発体験向上」

  • TypeScript型安全性の強化
  • 再利用可能なコンポーネント設計
  • 統一されたディレクトリ構造

インポートパス更新見出し「インポートパス更新」

全研究ページのインポートパスを新しい構造に対応:

// Before
import researchDetail from '../../../components/researchDetail.astro';
// After
import researchDetail from '@components/research/researchDetail.astro';

今後の展開見出し「今後の展開」

この統一化により、以下の改善が期待できます:

  • 保守性: コンポーネントの一元管理による更新作業の効率化
  • 拡張性: 新しい研究分野追加時の開発速度向上
  • 一貫性: 全研究ページでの統一されたUX提供
  • 国際化: 多言語対応の基盤整備完了

まとめ見出し「まとめ」

今回のリファクタリングにより、研究ページ全体の技術基盤が大幅に改善されました。
HTMLリンク機能の追加により、研究データの表現力も向上し、外部リソースへの参照が容易になりました。

統一されたコンポーネント構造により、今後の機能追加や保守作業が格段に効率的になることが期待されます。