Chapter 04

🤖Zennの記事を自動で翻訳してくれるGithub Actions

nomuraya@元CTOのIT講師
nomuraya@元CTOのIT講師
2022.01.28に更新

ちょっとタイトルで言いすぎてる気がしなくはないですが「README.mdを日本語で書いたら自動的に翻訳して誘導してほしい」という要望を満たすためのGithubActionsを作った話です。
応用すればZennに投稿している記事も翻訳して上げてくれるので、タイトルは嘘を言ってないなと思います。

目的

Zennで英語のドキュメントは需要があるのかどうか分かりません。
が、海外でもZennのアクセスがあるなら勿体無いなぁ、と思って作ってます。[1]

ソースコード

name: txtやmdファイルから_en.mdを作成
on:
  push:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
      - uses: actions/checkout@v2

      - name: 環境構築
        run: |
          sudo apt install python3 pip curl
          pip install requests pathlib git+https://github.com/alainrouillon/py-googletrans@feature/enhance-use-of-direct-api googletrans==4.0.0-rc1
      - name: pyファイルをダウンロード
        run: |
          curl -sf https://raw.githubusercontent.com/shimajima-eiji/__Operation-Maintenance/main/translate/translate_path.py >run.py
          echo "[exist check] run.py"
          ls
          echo

      - name: 翻訳
        run: |
          # https://github.com/(ユーザー)/(リポジトリ名)/settings/secrets/actions
          python3 run.py "https://script.google.com/macros/s/${{ secrets.GASID }}/exec" "$(pwd)"
          echo "[exist check] _en.file"
          ls
          echo
      - name: ダウンロードしたファイルを削除
        run: |
          rm run.py
          echo "[remove check] run.py"
          ls
          echo
      - name: push
        run: |
          # 更新がない場合は処理しない
          if [ -z "$(git status -s)" ]
          then
            echo "[Skip] no Changed"

          else
            # https://github.com/(ユーザー)/(リポジトリ名)/settings/secrets/actions
            git config --global user.name "${{ secrets.USER}}"
            git config --global user.email "${{ secrets.EMAIL }}"
            git add -A
            git commit -m "Created _en.md from .(txt or md) by Github Actions"
            git pull
            git push
            echo "[COMPLETED] Created _en.md"
          fi

利用シーンを考える

このスクリプト自体は有用だと思うのですが、結局供養になった理由をお話しします。

個人サイトでやる場合

この話の前に「拡張機能などで翻訳すればええやん」というユーザー対処はナシとします。
リテラシーの高いユーザーはそれでいいですが、リテラシーの低いユーザーにとっては即ブラウザバック案件です。
これを避けるために、提供側が翻訳済みのページを表示させる方法を考えます。

個人サイトの場合は、アクセス情報を取ったりして言語ごとのページにリダイレクトしたり、翻訳スクリプトをサイトにおけば解決できます。

Zennでやる場合

そもそもZennで翻訳ページへの案内をやるか?というと微妙です。
せめて日本語→英語ぐらいかと思います。
海外に向けて発信したいなら、対象の国の方が好むUI/UXを勉強するべきです。

Zennにケチつけるつもりで言っているのではなく、日本のWebサイトは日本人の感性でデザインされています。
本文を翻訳しただけで「海外対応した」と言い張るのはどうでしょうね、と個人的には思っています。
そう言った部分も含めて「そこまでやるなら個人サイトでやってね」となるのは当然です。

繰り返しになりますが、Zennで翻訳ページへの案内をやるか?というと微妙だと思います。
やってみる価値はあると思いますし、取り組みは評価したいです。

Zenn以外で使う場合の翻訳ページを考える

ここからはZennの話ではなく、Githubで就活や転職など営業活動をする時も見据えてお話しします。
まず、READMEや原文のテキストファイルに翻訳済みのページへのリンクを一番上に書いておくのが手っ取り早いと思います。
本気でやるなら、日本語で記事を書くとしても翻訳したページは英語と中国語とスペイン語、ロシア語辺りは押さえておきたいです。
が、ここまでやるのは官公庁や運輸、医療系かなぁ。

ただし、ポートフォリオとして英語に翻訳して、さも英語ができるよ!って言った風で活動をすると案件をとった時に自分の首を絞めます。
あくまで技術記事を海外勢に向けて発信する目的で翻訳すべきです。[2]
Githubに限った話ですが、GithubPagesではscriptタグが使えるので、翻訳スクリプトはそっちに置きましょう。

こういった作業をしていると、翻訳スクリプトを仕込めるサイトの強みを感じますね。

日本語を読めないユーザーへの配慮を考える姿勢は大事

供養、という名目でこの記事を書いているので基本sageの姿勢になってしまっている印象があります[3]。
ただし、日本語を読めない人の方が多いので他のユーザーでもアクセスして、意図を伝えられるようにする努力をする事はとても大切です。

Github就活・転職プロジェクトという観点も入れると翻訳より「誰が読むのか」と言う点を気にしながらコンテンツを作った方が良いです。
採用業務時にクライアントに見てもらうページ(リポジトリ)と、エージェントに見てもらうページ(リポジトリ)をそれぞれに向けてしっかり作り込むと成果が上がりやすくなると思います。

自信がないうちは、SNSを活用しても良いでしょう。
個人アカウントの情報はノイズになる事が多いので、専用のアカウントを作る事をお忘れなく。

あなたにとって、この記事がお役に立てたなら、💓いいねをいただけると私はとても嬉しいです。

脚注
  1. 【海外アクセス】そこまで気になるなら個人でドメインを取ってやればいい、という考え方もあります。なのであくまで試験的に取り組みたく。 ↩︎

  2. 【この記事が供養になった理由】当初は「Zennで英語記事を扱ってみたらウケが良いのでは?」と思ったからです。記事の端々にそう言った意図が見え透けるかもしれません。 ↩︎

  3. 【自分で作ったスクリプトをディスっている】書いた後は必ず一度は読み直しています。それでもsage進行の印象があります😢 ↩︎