弊社エンジニアブログ(はてなブログ)の運用TIPS集 – Sumzap Engineering Blog

弊社エンジニアブログ(はてなブログ)の運用TIPS集

目次

この記事は「サムザップ Advent Calendar 2025」の12/1の記事です。

こんにちは!
サムザップでエンジニア責任者をしています、北島です。

現在ご覧いただいているように、弊社はエンジニアブログを運営しています。
このブログは、弊社の技術やエンジニアの活動を皆様に知ってもらう技術広報の場、弊社エンジニアが日頃の技術チャレンジを発信するアウトプットの場として重要な役割を担っています。
そして、重要な役割を担っているからこそ様々な工夫をしながらエンジニアブログの運営をしています。
この記事では、その工夫をTIPS集としていくつか紹介させていただきます。
弊社と同じようにエンジニアブログを運営している方の参考になれば嬉しいです。

はじめに

弊社エンジニアブログは、「はてなブログ for DevBlog(以降、はてなブログ)」で構築されています。
以前、WordPressで構築していた時期もあったのですが、WordPress本体やPHP、導入しているPluginなどの定期的なバージョンアップなど運用コストがかかっていました。
それに比べ、はてなブログは運用コストが低く技術ブログに特化しているため非常に使いやすく助かっています。
この記事で紹介する運用TIPSは、はてなブログだからこそできる内容も多く含まれている点をご了承ください。

TIPS.1:Markdown形式で記事をGit管理

エンジニアブログの運営で大きなコストとなるもののひとつが記事のレビューです。
弊社エンジニアブログでは、記事の下書き → レビュー → 公開 の流れをなるべく楽にするため、Markdown形式で記事をGit管理する方針を取っています。
また、記事作成ワークフローをGitHub上で可能にする「Hatena-Blog-Workflows-Boilerplate」を導入し、以下のワークフローを実現しています。

  • GitHub上でcreate draftのActionを実行
    • 空記事のMarkdownファイルの入ったブランチができる
    • はてなブログ上に下書き状態の空記事ができる
  • できたブランチをローカルに持ってきて、Markdownファイルに記事を執筆
  • ときどき執筆をcommitすることではてなブログ側に反映、プレビュー確認
  • 記事ができたらpull request形式でレビュー
  • mainブランチにmergeすることで、はてなブログ上で記事を自動公開

TIPS.2:textlint + reviewdog で文章の校正

上記のように、Markdown形式で記事をGit管理することでレビューのしやすさはかなり改善します。
さらにレビューを楽にするため、弊社では textlintreviewdog を使うことで文章の校正をしています。
これを実現すると、下記画像のようにpull requestで文章の指摘をしてくれるようになります。

textlint + reviewdog で文章の校正
textlint + reviewdog で文章の校正

以降はtextlintとreviewdogの導入方法を載せておきます。

対象のリポジトリに textlint をインストール

npm init -y
npm install --save-dev \
    textlint \
    textlint-rule-preset-jtf-style \
    textlint-rule-preset-ja-technical-writing \
    textlint-rule-spellcheck-tech-word \
    textlint-rule-prh
npx textlint --init

弊社ではtextlint本体の他にいくつかのルールセットも導入しています。

textlint の設定

