[5] [DFN[はてな記法]]は、[[株式会社はてな]]の [[Webサービス]]群で用いられている[[平文]]ベースの簡易[[マーク付け言語]]の総称です。

[6] 00年代初頭に流行した[[ウィキ]]の[[構文][Wiki構文]]の影響を受けており、
簡単な記号列で[[平文]]から [[HTML]] を生成できる形になっています。

* 代替

[46] 互換性のために必要な場合を除き、使うべきではありません。
[[Markdown]] や [[HTML]] などの他の[[ファイル形式]]を検討するべきです。

* 仕様書

[43] [[利用者]]向けの[[リファレンス]]的な[[文書]]は公開されていますが、
技術者向けの詳細な[[仕様書]]は公開されていません。

* 機能

[FIG(short list)[ [55] [[はてな記法]]
- [[ウクレレ記法]]
]FIG]

[60] 
[CITE[うごメモはてな]]、
[CITE[はてなハイク]]、
[CITE[はてなプロフィール]]
などは
[emoji:001]
のように[[絵文字]]を指定できました。
[SEE[ [[うごメモはてなの絵文字]] ]]
この記述は他の[[はてな記法]]の構文とは違って、
保存前に[[絵文字]]に変換されていたようです。

* 方言

[7] サービスや文脈ごとに利用できる構文 (「記法」) に違いがあったり、
[[HTMLタグ]]の利用可否や[[自動キーワードリンク]]が適用されたりして、
数多くのバリエーションが存在しています。

[28] 以前は[CITE[はてなダイアリー]]
(サービス終了済み)
のものが最も正式(?)なもの (フルスペックのもの)
として扱われていましたが、現在では[CITE[はてなブログ]]が主要な実装となっているようです。

[REFS[
- [20] [CITE@ja[はてなダイアリーのヘルプ - はてな匿名ダイアリー]]
( ([TIME[2017-06-07 18:17:21 +09:00]]))
<http://anond.hatelabo.jp/keyword/%E3%81%AF%E3%81%A6%E3%81%AA%E3%83%80%E3%82%A4%E3%82%A2%E3%83%AA%E3%83%BC%E3%81%AE%E3%83%98%E3%83%AB%E3%83%97>
- [16] [CITE[はてな記法一覧 - はてなダイアリーのヘルプ]]
([TIME[2017-03-11 00:34:35 +09:00]])
<http://hatenadiary.g.hatena.ne.jp/keyword/%E3%81%AF%E3%81%A6%E3%81%AA%E8%A8%98%E6%B3%95%E4%B8%80%E8%A6%A7>
]REFS]

[18] [[はてなグループ]] (サービス終了予定) 
の[[はてな記法]] [SRC[>>17]] は[[はてなダイアリー]]のものに近いようですが、
一部独自の記法があります。

[REFS[
- [17] [CITE[はてなグループ - はてなグループのヘルプ]]
( ([TIME[2017-04-24 00:36:50 +09:00]]))
<http://g.hatena.ne.jp/help#editrule>
]REFS]

[26] [CITE[はてなブックマーク]]は[DFN[簡易はてな記法]]を採用しています [SRC[>>27]]。
[CITE[はてなダイアリー]]版の[[部分集合]]のように説明されていますが、
独自の機能も含まれるようです。

[50] ただしいつしか (告知なく) 正常に動作しなくなっているようです [SRC[>>47]]。

[REFS[
- [27] [CITE@ja[簡易はてな記法って?]] ([TIME[2009-06-03 08:42:04 +09:00]] 版) <http://b.hatena.ne.jp/help/textformat>
- [47] [CITE@ja[書かれてないけど、簡易はてな記法('''['''google:○○''']'''とか)が効かなくなってる…。(8月のリニューアルでエントリの個別ページ (b.hatena.ne.jp/entry/〜) では効かなくなってたけど、ユーザー毎のブクマ一覧ページでは効いてた) - srgyのコメント / はてなブックマーク]]
([TIME[2017-11-24 20:20:56 +09:00]])
<http://b.hatena.ne.jp/entry/349855357/comment/srgy>

[48] じゃあ逆に今どこで[[簡易はてな記法]]が使われているんだろう?

[CITE@ja[簡易はてな記法 - はてなブックマークヘルプ]] ([TIME[2017-11-24 20:21:33 +09:00]]) <http://b.hatena.ne.jp/help/entry/textformat>

には何も書いてなくて、お知らせにも載っていないということは、
廃止じゃなくてバグだったりするのかな?

]REFS]

