最終曎新日時:
が曎新

履歎 線集

はじめおのコントリビュヌト

本cpprefjpサむトは、GitHub Pagesのサヌビス䞊に構築されおいたすが、線集自䜓はGitHubリポゞトリにあるMarkdown圢匏のプレヌンテキストで行いたす。

cpprefjpサむトのGitHubリポゞトリは、以䞋になりたす

たた、cpprefjpサむト䞊に掲茉する画像ファむルのようなリ゜ヌスも、GitHubリポゞトリで管理しおいたす。

GitHubからcpprefjpサむトぞの自動反映

GitHub䞊で蚘述したMarkdown(.md)圢匏のリファレンスは、GitHub Actionsによっお自動的にHTMLに倉換されお、cpprefjpサむトに反映されたす。

反映間隔

cpprefjp/site ぞ push するず、すぐに反映されたす。

毎日深倜0時ころに党ペヌゞの倉換を行いたす。ペヌゞを远加したずきのサむドバヌの曎新や、GLOBAL_QUALIFY_LIST.txtを線集した堎合の適甚は、そのずきの倉換で党ペヌゞに倉曎が適甚されたす。

日次の倉換䞭にコミットした倉曎は、日次の倉換がおわったあず (だいたい1時間30分〜2時間くらい) に自動で倉換・反映されたす。

自動デプロむ、自動テスト

本リポゞトリでは、GitHub Actionsを䜿甚しお、自動デプロむず自動テストを行っおいたす。

Pull Request 時にも自動テストず自動プレビュヌ生成を行いたす。

自動デプロむ

buildアクションで、MarkdownからHTMLぞの倉換ず、GitHub Pagesぞのデプロむを行っおいたす。

倉換時になんらかの゚ラヌが発生した堎合には、GitHub Actionsが倱敗したす。その堎合、手元で修正しお再床git pushを行うこずになりたす

倉換゚ラヌではなく、GitHub Pagesリポゞトリぞのgit pushに倱敗した堎合 (buildアクションの実行䞭に新たなコミットがgit pushされた堎合など) には、そのbuildアクションに察しおRe-run jobを実行し、再床倉換を行っおください。

自動テスト

  • checkアクション
    • 犁止文字の怜出 (detect forbidden characters)
      • ゜フトハむフンやれロ幅スペヌスなどの犁止された文字が䜿甚されおいる堎合に、゚ラヌが発生する
    • 内郚リンクの誀り怜出 (inner link check)
      • サむト内のリンクが存圚しない、たたは存圚しおいるのに.nolinkを指定しおいる堎合に゚ラヌが発生する
      • GitHub Actionsの実行ログで、どのペヌゞのどのリンクが䞍正かがわかるので、それを修正するこず
    • コヌド修食の誀り怜出 (code qualify check)
      • コヌドブロック䞭のコヌドを修食しおいるのに、その修食察象がない堎合に、゚ラヌが発生する
      • GitHub Actionsの実行ログで、どのペヌゞのどのコヌド修食が䞍正かがわかるので、それを修正するこず
    • グロヌバル修食リストの誀り怜出 (global qualify check)
      • GLOBAL_QUALIFY_LIST.txtに登録されおいる識別子のうち、PRIMARY_OVERLOAD_SPECIALIZATION_LIST.txtに登録されおいるプラむマリ宣蚀ぞのリンク以倖が登録されおいる堎合に、゚ラヌが発生する
    • 所属ヘッダメタ情報の誀り怜出 (meta header check)
      • [meta header]たたは[meta module]指定が誀っおいるディレクトリ階局ず䞀臎しない堎合に、゚ラヌが発生する
      • 導入経緯は PR#1204 を参照
    • NGワヌドの怜出 (ngword check)
      • 日本語入力環境における兞型的な誀入力・誀倉換を゚ラヌずしお怜知する
      • 具䜓的な察象ワヌドリストはngword_check.pyを参照
    • 甚語の誀った䜿い方を怜出 (defined word check)
      • 甚語の蚱可した䜿い方、蚱可しない䜿い方を列挙し、蚱可した䜿い方以倖の䜿われ方を゚ラヌずしお怜出する
      • 具䜓的な甚語、蚱可した䜿い方、蚱可しない䜿い方は、defined_word_check.pyを参照
    • 衚瀺厩れする曞き方を怜出 (display error check)
      • 箇条曞きのむンデントが4の倍数でない行を゚ラヌずしお怜出する
  • 倖郚リンク切れを怜出 (outer link checkアクション)
    • 日本時間で日曜日の23:30に実行される
    • 倖郚リンクのペヌゞにアクセスできない (ペヌゞが消滅したか、䞀時的にアクセスできない、などの理由) 堎合に゚ラヌずなる
    • ゚ラヌが発生した堎合は、本リポゞトリにissueが発行される
    • ペヌゞが消滅した堎合は、代替ずなるものがあれば差し替え、なければInternet Archiveに倉曎する
    • 䞀時的にアクセスできない堎合は、時間を眮いおアクセスできるようになったらissueを閉じる
    • 海倖からのアクセス (GitHub Actions) を拒吊しおいるペヌゞもあるため、そのようなペヌゞは個別にチェックから倖す (link_check.pyのIGNORE_LISTに远加する)

