5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pukiwiki 文法を markdown 文法に変換する pukiwiki2markdown というツールを公開しました

Last updated at Posted at 2019-12-13

とはいえ、1年前くらいに書いたツールなんですが、

「そういえば Qiita にどうやって実装したのか、とか書いてないなー」

と思ったので供養がてら記事しました。(∩´∀`)∩

デモサイト

スクリーンショット 2019-12-13 18.12.35.png

画面向かって左側の input に pukiwiki の文章を入れると右側に変換結果が表示されます。

変換結果をクリップボードにコピーすることもできます。

ソースコード (Github)

API っぽく動くエンドポイント

下記コマンドを実行することで、pukiwiki 文法から markdown 形式に変換できます。

body の中に文章を入れる感じですね。

curl -XPOST https://pukiwiki2markdown.saino.me/api/v1/convert \
     -H 'Content-Type: application/json' \
     -d '{"body": "*Header1\n**Header2\n"}'

実装するのに使った技術

バックエンド

Slim Framework というのは本家のサイトでも謳っている通り、PHP のマイクロフレームワークです。
選定理由としては 「pukiwiki のコードをそのまま再利用したかったから」 ということに尽きます。

pukiwiki 文法のパーサーを書こうかな〜とも思ったのですが、pukiwiki の元コードを見るとゴリゴリにロジックが書かれていたので、「これは元のコードを再利用した方が圧倒的に早い」と思い、変換するロジックも PHP 側に寄せました。

(変換ツールなので割と使い捨てっちゃ使い捨てですし)

フロントエンド

  • React
  • webpack

こちらはいわゆる「普通のフロントエンド」という感じで、何ら変わったことはしてないです。

ただ単にテキストを入力して変換結果をもらうだけなので、そんなに React の恩恵は受けていません。

最後に

自前で建てたい方はリポジトリの中に docker-compose.yml を同梱しているのでお試しください。
Docker image 提供は今のところ考えてはいません。本当はやった方がいいのかもしれないけど、変換するだけのツールですので。

今後何らかの改善点があるかな〜と考えましたが、現在のところ割と悪くない精度だったので、このまましばらく運用するかもしれません。

何かご意見あれば Issue や Pull Request は受け付けていますので、よろしくおねがいします٩(๑>◡<๑)۶

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?