[29] [CITE[はてなハイク]]
(サービス終了済み)
は [DFN[Hatena Notation Lite]] を採用しています。
機能は限定的ですが、[CITE[はてなダイアリー]]にない独自の機能も含まれています。

[30] その他いくつかのサービスで違ったバリエーションが採用されています。

[9] [[はてなブログのMarkdown]]は[[はてな記法]]の一部を取り込んだものとなっています。

-*-*-

[24] [[株式会社はてな]]が[[オープンソースソフトウェア]]として[[はてな記法]]の[[構文解析器]]をいくつか公開していますが、
実際のサービスの機能の一部分しか実装されていない不完全なもののようです。

[25] [[株式会社はてな]]以外による実装もいくつか存在し、それを採用した製品等も存在しているようですが、
完全な互換性があるわけではなさそうです。

* 最近の動向

[21] [[はてな記法]]を採用した[[株式会社はてな]]のサービスの中では新しい部類である
[CITE[はてなブログ]]は、 [[WYSIWYG]] や[[マークダウン][はてなブログのMarkdown]]も選択可能であり、
[[はてな記法]]の露出は減っています。

[22] しかし一部の[[はてな記法]]が[[マークダウン][はてなブログのMarkdown]]に組み込まれたり、
新機能が追加されたり [SRC[>>11]] と、見捨てられているわけではなさそうです。

[56] 
[CITE[はてなブログ]]では、
新機能のための新しい構文がいくつか (案内されずに)
追加されているようですが、
一方で[CITE[はてなダイアリー]]以来の構文の多数が廃止されているようで、
全体的には機能縮小方向にあるとみられます。
[CITE[はてなダイアリー]]はサービスが終了し
[CITE[はてなブログ]]にデータが強制自動移行されましたが、
互換性を維持する努力はなされていないと理解せざるを得ません。

[57] 
そんな状況ですので、
過去に[[はてな記法]]を活用した記事を書いて保持している人は、
早いうちに
[[HTML]]
など安全な形式に変換した上で他サービスにでも移行するのがいいかもしれません。


[FIG(quote)[
[FIGCAPTION[
[72] 
[CITE@ja[はてな記法をHTMLから復元 - jiomの日記]], [TIME[2024-02-07T04:16:08.000Z]] <https://jiom.hatenablog.com/entry/2020/02/21/000000>
]FIGCAPTION]

>はてなブログに移行してから、はてなダイアリと異なり、はてな記法形式でのエクスポートができなくなりました。バックアップは HTML 形式になります。その結果、バックアップファイルをインポートすると、はてな記法がすべて HTML に変へられてしまひます。同様の事象は、はてな記法の記事を削除してゴミ箱に入れたものを元に戻すときにも起きます。[SNIP[]]
]FIG]

[73] 
[[はてな]]ももう[[はてな記法]]をまともにサポートする気はなさそうですね。


[52] [CITE@ja[【予告】はてなブログで利用できるはてな記法のうち、一部の記法について仕様変更もしくは廃止を行います - はてなブログ開発ブログ]]
([TIME[2019-09-27 09:51:12 +09:00]])
<https://staff.hatenablog.com/entry/2019/09/26/115513>

[53] 
サービス終了は企業の経営判断でしょうから仕方がないのでしょうが、
[CITE[はてなダイアリー]]終了で強制移行してから、
このように仕様変更して元の[[はてな記法]]の解釈を変えてしまうのは、
ユーザーコンテンツを破壊しているということですよ。

[54] 
ブコメで指摘がある通り、
過去の記事の意味が通らなくなるケースが出てくるということです。
この先[CITE[はてなブログ]]で新機能が実装されても、
いつ廃止されるかわからないのでは安心して使えないのではないでしょうか。