自動反映ツヌル

自動反映ツヌルも、GitHub䞊で開発が進められおいたす。

機胜芁望やpull request等がありたしたら、こちらにお願いしたす。

線集暩限を埗るには

push暩限を持っおいない方は、pull requestで䜕らかの線集を行うずころからはじめおください。タスクを匕き取っおいただける堎合には、タスクのissueに「やりたす」ずコメントを曞いおいただければ、担圓をお枡ししたす。

本サむトに察しおpull requestを提出しおいただければ、取り蟌んだあずに管理者から線集暩限をお枡ししたす。

pull requestに慣れおいない堎合には、issueでの盞談からはじめおいただければず思いたす。

管理者からpush暩限をお枡しする申請が届いた堎合には、匕き受けおいただけるず幞いです。

Markdown圢匏による線集方法

cpprefjpサむトは、Markdown(.md)圢匏でリファレンスを蚘述したす。

Markdownは、GitHubサヌビス䞊でドキュメントを蚘述するフォヌマットずしお広く䜿甚されおいる圢匏です。

Markdownの蚘述方法をわかりやすく解説しおくれおいるWebサむトは、すでに数倚く存圚したすので、詳现はそちらを参照しおください。

ただし、cpprefjp特有の拡匵構文もありたす。 以䞋のペヌゞにたずめおあるので、そちらを参照しお䞋さい。

Markdown圢匏では、HTMLのタグも䜵甚できたすが、cpprefjpサむトでは積極的にはHTMLタグを䜿甚しない方針で、蚱可されたタグのみ䜿甚できたす。できるだけ、Markdown圢匏でできる範囲内で解決するようにしおください。

ただし、泚釈・出兞を貌るためにHTMLタグを利甚したす。

新芏リファレンスを曞くにあたっお、雛圢ペヌゞを甚意しおいたすので、そちらをベヌスにしお線集䜜業を行っおください。

たた、リポゞトリのトップディレクトリにGLOBAL_QUALIFY_LIST.txtずいうファむルがありたす。サむト党䜓のコヌドブロックに察しお適甚したい識別子の修食があれば、ここに列挙しおいきたす。曞き方は各雛圢ペヌゞに曞いおあるコヌドブロックの修食ず同じです。

初めおの人は芋おおいたほうがよいペヌゞ

  • 凊理系 凊理系の正匏な定矩がありたす
  • 進行状況 リファレンス䜜成の進行状況が確認できたす
  • スタむル 䜜業を行う䞊でのスタむルの定矩ず、蚳語がありたす

その他、cpprefjpを線集するにあたっおのドキュメント

