テックブログをはじめました

テクノコアの岸本です。
この度、自社でオウンドメディア(ブログ)を作成しました。ここでは一発目の記事として、自社ブログを作成するまでに至った経緯と、技術選定、リリースに至るまでの経緯について書いていきます。

テックブログ作成の経緯

ブログを始めた経緯としては、主に自社ブランディングと技術力向上の2つです。

自社ブランディング

ブログを作成した一番の目的は、自社のブランディングです。
我々の企業では大きく2つの事業があります。1つが、IT企業向けの新人研修など、教育に関する事業を展開している教育事業部。もう1つが、システム開発に携わるシステム事業部。

システム事業部は主にSESを中心とした開発部隊となっていますが、昨年度から本格的に受託案件の開発も行っています。私自身、現在は受託案件の開発に携わっています。今後、受託案件の件数を増やし、開発メンバーも受託に関われるメンバーの比率を上げていきたいと考えていますが、そのためには会社の知名度を上げていくことも必要になるので、その手段の1つとして自社ブログを作成することにしました。また、会社の知名度を上げることで、開発案件以外でも研修事業や採用の活性化もにつなげたいと考えています。

技術力向上

今後、受託開発を増やしていきたいという思いはあるものの、現在社内でインフラ技術に詳しい人の数が限られています。そこで、今後に向けた技術力強化の側面も兼ねた取り組みをしたいという思いもあり、インフラを含めた形で、自前でブログサービスを構築することにしました。

技術選定

以下は、ブログ開発で使用した主な技術・サービスの一覧です。

  • AWS(Amazon Web Services)
    • EC2
    • CodeBuild
    • S3
    • CloudFront
  • WordPress
  • Astro

WordPress + Astro

まず、ブログサービスを完全に一から作成するのは開発コストがかかりすぎるので、既存のCMS(Contents Management System)も活用することにしました。CMSとしては、日本で最もメジャーで情報量も多いという理由から、無難にWordPressを選択しました。

ぶっちゃけ、WordPressを導入してしまえばそれだけで完結するブログサービスを構築することは可能です。ただ、そうしてしまうと、インフラ環境はほぼEC2だけで完結してしうので、インフラの学習機会が減ってしまいます。また、開発に関してもWordPressに特化した開発スキルしか身につかず、限定的な技術力向上にしかなりません。

そこで、WordPressは記事の投稿・管理の機能だけを使用し、外部のユーザー向けのフロント画面は別のフロントエンド技術で開発することにしました。
このブログは自社ブランディングも兼ねているため、今後はSEO対策も進めていく必要があります。SEO対策という観点では、静的なWebサイトの方が有利に働くことが多く、かつレンダリングのスピードも速い方が良い。
そう考えた時に、Astroが最適なのでは?という話になりました。個人的に気になっていた技術でもあったので、開発の学習も兼ねてAstroを選択することにしました。

Astro

Astro builds fast content sites, powerful web applications, dynamic server APIs, and everything in-between.

https://astro.build/

インフラ環境

まず、WordPressはEC2に環境を構築しました。EC2でWordPressを構築する手順は、AWSの公式ドキュメントにもチュートリアルが載っているため、ドキュメントに従って構築すればそこまで苦労せずに構築することができました。

https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/hosting-wordpress-aml-2023.html

https://docs.aws.amazon.com/ja_jp/linux/al2023/ug/hosting-wordpress-aml-2023.html

記事を投稿する際には、WordPressの記事投稿画面から記事を投稿します。
その後、CodeBuildでビルドを実行すると、Astroプロジェクトがビルドされます。この時、AstroはWordPressのAPI経由で記事を取得し、静的Webサイトを生成します。生成されたWebサイトはS3に配置し、CloudFront経由でアクセスできるようになります。

デプロイのフローは以下のようになっています。

開発の進め方

環境構築、及び開発は私を含む3人チームで進めました。
週に1回、2時間程度リモートで集まる時間を作り、Discord上で会話しながら画面共有ベースで作業していきました。タスク管理や仕様の整理にはNotionやFigJamを使用し、開発時はVS CodeのLive Shareや、WebStorm(JetBrains製品)のCode With meを使ってモブプロ形式で進めました。

開発メンバーの中にインフラに強いメンバーと、フロントエンドの開発に強いメンバーが1人ずついたため、作業を進めるときにはそれぞれの得意分野が活かされて比較的スムーズに開発を進めることができました。また、画面共有ベースで作業を進めたため、それぞれが苦手分野についてもすぐに解説を得ることができ、学びを得ながら進めることができました。

まとめ

ブログ環境の構築、開発について経緯や概要をまとめました。
ブログの開発に関してはここで紹介した以外にも細かい技術を色々と利用した箇所もありますし、まだまだやりたいこともあったりします。
この辺りは機会があれば別の記事でご紹介できればと思います。

システム開発、新人研修、採用に関して気になることがあればお気軽にご連絡ください。