[58] [CITE@ja[人力検索はてな・はてなプロフィールの記法変換の仕様を一部変更いたしました - はてなの告知]], [TIME[2020-11-29T04:39:04.000Z]] <https://hatena-announce.hatenastaff.com/entry/2020/11/20/155523>

>
人力検索はてなにおけるはてな記法の変換の仕様を一部変更いたしました。この変更によりisbn/asin記法など一部の記法、ならびに一部オプションがご利用いただけなくなります。ご不便をおかけいたしますが、ご了承ください。

[59] せめてその「一部」がどれとどれか、全部書こうよ...

[74] 
>>54 でも [[GFM]] なんかもある日突然[[非互換変更]]してるし、移行しようにも他社も全部信用ならないんだよなあ。

[75] 
[[HTML]] 以外はどれも信用してはいけない[[ってコト]]?


* MIME 型

[31] [CITE[はてなブログ]]の [[AtomPub]] [[Web API]] は、
[CITE[はてなブログ]]版[[はてな記法]]の [[MIME型]]を
[DFN[[CODE(MIME)@en[text/x-hatena-syntax]]]]
としています [SRC[>>32]]。

[REFS[
- [32] [CITE[はてなブログAtomPub - Hatena Developer Center]] ([TIME[2017-08-02 18:59:15 +09:00]]) <http://developer.hatena.ne.jp/ja/documents/blog/apis/atom#member>
]REFS]

* XML 埋め込み

[49] [[XML文書]]への埋め込みについては、[[はてなXML名前空間]]を参照。

* 実装

[62] 
[[株式会社はてな]]で作られたものや関係者が作ったものと、
外部 (一般の[[利用者]]) で独自に作ったものがあります。

-*-*-

[76] 
[CITE@en-US[Text::Hatena - Perl extension for formatting text with Hatena Style. - metacpan.org]], [TIME[2024-11-04T13:55:35.000Z]] <https://metacpan.org/pod/Text::Hatena>

[77] >>76 はかなり古い[CITE[はてなダイアリー]]のものに近い(が同じではない)公式実装。

[3] [CITE[Text::Xatena を CPAN に上げました - 冬通りに消え行く制服ガールは、夢物語にリアルを求めない。 - subtech]]
([TIME[2010-03-25 09:56:34 +09:00]] 版)
<http://subtech.g.hatena.ne.jp/cho45/20100323/1269277493>

[38] [CITE@ja[Text::Xatena - はてな記法のような記法フォーマットパーサー - JPerl Advent Calendar 2010 Meta_adcal Track]]
([TIME[2017-08-02 19:07:40 +09:00]])
<http://perl-users.jp/articles/advent-calendar/2010/meta_adcal/5>

[66] これは[[株式会社はてな]]の社員が私的に開発したものですが、
[CITE[[[はてなブログ]]]]
の前史のようなものです。

-[12] [CITE@en[onishi/Text-Hatena: The new "Text-to-HTML converter" with Hatena syntax]]
([TIME[2017-02-24 16:35:39 +09:00]])
<https://github.com/onishi/Text-Hatena>
- [79] [CITE@en[The new Text::Hatena | PPT]], [TIME[2024-11-04T13:58:08.000Z]] <https://www.slideshare.net/slideshow/the-new-texthatena/14004873>
- [78] [CITE@ja[Text::Hatena最新版 - 大西ブログ]], [TIME[2024-11-04T13:57:23.000Z]] <https://onishi.hatenablog.com/entry/2013/09/25/154603>
-
[14] [CITE@en[onishi/Text-Hatena-Embed]]
([TIME[2017-03-06 19:14:11 +09:00]])
<https://github.com/onishi/Text-Hatena-Embed>
- [80] 
[CITE@en[oEmbed と Text::Hatena | PPT | Free Download]], [TIME[2024-11-04T14:02:14.000Z]] <https://www.slideshare.net/slideshow/oembed-texthatena/12043651>

[71] [CITE@en[The new Text::Hatena]], [TIME[2023-05-23T10:03:27.000Z]] <https://www.slideshare.net/onishi/the-new-texthatena>

