【結論】
- このブログはPythonとC#を使って記事作成作業の大部分を自動化しています
- 筆者がするのはテキストの内容を書くことだけです
- テキストファイルに記事のタイトル一覧を書き、Pythonスクリプトを走らせることでテンプレートを自動生成します
- アイキャッチ画像の作成はC#
- あとは生成されたテンプレートファイルに記事の内容を書き込みます
【自動化する理由】
- 文章を書くことだけに集中したい
- ブログ以外のメディア(Youtube等)に多方面展開するのが楽
- 技術力アピール
【具体的な内容】
Hugo
ブログ作成にはHugoを使っています。Hugoはマークダウンで管理できること、また記事をファイル単位・フォルダ単位で管理できます。ファイルとして管理することでPythonやC#等外部の言語で編集することが簡単になります。以前はWordpressを使っていたのですが捨てました。理由はまた別記事で解説します。
Pythonによるテンプレート生成
私は記事名=フォルダ名で各記事を管理しています。各フォルダには記事の内容であるマークダウンファイルと使用する画像ファイルが置かれています。
Pythonスクリプトを用いて以下のような作業をします:
- 記事名リストをもとに大量のフォルダを生成
- その中にテンプレートとなるマークダウンファイルをコピー
- テンプレートの中にタイトルと日付を自動記述
- フォルダ内にC#で作成したアイキャッチ画像をコピー
C#による画像生成
SeleniumというChrome系統のブラウザを使って画像を生成します。ここは特にC#を使う必要はないのですが、以前作ったSeleniumを使ったプログラムがC#であるためそれを利用します。ここはゼロから作るのであればPythonを使ってしまって良いと思います。
- Htmlとcssでデザインを決める
- 文字列をタイトルに合わせて置換する
- Seleniumにhtmlとcssを読み込ませる
- 自動でスクリーンショットをとる
今回はhtmlとcssを使う方式を採用したわけですが、他にもいくつかの方法を検討しました:
- PowerPointをプログラムで操作してスライドを作り画像を保存する
- htmlとcssでデザインをし保存する
- OpenCV等の画像処理系ライブラリを使う
どの方法を使うかの判断基準は:
- プログラムで自動化できる
- 他の方が公開しているテンプレートが豊富にある
- 文字を綺麗に入れられる、フォントが選べる
画像処理などですとOpenCVを使うことが多いですが、文字を入れる、他の人の作ったデザインが使えるという点を考慮すると候補から外れます。
結局のところ
- Office製品に依存したくない
- html・cssの方が汎用性が高い
という点でhtml・css方式を採用です。
【まとめ】
プログラミングを使うと日々の単調な作業が自動化できます。 他にもこのブログはGitと呼ばれるツールで管理されていて、自分のパソコンで修正した後ボタン一つでサーバーに反映されます。それもまた次の機会に記事にしようと思います。
プログラミングを仕事で使うのも良いですが、自分の生活に応用できないか考えてみるのも良いと思います。 私がプログラミングを使い始めたのも始めは英語の学習ツールやゲームの自動操作などでした。