こんにちは.

最初の投稿が2018年の9月なので技術ブログを書くようにしてからもう1年半ほど経つみたいです.

継続するのは割と苦手なんですが, ブログは割と続けられてるので嬉しいっすね.

まあ, そんなことはどうでも良くて.

さすがに記事が多くなってきたので, ちょっと記事の管理を見直そうかなっていうのが今日のテーマです.

これまでの運用と反省

最初に補足しておくと, このブログは Go 製静的サイトジェネレータである hugo を使って作ってます. 興味があれば Hugoタグ を見て頂けると(書いたの自体が割と昔なので情報は古いかも知れませんが).

てことで, ローカルのマークダウンファイルで記事を管理してるのですが,

元々, 気軽に始めたことと, あと書くメンバーが僕だけってこともあって運用ルールもくそもない状態で管理してきました.

$ tree content/post
content/post
├── atom-ide-python.md
├── atom-japanece-modification.md
├── bytes_as_str.md
├── chainer_ref.md
├── circleci_pytest.md
├── custom_domain_netlify.md
├── delighter.md
├── django_migrate_custom_user.md
├── django_test.md
├── django_token_auth.md
├── django_vue.md
├── docker-compose-flask.md
├── dotenv.md
├── dropbox.md
├── flask_axios.md
├── flask_chatbot.md
├── flask_restful_file.md
├── flask_vue.md
├── fx_predict.md
├── google-colab.md
├── heroku_django.md
├── hugo_description.md
├── hugo_layouts.md
├── hugo_markdown.md
├── hugo_sumarize.md
├── indigo.md
├── intern_look_back.md
├── logic_design.md
├── markdown_convert.md
├── matplotlib_with_heroku.md
├── memo_market_sense.md
├── mycommands.md
├── mypy.md
├── netlify_adsense.md
├── nuxt_blog.md
├── nuxt_tutorial.md
├── omit_semicolon_js.md
├── php_fastcgi.md
├── php_tutorial.md
├── pip_github.md
├── pipenv.md
├── playfw01.md
├── pyqt1.md
├── pyqt2.md
├── pyqt3.md
├── pytest.md
├── python.md
├── react-ts.md
├── resources
│   └── _gen
│       ├── assets
│       └── images
├── scala01.md
├── scala02.md
├── scala03.md
├── scala04.md
├── scala05.md
├── scrape_univ_schedule.md
├── selenium_container_test.md
├── slack_django_app.md
├── snipets.md
├── sql_memo.md
├── sqlarchemy.md
├── study_docker_volume.md
├── summary_300man_company.md
├── summary_css_design.md
├── tensor.md
├── theme_update.md
├── try_nteract.md
├── ubuntu_mysql.md
├── ubuntu_node.md
├── update_hugo_blog_directory_structure.md
├── vscode_live_share.md
├── vue-examples.md
├── vue_tutorial.md
├── watchdog.md
└── webhook_automated_deploy.md

4 directories, 73 files

まあかろうじて見通しはつくかなってくらいで, ぶっちゃけこれ以上増えるとしんどいし, 今でも過去記事ファイルを探すのに苦労したりするので, ちゃんと構造化したり, 運用ルールを決めたりしておこうかなと思いました.

同様の概念にカテゴリがあるので, この辺と連携して上手く使ってやって行こうと思います.

ゴール

結構迷いポイントが多いのかなって感じがしたので, ゴールを明確にしておきます.

  • ローカルでの記事管理がわかりやすくなるようにすること
  • ブログのわかりやすさを損なわないこと

やっていきます.

ルールの適用

で, 具体的にどうするの?って話なんですが, カテゴリ毎にディレクトリ分けしていこうかなと思います.

と同時に都合がつかなくなるのと, 1記事が複数のカテゴリを持つとわかりづらい気がするので

  • カテゴリの重複をなくす(マルチプルなカテゴリを持つ記事を禁止する)
  • 同時に, カテゴリの種類の精査

をしていきます

カテゴリの精査

既存のカテゴリは,

  • 技術(51)
  • Web(26)
  • ポエム(読書メモ)
  • 読書メモ(2)
  • 日記(1)

の5つなんですが, ほぼ技術コンテンツなんだから技術カテゴリいるか?って感じではあるし, たぶん粒度の問題もあって,

  • 技術
    • Web
    • 機械学習
  • ポエム
  • 日記
  • 読書メモ

て感じなので, 違うレイヤーが同じ階層のカテゴリとして混ざってるのが良くないのかな.

Webもちょっと広すぎるし.

とはいえ, レイヤーを統一すると各カテゴリの記事数に相当幅がでて, 当初の「管理をしやすく」って目的が達成できなくなりそう.

細かな記事の分類は, タグでできるのでカテゴリはある程度ざっくりした分類, でも1つのカテゴリに記事がよりすぎないように(管理が大変になるので)って考えると,

カテゴリ 内容
ブログ この記事みたいなの
ポエム ポエム
日記 日々の振り返りとか
読書メモ 読書感想文
インフラ
サーバーサイド
クライアントサイド
データベース
機械学習

とりあえず, これくらいで良いのかなと思います.

ディレクトリ分け

TOPに表示されるかは, テーマの仕様にもよる気がしますけど, とりあえず僕の使っているテーマでは post 以下にディレクトリ階層を作ってマークダウンファイルを設置しても問題なく記事が置かれました.

てことで, お引越しタイム … ちーん