インストール時に下記ファイルができあがります。

  • .textlintrc
  • package-lock.json
  • package.json
  • node_modules/*

node_modules/*.gitignoreに設定し、他はGit管理下に入れます。
.textlintrcで各ルールの細かい設定が可能です。
下記は、preset-jtf-style/3.1.2.全角文字どうしのルールだけを無効にする設定例です。

▼.textlintrc

{
  "plugins": {},
  "filters": {},
  "rules": {
    "preset-ja-technical-writing": true,
    "preset-jtf-style": {
      "3.1.2.全角文字どうし": false,
    },
    "prh": {
      "rulePaths": [
        "./textlint_prh_rules.yml"
      ]
    },
    "spellcheck-tech-word": true
  }
}

textlint-rule-prhですが、弊社では社外に公開したくない情報が含まれていないかのチェックに使っています。
下記は、文章内に社内限のプロジェクトコードが書かれている場合、タイトル名に置き換える指摘をするための設定例です。

▼textlint_prh_rules.yml

rules:
  - expected: 真 戦国炎舞 \-KIZNA\-
    pattern: 【プロジェクトコード】

GitHub Actions の設定

pull requestの際にtextlintを実行、reviewdogでコメントするように設定します。

▼.github/workflows/textlint.yaml

name: textlint

on:
  pull_request:
    types: [ opened, synchronize ]

jobs:
  main:
    runs-on: ubuntu-22.04 
    permissions:
      contents: read
      pull-requests: write
    timeout-minutes: 1
    steps:
      - name: checkout
        uses: actions/checkout@v4
        with:
          ref: ${{ github.event.pull_request.head.sha }}
      - uses: actions/setup-node@v3
        with:
          node-version: 22
          cache: npm
      - run: npm ci
      - name: install reviewdog
        shell: bash
        env:
          TEMP_DIR: ${{ runner.temp }}
        run: |
          curl -sfL https://raw.githubusercontent.com/reviewdog/reviewdog/fd59714416d6d9a1c0692d872e38e7f8448df4fc/install.sh | sh -s -- -b "${TEMP_DIR}/reviewdog/bin" latest
      - name: Fetch base branch
        run: git fetch origin main
      - name: Create target file list
        run: git diff origin/main HEAD --name-only |grep \.md$ > /tmp/textlint-target-list.txt
      - name: textlint
        env:
          REVIEWDOG_GITHUB_API_TOKEN: ${{ secrets.GITHUB_TOKEN }}
          REVIEWDOG_DIR: ${{ runner.temp }}/reviewdog/bin
          LEVEL: error
        run: cat /tmp/textlint-target-list.txt | xargs npx textlint -f checkstyle | ${REVIEWDOG_DIR}/reviewdog -f=checkstyle -name=textlint -reporter=github-pr-review -level=${LEVEL}

TIPS.3:開発環境と本番環境

はてなブログでは、ひとつのアカウントで複数のブログを作ることができます。
弊社では限定公開に設定した上でもうひとつのブログを構築、それを開発環境として使っています。
そして、ブログのデザインを改良する際などは開発環境で問題ないことを確認した上で本番環境に反映するフローとしています。

ひとつのアカウントで複数のブログを管理
ひとつのアカウントで複数のブログを管理

TIPS.4:アイキャッチ画像の自動生成

「ブログ記事は書けたけど、アイキャッチ画像ができておらず記事の公開ができない」このような状況はよくあります。
そんな時は、はてなブログに備わっているアイキャッチ画像を自動生成する機能を使うのが便利です。
生成されるアイキャッチ画像は、HTMLで自由にカスタマイズも可能です。

弊社では下記画像のように汎用背景の中央に記事のタイトルが自動で入るようなデザインを設定しています。
そして、こだわったアイキャッチ画像を使いたい記事の場合は手動で設定、汎用的なアイキャッチ画像で良い記事の場合は自動生成したものを使うように設定と使い分けています。

自動生成アイキャッチ
自動生成アイキャッチ

さいごに

この記事では、弊社エンジニアブログを運用するに当たっての様々な工夫を紹介させていただきました。
少しでも弊社と同じようにエンジニアブログを運営している方などの参考になっていれば嬉しいです。

最後に、サムザップでは一緒に働く仲間をさがしています。
少しでも弊社に興味を湧いていただけた方は、のぞいていってもらえればと思います。
https://www.sumzap.co.jp/recruit/

北島 領人
北島 領人

2013年入社。
『真 戦国炎舞 -KIZNA-』『呪術廻戦 ファントムパレード』などの開発に従事。
サムザップのエンジニア責任者としてエンジニア組織の構築・文化づくりを担当するほか、
サイバーエージェント ゲーム・エンターテイメント事業部(SGE)の技術広報にも携わる。


元の記事を確認する

関連記事