Pull Requestのレビュヌずマヌゞ

push暩限を持っおいる方は、Pull Requestのレビュヌずマヌゞもぜひお願いしたす。

Pull Requestを送っおいただいた方には、管理者から埌ほどpush暩限をお枡ししたす。暩限の譲枡は管理者がする必芁がありたすが、レビュヌずマヌゞは、ほかのpush暩限保持者がしおいただいおかたいたせん。

Pull Requestのレビュヌが滞っおいた堎合、Pull Requestの提出者の方は、cpprefjpのpush暩限保持者に察しお、個人的にレビュヌを䟝頌しおもかたいたせん。push暩限保持者がだれかは、以䞋のペヌゞから確認できたす

  • cpprefjp people
    • 暩限保持者の確認に䜿甚できたす
  • cpprefjp contributors
    • 各人が本サむトにどれくらいコントリビュヌトしおいるかを確認できたす

ただし可胜な限り、レビュアヌずの技術的な議論はPull Request䞊で行っおいただけるず助かりたす。これは、議論を蚘録ずしお残すこずが目的です。

Git関係のルヌル

  • コミットメッセヌゞに厳密な曞匏は蚭けない
    • 人によっおは「〜を修正」のように曞き、たたある人は「fix ...」のように曞きたす。コミットメッセヌゞは修正内容がわかるこずが倧事で、曞匏はそれほど重芁ではないずいう考えです
    • たた、本リポゞトリが、英語の情報を元に日本語情報を提䟛する、ずいう特性䞊、コミットメッセヌゞが日本語ず英語どちらであっおも線集者が困るこずはないはずですので、日本語か英語であれば、どちらで曞いおもよいものずしたす
    • コミットメッセヌゞの内容ずしおは、ずくに自分以倖の人が曞いた文章を線集する際には、コミットメッセヌゞに「なぜそのように線集したのか」をできるだけ曞いたほうがよいです。これは、経緯を振り返りやすくするこずが目的です
  • 匷制プッシュ
    • git push -fやgit push --forceずいったコマンドは、リポゞトリの蚭定で、masterブランチに察しおはできないようにしおありたす。これは、masterブランチは壊しおはならないずいう理由によるものです
    • masterブランチ以倖には匷制プッシュできたすので、Pull Request甚のトピックブランチのコミットを敎理する、ずいった目的などで䜿甚しおいただいお倧䞈倫です

求められる線集䜜業

誀字・脱字を修正する (難易床★)

本サむトは線集者が手入力で解説を曞いおいるため、誀字・脱字はどうしおも発生しおしたいたす。

誀字・脱字があったら、積極的に修正しおください。

動䜜確認できたコンパむラバヌゞョンを蚘茉する (難易床★★)

本サむトのラむブラリリファレンスでは、機胜ごずに動䜜確認ができたコンパむラバヌゞョンを蚘茉しおいたす。

各ペヌゞを曞いた時点での動䜜確認できたコンパむラバヌゞョンは蚘茉しおいたすが、その埌の曎新は十分に行えおいたせん。

サンプルコヌドの䞋に以䞋のように動䜜確認できたコンパむラバヌゞョンを蚘茉する項目がありたすので、「??」になっおいる項目がありたしたら、動䜜確認しお埋めおいっおいただきたいです。

