ツールとプラグイン
適切なツールとプラグインを選択することで、Markdownの執筆効率と品質を大幅に向上させることができます。このガイドでは、完全なMarkdownワークフローを構築するのに役立つ、さまざまな種類のツールを紹介します。
おすすめのエディター
プロフェッショナルなコードエディター
Visual Studio Code
特徴: 無料、クロスプラットフォーム、豊富なプラグイン
おすすめのプラグイン:
- Markdown All in One: 包括的なMarkdownサポート
- Markdown Preview Enhanced: 拡張プレビュー
- markdownlint: 構文チェックとリント
- Paste Image: 画像の簡単な貼り付け
- Table Editor: ビジュアルテーブル編集
- Math to Image: 数式を画像に変換
設定例:
{
"markdown.preview.fontSize": 14,
"markdown.preview.lineHeight": 1.6,
"markdown.extension.toc.levels": "1..6",
"markdown.extension.print.absoluteImgPath": false,
"[markdown]": {
"editor.wordWrap": "on",
"editor.lineNumbers": "on",
"editor.quickSuggestions": false
}
}
Typora
特徴: WYSIWYG、クリーンなインターフェース、豊富なテーマ
主な機能:
- リアルタイムプレビュー編集
- 数式サポート
- 統合された図表作成
- 複数形式へのエクスポート
- 画像の自動コピー
- ビジュアルテーブル編集
Mark Text
特徴: オープンソース、リアルタイムプレビュー、優れたパフォーマンス
コア機能:
- リアルタイムプレビューレンダリング
- フォーカスモード
- 数式サポート
- フローチャートサポート
- 複数のエクスポート形式
- カスタムテーマ
オンラインエディター
StackEdit
特徴: ブラウザベース、クラウド同期、コラボレーション
ハイライト:
- Google Drive、Dropboxへのリアルタイム同期
- GitHubやブログプラットフォームへの公開
- オフライン編集サポート
- 数式と図表
- 共同編集
- バージョン履歴
Dillinger
特徴: シンプルなインターフェース、マルチプラットフォーム統合
統合プラットフォーム:
- GitHub
- Dropbox
- Google Drive
- OneDrive
- HTMLとPDFへのエクスポート
- リアルタイムプレビュー
HackMD
特徴: チームコラボレーション、プレゼンテーション機能
コラボレーション機能:
- 複数ユーザーのリアルタイム編集
- コメントシステム
- バージョン管理
- 権限管理
- プレゼンテーションモード
- ブックモード
プレビューと変換ツール
静的サイトジェネレーター
VitePress
特徴: Vueエコシステム、優れたパフォーマンス、モダン
// .vitepress/config.js
export default {
title: 'マイドキュメンテーション',
description: 'VitePressサイト',
themeConfig: {
nav: [
{ text: 'ホーム', link: '/' },
{ text: 'ガイド', link: '/guide/' }
],
sidebar: {
'/guide/': [
{
text: 'はじめに',
items: [
{ text: '紹介', link: '/guide/introduction' },
{ text: 'インストール', link: '/guide/installation' }
]
}
]
}
},
markdown: {
math: true,
mermaid: true,
lineNumbers: true
}
}
GitBook
特徴: 美しいインターフェース、チームコラボレーション、バージョン管理
主な機能:
- モダンな読書体験
- チーム共同編集
- 複数形式へのエクスポート
- 検索機能
- 統合分析
- APIドキュメント生成
Docusaurus
特徴: Facebookのオープンソース、Reactエコシステム、多言語サポート
// docusaurus.config.js
module.exports = {
title: 'マイサイト',
tagline: 'サイトのキャッチフレーズ',
url: 'https://your-docusaurus-test-site.com',
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
sidebarPath: require.resolve('./sidebars.js'),
editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/',
},
blog: {
showReadingTime: true,
editUrl: 'https://github.com/facebook/docusaurus/edit/master/website/blog/',
},
theme: {
customCss: require.resolve('./src/css/custom.css'),
},
},
],
],
themeConfig: {
navbar: {
title: 'マイサイト',
logo: {
alt: 'マイサイトロゴ',
src: 'img/logo.svg',
},
},
},
};
形式変換ツール
Pandoc
特徴: 汎用コンバーター、CLIツール、多様な形式
# MarkdownからPDF
pandoc document.md -o document.pdf
# MarkdownからWord
pandoc document.md -o document.docx
# カスタムスタイルのMarkdownからHTML
pandoc document.md -s --css=style.css -o document.html
# バッチ変換
find . -name "*.md" -exec pandoc {} -o {}.pdf \;
# テンプレートを使用
pandoc document.md --template=template.html -o output.html
# 目次の生成
pandoc document.md --toc --toc-depth=3 -o document.pdf
markdownlint
特徴: 構文チェック、統一された標準、自動修正
# インストール
npm install -g markdownlint-cli
# 単一ファイルをチェック
markdownlint README.md
# ディレクトリをチェック
markdownlint docs/
設定例:
{
"default": true,
"MD013": {
"line_length": 120,
"code_blocks": false,
"tables": false
},
"MD033": {
"allowed_elements": ["div", "span", "img", "a"]
},
"MD041": false
}
画像とメディアツール
画像処理ツール
PicGo
特徴: 自動アップロード、マルチプラットフォーム対応、プラグイン拡張
対応プラットフォーム:
- Qiniu Cloud
- Tencent Cloud COS
- Upyun
- GitHub
- Alibaba Cloud OSS
- Imgur
- カスタムアップロード
設定例:
{
"picBed": {
"uploader": "github",
"github": {
"repo": "username/image-repo",
"token": "your_github_token",
"path": "images/",
"customUrl": "https://cdn.jsdelivr.net/gh/username/image-repo",
"branch": "main"
}
},
"settings": {
"autoRename": true,
"uploadNotification": true
}
}
ImageOptim / TinyPNG
特徴: 画像圧縮、サイズ縮小、品質維持
# ImageOptim CLIを使用
imageoptim *.png *.jpg
# TinyPNG APIを使用
curl --user api:YOUR_API_KEY \
--data-binary @original.png \
--output compressed.png \
https://api.tinify.com/shrink
チャート生成ツール
draw.io (diagrams.net)
特徴: 無料、強力、多様な形式エクスポート
使用例:
- システムアーキテクチャ図
- フローチャート設計
- UML図
- ネットワークトポロジ図
- マインドマップ
- プロトタイピング
Excalidraw
特徴: 手書きスタイル、共同編集、使いやすい
特徴:
- 手書きスタイルの図
- リアルタイム共同編集
- オフライン使用
- PNG/SVGエクスポート
- ライブラリ管理
- 無限キャンバス
ドキュメント管理プラットフォーム
チームコラボレーションツール
Notion
特徴: 全てを1つに集約、データベース機能、豊富なテンプレート
ドキュメント機能:
- 階層構造のページ
- リアルタイム共同編集
- データベース統合
- テンプレートシステム
- マルチメディアサポート
- API統合
Confluence
特徴: エンタープライズグレード、権限管理、強力な統合
エンタープライズ機能:
- 高度な権限管理
- 承認ワークフロー
- ブランドカスタマイズ
- エンタープライズ統合
- 高度な検索
- 分析レポート
GitBook
特徴: 開発者向け、バージョン管理、美しいインターフェース
コアアドバンテージ:
- Git統合
- バージョン履歴
- チーム共同編集
- カスタムドメイン
- 検索機能
- 分析データ
公開プラットフォーム
GitHub Pages
特徴: 無料ホスティング、バージョン管理、カスタムドメイン
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
- name: Install dependencies
run: npm install
- name: Build
run: npm run build
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./dist
Netlify
特徴: 高速デプロイメント、CDNアクセラレーション、フォーム処理
# netlify.toml
[build]
publish = "dist"
command = "npm run build"
[[redirects]]
from = "/*"
to = "/index.html"
status = 200
[build.environment]
NODE_VERSION = "16"
Vercel
特徴: ゼロコンフィグデプロイメント、グローバルCDN、プレビューデプロイメント
{
"builds": [
{
"src": "package.json",
"use": "@vercel/static-build",
"config": {
"distDir": "dist"
}
}
],
"routes": [
{
"handle": "filesystem"
},
{
"src": "/(.*)",
"dest": "/index.html"
}
]
}
自動化ツール
CI/CD統合
GitHub Actions
ワークフロー例:
name: Documentation Build and Deploy
on:
push:
branches: [ main ]
paths: [ 'docs/**' ]
pull_request:
branches: [ main ]
paths: [ 'docs/**' ]
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Lint Markdown
uses: articulate/actions-markdownlint@v1
with:
config: .markdownlint.json
files: 'docs/**/*.md'
build:
needs: lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Setup Node.js
uses: actions/setup-node@v2
with:
node-version: '16'
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build VitePress
run: npm run docs:build
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
with:
path: docs/.vitepress/dist
deploy:
needs: build
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
Pre-commit Hooks
設定ファイル .pre-commit-config.yaml
:
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/igorshubovych/markdownlint-cli
rev: v0.32.2
hooks:
- id: markdownlint
args: ['--fix']
- repo: https://github.com/psf/black
rev: 22.10.0
hooks:
- id: black
language_version: python3
- repo: local
hooks:
- id: docs-build
name: Build documentation
entry: npm run docs:build
language: system
files: '^docs/.*\.md$'
pass_filenames: false
ドキュメント生成ツール
APIドキュメント自動生成
// JSDocを使用してAPIドキュメントを生成
/**
* 新しいユーザーを作成
* @param {Object} userData - ユーザーデータ
* @param {string} userData.name - ユーザー名
* @param {string} userData.email - メールアドレス
* @param {string} [userData.role=user] - ユーザー権限
* @returns {Promise<Object>} 作成されたユーザーオブジェクト
* @example
* const user = await createUser({
* name: 'John Doe',
* email: 'john@example.com'
* });
*/
async function createUser(userData) {
// 実装...
}
# ドキュメントを生成
jsdoc src/ -d docs/api/ -c jsdoc.conf.json
OpenAPI/Swaggerドキュメント
# openapi.yaml
openapi: 3.0.0
info:
title: ユーザー管理API
version: 1.0.0
description: ユーザー管理システムのRESTful API
paths:
/users:
post:
summary: 新しいユーザーを作成
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateUserRequest'
responses:
'201':
description: ユーザーが正常に作成されました
content:
application/json:
schema:
$ref: '#/components/schemas/User'
components:
schemas:
User:
type: object
properties:
id:
type: string
example: "12345"
name:
type: string
example: "John Doe"
email:
type: string
format: email
example: "john@example.com"
CreateUserRequest:
type: object
required:
- name
- email
properties:
name:
type: string
email:
type: string
format: email
role:
type: string
default: "user"
パフォーマンス最適化ツール
ビルド最適化
画像最適化スクリプト
// optimize-images.js
const sharp = require('sharp');
const fs = require('fs');
const path = require('path');
async function optimizeImages(dir) {
const files = fs.readdirSync(dir);
for (const file of files) {
const filePath = path.join(dir, file);
const stat = fs.statSync(filePath);
if (stat.isDirectory()) {
await optimizeImages(filePath);
} else if (/\.(jpg|jpeg|png)$/i.test(file)) {
const outputPath = filePath.replace(/\.(jpg|jpeg|png)$/i, '.webp');
await sharp(filePath)
.webp({ quality: 80 })
.toFile(outputPath);
console.log(`Optimized: ${file} -> ${path.basename(outputPath)}`);
}
}
}
optimizeImages('./docs/assets/images');
ドキュメントビルドスクリプト
// build-docs.js
const { execSync } = require('child_process');
const fs = require('fs');
const path = require('path');
function buildDocs() {
console.log('📝 Start building documentation...');
// 1. Check Markdown syntax
console.log('🔍 Checking Markdown syntax...');
execSync('markdownlint docs/', { stdio: 'inherit' });
// 2. Optimize images
console.log('🖼️ Optimizing images...');
execSync('node optimize-images.js', { stdio: 'inherit' });
// 3. Build static site
console.log('🏗️ Building static site...');
execSync('vitepress build docs', { stdio: 'inherit' });
// 4. Generate sitemap
console.log('🗺️ Generating sitemap...');
generateSitemap();
console.log('✅ Documentation build complete!');
}
function generateSitemap() {
const baseUrl = 'https://yoursite.com';
const pages = findMarkdownFiles('./docs');
const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
${pages.map(page => ` <url>
<loc>${baseUrl}${page}</loc>
<lastmod>${new Date().toISOString().split('T')[0]}</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>`).join('\n')}
</urlset>`;
fs.writeFileSync('./docs/.vitepress/dist/sitemap.xml', sitemap);
}
function findMarkdownFiles(dir, basePath = '') {
const files = [];
const items = fs.readdirSync(dir);
for (const item of items) {
const fullPath = path.join(dir, item);
const relativePath = path.join(basePath, item);
if (fs.statSync(fullPath).isDirectory()) {
files.push(...findMarkdownFiles(fullPath, relativePath));
} else if (item.endsWith('.md') && item !== 'README.md') {
const urlPath = relativePath
.replace(/\.md$/, '.html')
.replace(/\\/g, '/');
files.push('/' + urlPath);
}
}
return files;
}
buildDocs();
ツール選択ガイド
ニーズに応じてツールを選択
## 個人ブログ執筆
おすすめコンボ:
- エディター: TyporaまたはMark Text
- デプロイ: GitHub Pages + Jekyll
- 画像: PicGo + GitHub
- バージョン: Git
## チームドキュメント共同執筆
おすすめコンボ:
- プラットフォーム: NotionまたはGitBook
- エディター: VS Code + プラグイン
- バージョン: Git + GitHub
- 自動化: GitHub Actions
## 技術ドキュメントウェブサイト
おすすめコンボ:
- ジェネレーター: VitePressまたはDocusaurus
- エディター: VS Code
- デプロイ: NetlifyまたはVercel
- チャート: Mermaid + draw.io
## APIドキュメント
おすすめコンボ:
- ツール: Swagger/OpenAPI
- 生成: RedocまたはSwaggerUI
- 統合: Postman
- テスト: Newman
## 学術論文
おすすめコンボ:
- エディター: Typora + Pandoc
- 数式: MathJax/KaTeX
- 引用: Zotero
- 変換: Pandoc LaTeX
コスト比較
ツールの種類 | 無料オプション | 有料オプション | エンタープライズ版 |
---|---|---|---|
エディター | VS Code, Mark Text | Typora (¥89) | - |
ホスティング | GitHub Pages | Netlify Pro (¥190/mo) | エンタープライズカスタム |
共同執筆 | GitHub | Notion (¥64/mo/user) | Confluence (¥42/mo/user) |
画像ホスティング | GitHub | Qiniu Cloud (¥0.1/GB) | エンタープライズプライベートクラウド |
ドメイン | github.io | カスタムドメイン (¥60/year) | エンタープライズドメイン |
関連構文
サマリー推奨設定
初心者向け推奨設定
�� クイックスタートキット:
1. エディター: VS Code + Markdown All in One
2. プレビュー: リアルタイムプレビュープラグイン
3. バージョン: Git + GitHub
4. デプロイ: GitHub Pages
5. 画像: リポジトリに直接アップロード
💰 コスト: 完全無料
⏱️ 学習時間: 1-2時間
🎯 適している: 個人ブログ、小規模プロジェクトドキュメント
上級者向け推奨設定
⚡ プロフェッショナルキット:
1. エディター: Typora + VS Code
2. ジェネレーター: VitePress
3. 画像ホスティング: PicGo + クラウドストレージ
4. 共同執筆: GitHub + Issues
5. 自動化: GitHub Actions
6. 監視: Google Analytics
💰 コスト: ¥200-500/year
⏱️ 学習時間: 1-2日
🎯 適している: 技術チーム、オープンソースプロジェクト
エンタープライズ設定
🏢 エンタープライズキット:
1. プラットフォーム: ConfluenceまたはGitBook
2. 編集: VS Code + チームプラグイン
3. バージョン: エンタープライズGit
4. デプロイ: プライベートクラウド + CDN
5. 共同執筆: 完全な権限管理
6. 統合: CI/CD + 監視 & アラート
💰 コスト: ¥5000-20000/year
⏱️ デプロイ時間: 1-2週間
🎯 適している: 大企業、製品ドキュメント
これらのツールを適切に選択し、設定することで、効率的で専門的なMarkdownドキュメントワークフローを構築できます。