[63] [DFN[[CODE[Text::Hatena]]]] という名前の[[Perlモジュール]]は何世代かあって、
そのうち >>12 は [CITE[はてなブログ]]
の開発初期に [[OSS]] として公開されたものです。
しかし残念なことにその後の変更は反映されていませんので、
現在の
[CITE[はてなブログ]]
の実装とは違うと思われます。

- [23] [CITE@en[wakaba/Text-Hatena: The new "Text-to-HTML converter" with Hatena syntax]]
([TIME[2017-08-02 18:44:49 +09:00]])
<https://github.com/wakaba/Text-Hatena>



[64] >>23 は >>12 から [[fork]] して、各サービスの[[ヘルプ]]や実際の挙動に合わせて機能追加・修正したものです。


[69] [CITE@en[wakaba/formatter]], [TIME[2023-04-18T09:55:27.000Z]] <https://github.com/wakaba/formatter>

[70] >>69 は >>23 を [[Webサーバー]]化したもの。 [CODE[Dockerfile]] もあり。

-*-*-


- [8] [CITE@en[wakaba/perl-text-hatenalite: Text::HatenaLite - Hatena Notation Lite parser and formatters]]
([TIME[2016-10-23 11:56:08 +09:00]])
<https://github.com/wakaba/perl-text-hatenalite>
-- [67] 
[CITE@en[wakaba/perl-webservice-imageurls: WebSevice::ImageURLs Perl module]], [TIME[2023-04-18T06:15:51.000Z]] <https://github.com/wakaba/perl-webservice-imageurls>
-- [68] 
[CITE@en[wakaba/perl-mono: Mono (or product or thing) Perl module]], [TIME[2023-04-18T06:16:24.000Z]] <https://github.com/wakaba/perl-mono>

[65] 
[CITE[はてなハイク]]
等の
[[Hatena Notation Lite]]
の実装として実際に使われていた[[Perlモジュール]]。
[[オープンソースソフトウェア]]として公開されています [SRC[>>8]]。



* メモ

[1] [CITE[Competitions: Flipnote Studio - Amazing Giveaway - Nintendo Life: DSiWare]]
([[Nintendo Life]] 著, [TIME[2009-08-15 10:56:12 +09:00]] 版)
<http://dsiware.nintendolife.com/news/2009/08/competitions_flipnote_studio_amazing_giveaway>

[2] [CITE[Wikihub :: wikihub-wiki :: 記法/はてな記法.txt]]
([TIME[2009-10-18 23:37:41 +09:00]] 版)
<http://wikihub.org/wiki/wikihub-wiki/%E8%A8%98%E6%B3%95/%E3%81%AF%E3%81%A6%E3%81%AA%E8%A8%98%E6%B3%95>


[4] [CITE[Bloggerではてな記法を使うユーザースクリプト - by edvakf in hatena]]
([TIME[2010-03-28 12:36:39 +09:00]] 版)
<http://d.hatena.ne.jp/edvakf/20100328/1269734933>

[10] [CITE@en[nobuoka/Text-Hatena.java]]
([TIME[2017-02-18 14:11:25 +09:00]])
<https://github.com/nobuoka/Text-Hatena.java>

[FIG(quote)[
[FIGCAPTION[
[11] [CITE@ja[はてなフォトライフの画像を貼り付けるときに、フォトライフ記法でaltとtitleを指定できるようにしました(はてな記法モード、Markdownモード) - はてなブログ開発ブログ]]
([TIME[2017-02-24 16:26:39 +09:00]])
<http://staff.hatenablog.com/entry/2017/02/24/152000>
]FIGCAPTION]

> fotolife記法のtitleオプションおよびaltオプションは、はてなブログ独自の拡張です。はてなダイアリー、はてなグループなどでは利用できません。

]FIG]



[13] [CITE@en[aereal/go-text-hatena]]
([TIME[2017-03-06 19:13:07 +09:00]])
<https://github.com/aereal/go-text-hatena>


[15] [CITE@ja[編集モード - はてなブログ ヘルプ]]
([TIME[2017-03-11 00:34:23 +09:00]])
<http://help.hatenablog.com/entry/editing-mode>

