fern
機能豊富なRustロギングライブラリ。ログレベル設定、出力先の詳細なカスタマイズ、柔軟なフォーマット機能を提供。中規模から大規模Rustプロジェクトでの詳細なログ制御が必要な場面に適している。
ライブラリ
Fern
概要
Fernは「Input OpenAPI. Output SDKs and Docs.」をコンセプトとする統合APIプラットフォームです。主にAPIドキュメント生成とSDK自動生成を提供しており、OpenAPI、AsyncAPI、gRPCから美しくカスタマイズ可能なドキュメントサイトと、TypeScript、Python、Go、Java、Ruby、C#、PHPなど複数言語のSDKを瞬時に生成。デバッグやログ収集機能、分析統合、バージョン管理機能も含む包括的な開発者体験プラットフォームとして成長中。
詳細
Fern Platform 2025年版はY Combinator(W23)出身のスタートアップが開発する次世代API開発プラットフォームです。シリーズA資金調達($9M)を完了し、Square、Webflow、ElevenLabs、LaunchDarkly、Alchemy、Intercomなど150以上の企業に採用されています。OpenAPIスペックからのワンクリック変換で企業ブランドに統合されたドキュメントサイトとSDKを提供し、継続的インテグレーションによる自動更新、SOC 2 Type II準拠のセキュリティ、AI支援のコードスニペット監査など先進機能を搭載しています。
主な特徴
- 自動SDK生成: OpenAPIから8言語(TypeScript、Python、Go、Java、Ruby、C#、PHP、Swift、Rust)のSDK自動生成
- 美しいドキュメント: ブランド統合可能なカスタマイズ済みAPIドキュメント自動生成
- リアルタイムプレイグラウンド: ページを離れることなくAPI操作可能な統合テスト環境
- バージョン管理: 複数APIバージョンの並行ドキュメント管理とSDK提供
- 認証統合: SSO、OAuth、ユーザー名・パスワード認証によるドキュメント保護
- 分析・ログ機能: PostHog、Google Analytics、Segment統合による利用状況分析
メリット・デメリット
メリット
- OpenAPIスペックからのワンクリック自動変換による大幅な開発時間短縮
- 複数言語SDKの同時生成により開発者エコシステムの迅速な拡張
- 企業ブランドに完全統合されたプロフェッショナルなドキュメント
- 継続的インテグレーション対応による変更の自動反映
- SOC 2 Type II準拠の企業レベルセキュリティとコンプライアンス
- 150社以上の導入実績による安定性とエコシステム成熟度
デメリット
- 新興プラットフォームのため長期サポートの不確実性
- 高度カスタマイズには制限があり完全な自由度は期待できない
- 料金体系が公開されておらず大規模利用時のコスト予測困難
- 特定のAPI仕様形式(OpenAPI、AsyncAPI、gRPC)への依存
- プラットフォーム依存によるベンダーロックインのリスク
- 複雑なAPIスペックでの生成品質に個別対応が必要な場合
参考ページ
書き方の例
基本セットアップ
# Fern CLIのインストール
npm install -g fern-api
# プロジェクトの初期化
fern init
fern add plant-store-api
# 設定ファイルの確認
cat fern/api/definition/api.yml
基本的なログ出力
# docs.yml - ログ分析設定
analytics:
posthog:
api-key: ${POSTHOG_API_KEY}
endpoint: https://analytics.example.com
ga4:
measurement-id: "G-XXXXXXXXXX"
segment:
write-key: ${SEGMENT_WRITE_KEY}
高度な設定
# docs.yml - 包括的な設定例
title: API Documentation
navigation:
- api: "API Reference"
display-errors: true
snippets: true
layout:
- section: Authentication
contents:
- POST /auth/login
- POST /auth/refresh
- section: Users
contents:
- GET /users
- POST /users
- PUT /users/{id}
- DELETE /users/{id}
analytics:
posthog:
api-key: ${POSTHOG_API_KEY}
gtm:
container-id: "GTM-XXXXXX"
instances:
- url: docs.example.com
custom-domain: docs.example.com
edit-this-page:
github:
owner: company
repo: api-docs
branch: main
エラーハンドリング
# API定義の検証
fern check
# ドキュメント生成のテスト
fern generate --docs --preview
# エラー詳細の確認
fern generate --docs --log-level debug
実用例
# generators.yml - SDK生成設定
groups:
ts-sdk:
generators:
- name: fernapi/fern-typescript-sdk
version: 0.15.0
output:
location: npm
package-name: "@company/api-sdk"
token: ${NPM_TOKEN}
python-sdk:
generators:
- name: fernapi/fern-python-sdk
version: 2.10.0
output:
location: pypi
package-name: company-api-python
token: ${PYPI_TOKEN}
# GitLab CI/CD統合
stages:
- check
- preview_docs
- publish_docs
check:
stage: check
script:
- fern check
preview_docs:
stage: preview_docs
rules:
- if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
script:
- fern generate --docs --preview
publish_docs:
stage: publish_docs
rules:
- if: '$CI_COMMIT_BRANCH == "main"'
script:
- fern generate --docs