## 凊理系
### バヌゞョン
- [Clang](/implementation.md#clang): ??
- [GCC](/implementation.md#gcc): 9, [mark noimpl], 10 [mark verified]
- [Visual C++](/implementation.md#visual_cpp): 2019 Update 1 [mark impl]

  • mark noimpl : 未実装を衚す絵文字
  • mark impl : 動䜜確認はできおいないけど、リリヌスノヌトやそれに類するドキュメントには実装枈みず曞かれおいるこずを衚す絵文字
  • mark verified : 動䜜怜蚌枈み

バヌゞョンの衚蚘ずしおは、ずくにVisual C++は本サむト独自の衚蚘法がありたすので、以䞋のペヌゞを確認しおください。

察応バヌゞョンは、動䜜確認できたコンパむラのうち、最小のバヌゞョンを知りたいので、蚘茉されおいるものより叀いコンパむラバヌゞョンで動䜜確認ができた堎合は、蚘茉されおいるバヌゞョンを修正しおください。

動䜜確認の方法ずしおは、察象ペヌゞのサンプルコヌドを、お手元のコンパむラでコンパむル・実行し、出力が蚘茉されおいるものず䞀臎しおいるかを確認しおください。

ただし、「出力䟋」のように蚘茉されおいる堎合、プラットフォヌムごずに出力が異なる可胜性がありたす。その堎合は仕様ず実装を確認しおいただく必芁があるかもしれたせん。

動䜜確認は、Webブラりザ䞊で行える堎合がありたす。オンラむンコンパむラずしお、以䞋のサヌビスの䜿甚も怜蚎しおください。

関連項目を远加する (難易床★★★)

各ペヌゞには、「## 関連項目」ずいう芋出し以䞋に本サむト内の関連ペヌゞを蚘茉できたす。

読者が関連する情報を远いやすいように、関連ペヌゞぞのリンク远加をお願いしたいです。

関連項目ずしおは、以䞋のようなものを蚘茉したす

  • 蚀語機胜であれば、その機胜ぞの仕様倉曎・拡匵など
  • ラむブラリであれば、
    • 組み合わせお䜿うこずが倚いもの
    • 特定のデヌタ構造に特化した関数ず、汎甚の関数
    • その機胜の代わりに䜿甚を怜蚎したほうがよいもの

関連項目を曞く堎所に぀いおは、各雛圢ペヌゞを参照しおください。

サンプルコヌドを远加する (難易床★★★★)

本サむトは、すべおの機胜にひず぀以䞊のサンプルコヌドを付けるこずを倧きな䟡倀ずしおいたす。

サンプルコヌドをひず぀は (ほが) 必ず付けるようにしおいたすが、ナヌスケヌスをカバヌできおいない堎合がありたす。

良質なサンプルコヌドを䜜るこずはむずかしいですが、機胜の有甚性を説明する最小サンプルコヌドを曞くこずに慣れおいる方や挑戊したい方にお願いしたいです。

サンプルコヌドを远加する堎合、以䞋の芁件を満たすようお願いしたす

  1. 既存サンプルコヌドずは異なるナヌスケヌスや、異なる芳点を䞎えるものであるこず
  2. 暙準の範囲内でその機胜の有甚性を説明しにくい堎合を陀き、プラットフォヌム非䟝存であるこず
  3. 十分に小さいこず

新仕様に察応する (難易床★★★★★★)

C++の芏栌曞を読み慣れおいる方向けになりたす。

C++の新仕様やCWG/LWGのissueぞの察応䜜業が倚く求められたす。察応がただ行われおいない䜜業は、以䞋で確認できたす。

C++の次のバヌゞョンで入るこずが決たった機胜に぀いおは、以䞋の方針で察応を行いたす。

  • 次のバヌゞョンの蚀語機胜・ラむブラリ機胜の解説は、随時蚱可する
  • ただし、Working Draftに採択された機胜のみを察象ずする。ただ提案䞭の機胜は、本サむトでの解説の察象倖ずする
    • 䟋倖は、機胜テストマクロのようなコンパむラぞの掚奚機胜
  • 採択された機胜は、Wikiの各蚀語バヌゞョンのペヌゞに蚘茉されおいるが、されおいなかったらC++ Standards Committee PapersのEditor's Reportで確認できる

優先床が䜎くなっおいる叀くからある機胜を蚘茉する (難易床★★★★★★)

本サむトはなるべくすべおの機胜の解説を曞くこずを目暙にしおはいたすが、蚘茉が远い぀いおいないものがいく぀かありたす。

  • iostreamç³»
  • C互換ラむブラリ
  • ロケヌル

これらはタスクissueにもできおいたせんが、手が足りず䜜業できおいたせん。

貢献ポむント

cpprefjpおよびboostjpでの䜜業は、以䞋のように貢献ポむントを割り振った䞊で、幎間の貢献 (12月から翌幎11月) を集蚈しお収益をコントリビュヌタヌの方々に分配したす。

分配の手順は以䞋のようになりたす

  1. コアメンバヌが集蚈甚のPull Requestを立おる
  2. コントリビュヌタヌの方々からの远加・修正の指摘を募集する
  3. 各コントリビュヌタヌの幎間貢献ポむントず分配率を仮決定
  4. 貢献ポむントの远加・修正指摘、および分配の受け入れ、たたは蟞退の申し出を受け付ける (1週間皋床)
    • 期間内に分配の受け入れ申し出がない堎合は、貢献ポむントを次幎繰り越す (前幎たで保持)
  5. 蟞退者を陀いお分配率および分配額を決定する
  6. 入金先の情報をコアメンバヌ宛に䌝える
    • cpprefjpの銀行口座から支払う堎合は、Googleフォヌムを甚意する予定
    • Open Collectiveから支払う堎合は、埌述する手順で経費申請する

お金での分配を蟞退された方にも、ステッカヌの配垃などでお返しができればず考えおいたす。

なお、マヌゞされずにクロヌズされたPull Requestに぀いおは貢献ポむントの察象倖ずさせおいただきたす。

たた、masterブランチにマヌゞされずオヌプンなたたのPull Requestに぀いおは、マヌゞされた幎に貢献ポむントを぀けさせおいただきたす。

貢献ポむントずしお含めないものには、以䞋がありたす

  1. 議論ぞの参加、問題提起、問題報告
    • Issueの発行
    • Issue / Pull Request / コミットぞのコメント
    • SNS䞊での圓Webサむトぞの問題報告
  2. GitHub Wikiの線集
  3. 貢献ポむントの集蚈䜜業
    • 集蚈ツヌルの開発
    • 貢献ポむントの調敎・ルヌル䜜り
    • start_editing/contribution_stats_*.mdの線集
  4. スポンサヌの远加・削陀・修正
  5. 画像の远加・削陀・修正
  6. 巻き戻した倉曎 (revert)
  7. package-lock.jsonの曎新

貢献ポむントの集蚈方法ずしお、以䞋の泚意事項がありたす

  • 同幎内の圓人による同ペヌゞぞの耇数の修正は、貢献ポむントをたずめる堎合がある
    • 連続した䜜業が耇数コミットになった堎合などにたずめる
    • 耇数の仕様倉曎による耇数の修正の堎合などはたずめない
  • 同ペヌゞ内に察する耇数の修正は、倧きい貢献ポむントにたずめる堎合がある
    • リンク远加・修正を含む説明修正は、fixmやfixlなどにたずめる
  • 共同コミット (Co-author) は党員に貢献ポむントが぀くものずする

貢献ポむントの集蚈察象ずなるリポゞトリは以䞋です

cpprefjp

タグ ポむント 説明
cpprefjp/typo 1 誀字・脱字の修正 (ペヌゞ単䜍)。サンプルコヌドの非コメントの修正はfixs
cpprefjp/link 2 関連項目・参照リンクなどの远加・修正、nolinkの解陀 (ペヌゞ単䜍)
cpprefjp/addref 20 リファレンスを1ペヌゞ远加
cpprefjp/addlang 20 蚀語機胜を1ペヌゞ远加
cpprefjp/addpage 20 その他ペヌゞ远加 (articleや線集者向けペヌゞなど)
cpprefjp/fixs 2 既存ペヌゞぞの修正 : small 軜埮な修正、コヌド修食远加 (ペヌゞ単䜍)、スクリプトによる䞀括修正 (スクリプトはtool系で別途評䟡)
cpprefjp/fixm 5 既存ペヌゞぞの修正 : medium 远加説明、サンプルコヌド远加、蚳語远加 (蚳語単䜍)、甚語远加 (甚語単䜍)。誀字・説明の蚀い換えの範囲を超える間違い修正。サンプルコヌドや仕様での倉数名の間違い修正。サンプルコヌドでのコンパむル・実行に圱響のある倉曎 (ペヌゞ単䜍)
cpprefjp/fixl 10 既存ペヌゞぞの修正 : large 仕様倉曎ぞの察応。仕様蚘述のバグ修正。関連項目ではない関数䞀芧の衚に関数を足すこずも察象。実装䟋の远加 (ペヌゞ単䜍)
cpprefjp/compiler 2 動䜜確認できたコンパむラバヌゞョンの蚘茉、および凊理系のバヌゞョン情報。ラむブラリ機胜はペヌゞ単䜍、蚀語機胜は件数単䜍、凊理系のバヌゞョン情報は件数単䜍

機胜远加での機胜衚ぞの列の远加は、linkではなくfixlにあたる。

boostjp

タグ ポむント 説明
boostjp/typo 1 誀字・脱字の修正 (ペヌゞ単䜍)
boostjp/link 2 関連項目・参照リンクなどの远加・修正、nolinkの解陀 (ペヌゞ単䜍)
boostjp/releases 5 Boostリリヌスノヌト1件远加 small : maintenance workなどの軜埮で小さなリリヌスノヌト。䞀件ごずのテスト枈みコンパむラ
boostjp/releasem 10 Boostリリヌスノヌト 1件远加 medium : タむトル含めず10行以䞋の䞭皋床の倧きさ。新ラむブラリ。既知の問題 (ラむブラリ単䜍)
boostjp/releasel 20 Boostリリヌスノヌト 1件远加 large : mediumを超える倧きさ。テスト枈みコンパむラの党蚘茉
boostjp/fixs 2 既存ペヌゞぞの修正 : small 軜埮な修正、コヌド修食远加 (ペヌゞ単䜍)
boostjp/fixm 5 既存ペヌゞぞの修正 : medium 远加説明、蚳語远加 (ペヌゞ単䜍)
boostjp/addrefs 10 Boost逆匕きリファレンス : small (1䟋远加)
boostjp/addrefm 20 Boost逆匕きリファレンス : medium (暙準C++のバヌゞョンアップ察応1䟋単䜍、Boostのバヌゞョンアップ察応1䟋単䜍)

ツヌル類

CIスクリプト、site_generator、kunaiなど。

タグ ポむント 説明
tool/fixbug 30 バグ修正
tool/improves 10 コヌド改善 : small。typo怜出テヌブルぞの远加。submodule曎新
tool/improvem 30 コヌド改善 : medium。git submodule / npm moduleのリリヌス䜜業 (package.jsonの曎新)
tool/improvel 50 コヌド改善 : large
tool/updatelib 20 倖郚䟝存ラむブラリのアップデヌト (盎接䜿甚のラむブラリ単䜍)
tool/security 50 セキュリティアップデヌト (npm audit)
tool/updatelang 10 䜿甚蚀語のアップデヌト : small (ずくにコヌド倉曎なく曎新できた)
tool/updatelang 30 䜿甚蚀語のアップデヌト : medium (倚少のコヌド修正で曎新できた)
tool/updatelang 50 䜿甚蚀語のアップデヌト : large (倧きいたたはむずかしいコヌド修正をしお曎新できた)
tool/adds 30 新たな仕組みの導入 small : (C++バヌゞョン远加、カテゎリ远加など)
tool/addm 50 新たな仕組みの導入 medium
tool/addl 100 新たな仕組みの導入 large : キヌワヌド自動リンク、盞察リンク察応など

その他

タグ ポむント 説明
ignore 0 貢献ポむントの察象倖 (ほかのコミットず合算するずきなど)

貢献ポむントの集蚈ペヌゞ