[19] [CITE@ja[はてな記法 - はてな匿名ダイアリー]]
( ([TIME[2017-06-07 18:17:17 +09:00]]))
<http://anond.hatelabo.jp/keyword/%E3%81%AF%E3%81%A6%E3%81%AA%E8%A8%98%E6%B3%95>




[FIG(quote)[
[FIGCAPTION[
[33] [CITE@ja[ヘルプ - はてな匿名ダイアリー]]
([TIME[2017-08-02 19:02:09 +09:00]])
<https://anond.hatelabo.jp/help>
]FIGCAPTION]

> すべてのはてな記法がサポートされているわけではありません
> 特有のはてな記法として anond:記法 があります(後述)

]FIG]


[34] [CITE@ja[WordPressのはてな記法プラグイン「WP Hatena Notation」 - Rewish]]
([TIME[2017-08-02 19:04:29 +09:00]])
<https://rewish.jp/blog/releases/wp_hatena_notation>

[35] [CITE@ja[MarsEditに、はてな記法プレビューを設定 | Act as Professional]]
([TIME[2017-08-02 19:04:00 +09:00]])
<https://hiroki.jp/2012/04/09/3474/>

[FIG(quote)[
[FIGCAPTION[
[36] [CITE[hslide.php - はてな記法プレゼンツール]]
([TIME[2015-04-12 02:42:58 +09:00]])
<https://anatoo.github.io/hslide.php/>
]FIGCAPTION]

> はてな記法によってプレゼンテーションを記述します
> 生成したプレゼンテーションはブラウザから利用できます

]FIG]


[37] [CITE@ja[Railsではてな記法っぽい独自の記法を実装する - アトラシエの開発ブログ]]
([TIME[2017-08-02 19:05:54 +09:00]])
<http://blog.attracie.com/entry/2016/12/16/192012>


[39] [CITE@ja[text-hatena.js 公開]]
([TIME[2016-01-18 01:50:55 +09:00]])
<http://tech.nitoyon.com/javascript/application/texthatena/download.html>

[40] [CITE[はてな記法ワープロ]]
([TIME[2013-09-23 12:32:38 +09:00]])
<http://tech.nitoyon.com/javascript/application/texthatena/wordpro/>

[41] [CITE@ja[PHPで書いたはてな記法パーサをCodeReposにあげました - id:anatooのブログ]]
([TIME[2017-08-02 19:09:48 +09:00]])
<http://blog.anatoo.jp/entry/20080630/1214824245>

[42] [CITE[PandocのカスタムWriterでMarkdownからはてな記法に変換 - Qiita]]
([TIME[2017-08-02 19:10:05 +09:00]])
<http://qiita.com/takada-at/items/4d94a8811b4aaa5d5fd3>

[44] [CITE@ja[記事中の見出しから目次を自動的に作成する「目次記法」を追加しました - はてなブログ開発ブログ]]
([TIME[2017-09-01 13:53:14 +09:00]])
<http://staff.hatenablog.com/entry/2015/09/09/152158>

[45] [CITE@ja[更新情報/2008年/12月/31日/その他: 改善: 新編集モード Text::Hatenaの追加について - @WIKIご利用ガイド - アットウィキ]]
([TIME[2017-10-11 14:28:19 +09:00]])
<https://www1.atwiki.jp/guide/pages/1666.html>



[51] [CITE@en[aereal/gohn: Hatena Notation (はてな記法) Parser written in Go]]
([TIME[2019-07-27 16:27:16 +09:00]])
<https://github.com/aereal/gohn>



[FIG(quote)[
[FIGCAPTION[
[61] [CITE@ja[はてな記法モードご利用時の「Instagram貼り付け」仕様を変更しました(ほか1件) - はてなブログ開発ブログ]]
([TIME[2020-12-17T01:02:13.000Z]])
<https://staff.hatenablog.com/entry/2020/12/16/182243?utm_source=subscripiton_mail&utm_medium=email&utm_campaign=subscripiton>
]FIGCAPTION]

> はてな記法	'''['''https://www.instagram.com/p/BQhecROl7Wz/:embed:hidecaption''']'''

]FIG]