$ tree content/post
content/post
├── atom-ide-python.md
├── atom-japanece-modification.md
├── blog
│   ├── custom_domain_netlify.md
│   ├── hugo_description.md
│   ├── hugo_layouts.md
│   ├── hugo_markdown.md
│   ├── hugo_sumarize.md
│   ├── netlify_adsense.md
│   ├── theme_update.md
│   └── update_hugo_blog_directory_structure.md
├── books
│   ├── memo_market_sense.md
│   ├── summary_300man_company.md
│   └── summary_css_design.md
├── bytes_as_str.md
├── circleci_pytest.md
├── client_side
│   ├── delighter.md
│   ├── nuxt_tutorial.md
│   ├── react-ts.md
│   ├── vue-examples.md
│   └── vue_tutorial.md
├── database
│   ├── sql_memo.md
│   ├── sqlarchemy.md
│   └── ubuntu_mysql.md
├── diary
│   └── intern_look_back.md
├── dotenv.md
├── dropbox.md
├── google-colab.md
├── infra
│   ├── docker-compose-flask.md
│   ├── heroku_django.md
│   ├── indigo.md
│   ├── selenium_container_test.md
│   ├── study_docker_volume.md
│   └── webhook_automated_deploy.md
├── logic_design.md
├── machine_learning
│   ├── chainer_ref.md
│   ├── fx_predict.md
│   └── tensor.md
├── markdown_convert.md
├── matplotlib_with_heroku.md
├── mycommands.md
├── mypy.md
├── nuxt_blog.md
├── pip_github.md
├── pipenv.md
├── poem
│   ├── omit_semicolon_js.md
│   └── snipets.md
├── pyqt1.md
├── pyqt2.md
├── pyqt3.md
├── pytest.md
├── python.md
├── resources
│   └── _gen
│       ├── assets
│       └── images
├── scala01.md
├── scala02.md
├── scala03.md
├── scala04.md
├── scala05.md
├── scrape_univ_schedule.md
├── server_side
│   ├── django_migrate_custom_user.md
│   ├── django_test.md
│   ├── django_token_auth.md
│   ├── django_vue.md
│   ├── flask_axios.md
│   ├── flask_chatbot.md
│   ├── flask_restful_file.md
│   ├── flask_vue.md
│   ├── php_fastcgi.md
│   ├── php_tutorial.md
│   ├── playfw01.md
│   └── slack_django_app.md
├── try_nteract.md
├── ubuntu_node.md
├── vscode_live_share.md
└── watchdog.md

13 directories, 73 files

わかりやすいものをサクッと移動したけど, まだ少し漏れがあるなー

これら用に複数のカテゴリを準備するのも違う気がしたので, この辺はその他まとめておきます.

ある程度塊ができてきたら, カテゴリをまた作ろう.

$ tree content/post
content/post
├── blog
│   ├── custom_domain_netlify.md
│   ├── hugo_description.md
│   ├── hugo_layouts.md
│   ├── hugo_markdown.md
│   ├── hugo_sumarize.md
│   ├── netlify_adsense.md
│   ├── nuxt_blog.md
│   ├── theme_update.md
│   └── update_hugo_blog_directory_structure.md
├── books
│   ├── memo_market_sense.md
│   ├── summary_300man_company.md
│   └── summary_css_design.md
├── client_side
│   ├── delighter.md
│   ├── nuxt_tutorial.md
│   ├── react-ts.md
│   ├── vue-examples.md
│   └── vue_tutorial.md
├── database
│   ├── sql_memo.md
│   ├── sqlarchemy.md
│   └── ubuntu_mysql.md
├── diary
│   └── intern_look_back.md
├── infra
│   ├── docker-compose-flask.md
│   ├── heroku_django.md
│   ├── indigo.md
│   ├── selenium_container_test.md
│   ├── study_docker_volume.md
│   └── webhook_automated_deploy.md
├── machine_learning
│   ├── chainer_ref.md
│   ├── fx_predict.md
│   └── tensor.md
├── others
│   ├── atom-ide-python.md
│   ├── atom-japanece-modification.md
│   ├── bytes_as_str.md
│   ├── circleci_pytest.md
│   ├── dotenv.md
│   ├── dropbox.md
│   ├── google-colab.md
│   ├── matplotlib_with_heroku.md
│   ├── mycommands.md
│   ├── mypy.md
│   ├── pip_github.md
│   ├── pipenv.md
│   ├── pyqt1.md
│   ├── pyqt2.md
│   ├── pyqt3.md
│   ├── pytest.md
│   ├── python.md
│   ├── scala01.md
│   ├── scala02.md
│   ├── scala03.md
│   ├── scala04.md
│   ├── scala05.md
│   ├── try_nteract.md
│   ├── ubuntu_node.md
│   ├── vscode_live_share.md
│   └── watchdog.md
├── poem
│   ├── omit_semicolon_js.md
│   └── snipets.md
├── product
│   ├── logic_design.md
│   ├── markdown_convert.md
│   └── scrape_univ_schedule.md
└── server_side
    ├── django_migrate_custom_user.md
    ├── django_test.md
    ├── django_token_auth.md
    ├── django_vue.md
    ├── flask_axios.md
    ├── flask_chatbot.md
    ├── flask_restful_file.md
    ├── flask_vue.md
    ├── php_fastcgi.md
    ├── php_tutorial.md
    ├── playfw01.md
    └── slack_django_app.md

15 directories, 73 files

結構スッキリした!

あとは管理用スクリプト作って, 記事作成時にカテゴリを選ぶことで運用ルールを強制するみたいなこともしておきたかったけど, ちょっと時間がかかってしまったのでとりあえずこの辺で.