質問と回答(Q&A)
コメントの投稿について
投稿フォームにある「形式」とはなんですか?
整形済み(pre)では、これをpreタグで囲って埋め込みます。 この方法では改行やインデントなどが指定したとおりに入りますが、 改行せずに長い行を書くとサイドバーに当たって読めなくなります。
オリジナル記法(original)は、置換ベースのシンプルなオリジナル記法です。 改行が<br/>に、半角スペースが に置換されます。
MarkdownについてはMarkdown - Wikipedia, the free encyclopediaを参照ください。
reStructuredTextに関しては ReStructuredText 入門や はやわかり reStructuredTextをご覧ください。
XXという言語でコードを投稿したいのに言語一覧にありません
特定のバージョンでなければ動かないコードがあります
将来リリースされるバージョン(例えばPython3000)でも そのコードが動くとは限らないので 「Python2.4以降」などという付け方はしないで下さい。
他の言語のユーザに迷惑をかけるので「2.4」といった付け方はしないでください。
ダメなコードが投稿されています
また、すでに解答されているお題でも、 「自分はもっとよい解答がかける」と思うのならば 投稿をためらう必要はありません。 ここは闘技場なのですから、遠慮は無用です。
トピックの投稿について
「トピック」とは何ですか?
トピックは、ブログで言うならエントリー、スレッド式掲示板で言うならばスレッド、
ツリー型掲示板で言うならば「根っこの(返信でない)投稿」に相当するものです。
「トピックの種類」とは何ですか?
トピックは「お題」にすることもしないこともできます。
「お題」として投稿する場合は、一度「出題待ち」状態になり、
適当なタイミングで「お題」として公開されます。
お題は今まで通りトップページで公開されます。
一方、普通のトピックとして投稿した場合は即座に公開されます。
この場合「お題一覧」ではなく「トピック一覧」に載ります
また、「下書き」状態もあります。これはどの一覧にも載りません。
お題でないトピックは何のためにあるのですか?
お題はある程度管理される必要があります。
たとえば1日に4つもお題が出ると明らかに多すぎます。
そのため、一度「出題待ち行列」に溜めて、徐々に出題する必要があります。
また、将来的には質を確保するために投稿者を制限する必要があるかもしれません。
しかし、これらの制限は「お題」にするから必要なのです。
投稿自体はもっと気兼ねなくやって欲しいので、制限のない「トピック」と制限のある「お題」という構造にしました。
トピックはどこから投稿するのですか?
トピックを投稿するにはアカウントを作ってログインする必要があります。
ログインすると左上のあなたの名前が表示されているあたりに「トピックの投稿」
というリンクが出現するはずです。
トピックは誰でも投稿できるのですか?
アカウントを作れば誰でも投稿できます。
誰でも「お題として」投稿できるのですか?
今は誰でもできます。
将来的に何らかの基準で制限されるようになる可能性はあります。
その場合、おそらく「アカウントを作ってから一定期間が経っている」
「そのアカウントで一定数以上の投稿をしている」
「そのアカウントに一定数以上のプラス評価が付いている」
の3つを組み合わせた基準になるのではないかと思います。
もちろん、誰でも投稿できるからといって、
投稿されたものがすべてトップページに掲載されるとは限りません。
明らかにスパムであれば当然削除されますし、
状況によっては別の対処もあるかもしれません。
どんなトピックが「お題として」投稿できるのですか?
今のところ、明確に決まっているルールは二つだけです。
特定の言語での解答に限定してはいけない
「PHPで○○を××する方法を教えてください」的なものは投稿のことです。
特定の言語での解答が困難な問題はこれには含みません。
(PDFの出力をbrainf*ckでやるのは困難…)
すでに日本語のブログなどで盛り上がっている問題をそのまま出題してはいけない
お題の提案にいくつか来ていたのですが、
ブログを書いた本人がどう書くorgで活動しているのに
そのブログのネタをそのまま持ってこられても困ります…。
管理人個人としてはオリジナル志向が強いので
提案に来ていたその手のお題を全部スルーしてきましたが、
最近は英語圏から翻訳した問題や、
似た話題がすでにあってもそのままではなく発展問題になっていれば、
お題としてはアリなのかも…と思いつつあります。
自分一人で出題しているよりも、出題基準の異なる複数人が出題した方が、
お題に幅が出ていいかもしれないと思っています。
ライセンスについて
このサイト上のすべてのコンテンツの著作権者はサイボウズラボですか?
いいえ。必ずしもそうではありません。
このサイトのユーザによって投稿された文章およびコードの著作権者は、
投稿したユーザです。
メダルのアイコン(
)の著作権者はMark Jamesです。
ライセンスはCreative Commons Attribution 2.5です。
顔のアイコン(
)の著作権者はUlisse Perusin, Steven Garrity, Lapo Calamandrei, Ryan Collier,Rodney Dawes, Andreas Nilsson, Tuomas Kuosmanen, Garrett LeSage, Jakub Steiner
です。ライセンスはCreative Commons Attribution-ShareAlike 2.5です。
このアイコン(
)は、
クリエイティブコモンズが著作権者であるロゴを加工したものです。
その他の部分の著作権者はサイボウズラボです。
どうして
クリエイティブコモンズライセンス
を選択したのですか?
独自ライセンスの定義のために労力を割きたくなかったからです。
どうして多くのクリエイティブコモンズライセンスの中から
表示2.1
を選択したのですか?
これがクリエイティブコモンズライセンスの中で
もっともパブリックドメインに近いライセンスとされているからです。
ライセンスの「解釈」とはなんですか?
このサイトの読者が、
このサイトで発見したコードを再利用する際に
ライセンスで悩まずにすむようにするためと、
「もっとパブリックドメインに近いライセンスがいい」
というニーズを満たすために作られた
ガイドラインです。
ご意見があればぜひフィードバックをお寄せ下さい。
まず、クリエイティブコモンズライセンスで
再利用の際に表示せよと書かれている
「原著作者のクレジット」とは、
投稿者が投稿時につかったハンドルネームのこととします。
「合理的な方法でのクレジットの表示せよ」という条件については、
ソースコードとして再利用する場合には
ソースコードの直前またはファイル冒頭に
コメント文でクレジットを記述すれば十分であるとします。
またブログなどへの引用の場合には、
なんらかの形で読者に読めるように
クレジットを記述すれば十分であるとします。
投稿者が匿名アカウントを使って投稿した場合
「クレジットを表示しないでよい」
という意思表示だとします。
←このマークはなんですか?
Anonymous Markを縮めて「アノマーク」と呼んでいます。
ユーザが「自分の投稿を再利用する際には、
クレジット(ハンドルネーム)を表示しなくてもよい」
という意思表示をしていることを示すマークです。
この意思表示はプロフィール編集ページで行うことができます。
一度このマークをつけると、外すことはできませんのでご注意ください。
どうしてパブリックドメインにしないのですか?
日本の著作権法下では著作者人格権の放棄ができません。
そのため、日本では自分の書いたコードをパブリックドメインにすることは
厳密には不可能です。
(参考: パブリックドメインソフトウェアとは 【PDS】 - 意味・解説 : IT用語辞典)
そこで、コードを再利用する際の障害を可能な限り取り除くことで、
「パブリックドメインであるかのように使える」状態にしようと考えました。
現在件のコードがあり、
うち件がクレジットなしで再利用可能です。
どうしてNYSLにしないのですか?
NYSLは、このサイトのライセンスを決定する上で
参考にしたライセンスの一つです。
特にFAQに書かれている:
Q. 著作者人格権を保持するってことは、同一性保持権(勝手に改変しちゃダメと言える権利)は捨てないということだから、自由とは言えないのでは?
A. 同一性保持権というのは、「(著作者の)意に反してこれらの変更、切除その他の改変を受けないものとする」という権利です(著20)。ところが、著作者のの「意」はNYSLに記した通りです。どんな変更を加えても著作者の意には反しません。つまり結局の所、好きなように改変することができるわけです。
はすばらしい洞察だと考えています。
しかしNYSLを使わなかったのは、日本語の文面しか提供されていなかったからです。
ソースコードは世界共通語なので、
将来的にこのサービスが英語やその他の言語に展開する可能性もあります。
その際には、ライセンスも当然翻訳する必要があるのですが、
法的に有効な文章の作成には結構なコストがかかります。
クリエイティブコモンズという何カ国語にも翻訳されているライセンスがあるのに、
あえて日本語の文面しかないライセンスを使う理由がありません。
その他
どうしてお題の投稿は即時公開にしないのですか?
「教えてください」という目的の投稿が増えることを恐れているからです。
このサイトは、
戦闘の初心者に戦い方を教える「教練所」ではなく、
経験者が戦うための「コロシアム」です。
参加者が楽しく戦えるような「フィールド」を
用意することはとても重要だと考えています。
将来的には「すでにいくつかのコードを投稿し、それらの評価の高いユーザ」
に限定してお題の投稿を可能にしようかと思っています。
「どう書くorg」はどう発音するのですか?
作者は「どうかくおるぐ」と読んでいます。
このサイトは何を競うのですか?
コードを書く上で、競う要素はいくつもあると思います。
エレガントさ、コードの短さ、お題が出てから解答するまでの時間、
コードの実行時間、実用性、いかれ具合、などなど。
どれを競ってもいいと思います。
コードの長さで勝者を決めることは難しくないのですが、
現実にはコードの長さだけがコードのよしあしを決めるのではありません。
価値観が多様であることこそが重要なので、
なるべく一つの価値観に染めてしまわないようにしたいと思っています。
「一番乗り」とはなんですか?
お題に対して1番最初に解答した人を指します。
真の一番乗りはお題1個につき1人ですが、
一般的な一番乗りはお題1個につき、各言語1人です。
一番乗りが多いほど、後述の「カバレッジ」への貢献度も高いということになります。
真の一番乗りは
、一般の一番乗りは
という表示になっています。このアイコンの作者はMark Jamesです。
自分で投稿したお題に対する返信は「真の一番乗り」の対象になりません。
多言語度とは何ですか?
そのユーザがどれくらい多様な言語を使っているかの尺度です。
計算式はエントロピーの式と同じになっています。底はeです。
(エントロピー - Wikipedia)
大まかに言って、3種類の言語を均等に使うと1くらい、
9種類を均等に使うと2くらいになります。
参考文献:
マルチリンガルの時代([結] 2006年3月 - 結城浩の日記)
総論 複数のプログラミング言語を学ぶ意義:ITpro
「カバレッジ」とはなんですか?
ある特定の言語のユーザが、
お題の何%に答えているのかを表す数値です。
全てのお題に解答すると100%になります。
名前の横に表示されているメダルはどういう条件で付くのですか?
評価したコードの件数が平均より多いユーザにつけています。
この条件は予告なく変更されます。
どれくらいよければ評価をつけてよいのですか?
少しでもよいと思ったらつけて構いません。
また、後から何度でも変更できます。
評価の集計結果は「(合計)/(投票数)=(それの小数表示)」という表示になっています。
票が割れずにプラスばかりが集まれば1.0、マイナスばかりなら-1.0、
意見が割れるとその間の数値になります。
0の投票はカウントに入りません。
15人が評価をして、全員がマイナス評価をつけると評価欄が真っ赤に、
全員がプラス評価をつけると評価欄が真緑になるようになっていますが、
まだ真っ赤や真緑になったコメントはないようです。
キー操作?
jで「次のコメントへ移動」、kで「前のコメントへ移動」、
s/d/fまたはu/i/oでそれぞれ評価の「-」「0」「+」です。
漢字変換がONになっていると動きません。
未読かどうかはどうやって判定していますか?
未読か既読かの判定は、評価をつけたかどうかで決まっています。
0の評価でも既読と判定されるようになるので構いません。
コードを修正・削除できるようになりませんか?
「他の人が投稿の内容について返信や評価をした後で、
その内容を変更できるのはよくない」
と考えて修正機能をつけていません。
「誰も返信や評価をしていない投稿は撤回(削除)できる」
という機能を盛り込もうかと考えたのですが、
「Aさんが投稿」「Bさんがそれに返信を書き始める」
「Aさんが投稿を削除」「Bさんが投稿ボタンを押す」
というケースに問題が起きると気がつきました。
いい解決方法があればフィードバックしていただけると幸いです。
「トラックバックによる投稿」機能はどうなった?
フィードバック(投稿)方法にあった
「トラックバックによる投稿(未実装)」
計画からも消えてしまったのでしょうか。残念。
ユーザのみなさんの中にはブログをお持ちの方も多いと思うので、
トラックバックで投稿ができると便利かな、と考えていました。
しかし、詳細を詰めるにつれていくつかの問題が明らかになりました。
1:「投稿からどうやってコード部分と本文部分を切り分けるのか」
ひとつのブログエントリーには複数のコードが含まれたり、
コードの上や下に説明の文章が含まれたりするケースが多いです。
そのエントリーからどの部分を切り出してdoukaku.orgへの投稿と
みなせばいいのか、言語やタグをどうやって指定するのか、
という難しい問題があります。
2:「どうやってユーザを認証するのか」
「どうやってユーザがライセンスに同意していることを確認するのか」
トラックバックはブログの側が送ってくるものなので、
そこにdoukaku.orgのアカウント情報などを含めることができません。
また、「以下のライセンスに同意しますか」などの画面を挟むことができないので、
「ライセンスに同意したつもりはなかった」とごねる人が出ないとも限りません。
トラックバックによる投稿は技術的な問題の他にも
そういう運営上の問題があることに気がつきました。
3:「トラックバックを受け付けるようにするとトラックバックスパムがくるのでは?」
というご指摘も頂きました。
確かにあり得ると思います。
かなり悩んだのですが、
トラックバックで投稿できることによるメリットよりも、
デメリットのほうが大きいように思えるので、
実装しないことに決めました。
代案として、コメント投稿欄に
URLとタイトルを入力する欄を設けようかと思っています。
お題更新のタイミングを教えて欲しい。
それは秘密です。
「次のお題は何時何分に公開されます」というアナウンスをすると、
そのタイミングに一斉に人が集中することになります。
そうすると必然的に「一番乗りを取りたい!」と焦ってコーディングをする人が増え、
ケアレスミスの発生頻度が上がることになるかと思います。
このサイトは、プログラマのためのコロシアムであるだけではなく、
過去の戦いを後から見ることのできる場所です。
盛り上がりも大切ですが、
後から見てどれくらい楽しめるかも大切です。
お題の出るタイミングがわかって「よーいどん」の勝負になると、
CやJavaにくらべてスクリプト言語が有利になってしまいますよね。
それは面白くないかな、と思います。
お題更新のタイミングについて。
タイミングが固定化されると、
特定の生活リズムの人だけ「一番乗り」を取りやすくなってしまいます。
なので、基本的にランダムなタイミングで出題するようなシステムになっています。
「トピック」とは何ですか?
「トピックの種類」とは何ですか?
一方、普通のトピックとして投稿した場合は即座に公開されます。 この場合「お題一覧」ではなく「トピック一覧」に載ります
また、「下書き」状態もあります。これはどの一覧にも載りません。
お題でないトピックは何のためにあるのですか?
トピックはどこから投稿するのですか?
トピックは誰でも投稿できるのですか?
誰でも「お題として」投稿できるのですか?
将来的に何らかの基準で制限されるようになる可能性はあります。 その場合、おそらく「アカウントを作ってから一定期間が経っている」 「そのアカウントで一定数以上の投稿をしている」 「そのアカウントに一定数以上のプラス評価が付いている」 の3つを組み合わせた基準になるのではないかと思います。
もちろん、誰でも投稿できるからといって、 投稿されたものがすべてトップページに掲載されるとは限りません。 明らかにスパムであれば当然削除されますし、 状況によっては別の対処もあるかもしれません。
どんなトピックが「お題として」投稿できるのですか?
特定の言語での解答に限定してはいけない
すでに日本語のブログなどで盛り上がっている問題をそのまま出題してはいけない
管理人個人としてはオリジナル志向が強いので 提案に来ていたその手のお題を全部スルーしてきましたが、 最近は英語圏から翻訳した問題や、 似た話題がすでにあってもそのままではなく発展問題になっていれば、 お題としてはアリなのかも…と思いつつあります。
自分一人で出題しているよりも、出題基準の異なる複数人が出題した方が、 お題に幅が出ていいかもしれないと思っています。
このサイト上のすべてのコンテンツの著作権者はサイボウズラボですか?
このサイトのユーザによって投稿された文章およびコードの著作権者は、 投稿したユーザです。
メダルのアイコン(
)の著作権者はMark Jamesです。
ライセンスはCreative Commons Attribution 2.5です。
顔のアイコン(
)の著作権者はUlisse Perusin, Steven Garrity, Lapo Calamandrei, Ryan Collier,Rodney Dawes, Andreas Nilsson, Tuomas Kuosmanen, Garrett LeSage, Jakub Steiner
です。ライセンスはCreative Commons Attribution-ShareAlike 2.5です。
このアイコン(
)は、
クリエイティブコモンズが著作権者であるロゴを加工したものです。
その他の部分の著作権者はサイボウズラボです。
どうして クリエイティブコモンズライセンス を選択したのですか?
どうして多くのクリエイティブコモンズライセンスの中から 表示2.1 を選択したのですか?
ライセンスの「解釈」とはなんですか?
まず、クリエイティブコモンズライセンスで 再利用の際に表示せよと書かれている 「原著作者のクレジット」とは、 投稿者が投稿時につかったハンドルネームのこととします。
「合理的な方法でのクレジットの表示せよ」という条件については、 ソースコードとして再利用する場合には ソースコードの直前またはファイル冒頭に コメント文でクレジットを記述すれば十分であるとします。
またブログなどへの引用の場合には、 なんらかの形で読者に読めるように クレジットを記述すれば十分であるとします。
投稿者が匿名アカウントを使って投稿した場合 「クレジットを表示しないでよい」 という意思表示だとします。
←このマークはなんですか?
この意思表示はプロフィール編集ページで行うことができます。 一度このマークをつけると、外すことはできませんのでご注意ください。
どうしてパブリックドメインにしないのですか?
そこで、コードを再利用する際の障害を可能な限り取り除くことで、 「パブリックドメインであるかのように使える」状態にしようと考えました。
現在件のコードがあり、 うち件がクレジットなしで再利用可能です。
どうしてNYSLにしないのですか?
はすばらしい洞察だと考えています。Q. 著作者人格権を保持するってことは、同一性保持権(勝手に改変しちゃダメと言える権利)は捨てないということだから、自由とは言えないのでは?
A. 同一性保持権というのは、「(著作者の)意に反してこれらの変更、切除その他の改変を受けないものとする」という権利です(著20)。ところが、著作者のの「意」はNYSLに記した通りです。どんな変更を加えても著作者の意には反しません。つまり結局の所、好きなように改変することができるわけです。
しかしNYSLを使わなかったのは、日本語の文面しか提供されていなかったからです。 ソースコードは世界共通語なので、 将来的にこのサービスが英語やその他の言語に展開する可能性もあります。 その際には、ライセンスも当然翻訳する必要があるのですが、 法的に有効な文章の作成には結構なコストがかかります。 クリエイティブコモンズという何カ国語にも翻訳されているライセンスがあるのに、 あえて日本語の文面しかないライセンスを使う理由がありません。
どうしてお題の投稿は即時公開にしないのですか?
将来的には「すでにいくつかのコードを投稿し、それらの評価の高いユーザ」 に限定してお題の投稿を可能にしようかと思っています。
「どう書くorg」はどう発音するのですか?
このサイトは何を競うのですか?
コードの長さで勝者を決めることは難しくないのですが、 現実にはコードの長さだけがコードのよしあしを決めるのではありません。 価値観が多様であることこそが重要なので、 なるべく一つの価値観に染めてしまわないようにしたいと思っています。
「一番乗り」とはなんですか?
一番乗りが多いほど、後述の「カバレッジ」への貢献度も高いということになります。
真の一番乗りは
、一般の一番乗りは
という表示になっています。このアイコンの作者はMark Jamesです。
自分で投稿したお題に対する返信は「真の一番乗り」の対象になりません。
多言語度とは何ですか?
参考文献:
マルチリンガルの時代([結] 2006年3月 - 結城浩の日記)
総論 複数のプログラミング言語を学ぶ意義:ITpro
「カバレッジ」とはなんですか?
名前の横に表示されているメダルはどういう条件で付くのですか?
この条件は予告なく変更されます。
どれくらいよければ評価をつけてよいのですか?
評価の集計結果は「(合計)/(投票数)=(それの小数表示)」という表示になっています。 票が割れずにプラスばかりが集まれば1.0、マイナスばかりなら-1.0、 意見が割れるとその間の数値になります。 0の投票はカウントに入りません。
15人が評価をして、全員がマイナス評価をつけると評価欄が真っ赤に、 全員がプラス評価をつけると評価欄が真緑になるようになっていますが、 まだ真っ赤や真緑になったコメントはないようです。
キー操作?
未読かどうかはどうやって判定していますか?
コードを修正・削除できるようになりませんか?
「誰も返信や評価をしていない投稿は撤回(削除)できる」 という機能を盛り込もうかと考えたのですが、 「Aさんが投稿」「Bさんがそれに返信を書き始める」 「Aさんが投稿を削除」「Bさんが投稿ボタンを押す」 というケースに問題が起きると気がつきました。
いい解決方法があればフィードバックしていただけると幸いです。
「トラックバックによる投稿」機能はどうなった?
フィードバック(投稿)方法にあったユーザのみなさんの中にはブログをお持ちの方も多いと思うので、 トラックバックで投稿ができると便利かな、と考えていました。 しかし、詳細を詰めるにつれていくつかの問題が明らかになりました。
「トラックバックによる投稿(未実装)」
計画からも消えてしまったのでしょうか。残念。
1:「投稿からどうやってコード部分と本文部分を切り分けるのか」 ひとつのブログエントリーには複数のコードが含まれたり、 コードの上や下に説明の文章が含まれたりするケースが多いです。 そのエントリーからどの部分を切り出してdoukaku.orgへの投稿と みなせばいいのか、言語やタグをどうやって指定するのか、 という難しい問題があります。
2:「どうやってユーザを認証するのか」 「どうやってユーザがライセンスに同意していることを確認するのか」 トラックバックはブログの側が送ってくるものなので、 そこにdoukaku.orgのアカウント情報などを含めることができません。 また、「以下のライセンスに同意しますか」などの画面を挟むことができないので、 「ライセンスに同意したつもりはなかった」とごねる人が出ないとも限りません。 トラックバックによる投稿は技術的な問題の他にも そういう運営上の問題があることに気がつきました。
3:「トラックバックを受け付けるようにするとトラックバックスパムがくるのでは?」 というご指摘も頂きました。 確かにあり得ると思います。
かなり悩んだのですが、 トラックバックで投稿できることによるメリットよりも、 デメリットのほうが大きいように思えるので、 実装しないことに決めました。
代案として、コメント投稿欄に URLとタイトルを入力する欄を設けようかと思っています。
お題更新のタイミングを教えて欲しい。
「次のお題は何時何分に公開されます」というアナウンスをすると、 そのタイミングに一斉に人が集中することになります。 そうすると必然的に「一番乗りを取りたい!」と焦ってコーディングをする人が増え、 ケアレスミスの発生頻度が上がることになるかと思います。
このサイトは、プログラマのためのコロシアムであるだけではなく、 過去の戦いを後から見ることのできる場所です。 盛り上がりも大切ですが、 後から見てどれくらい楽しめるかも大切です。 お題の出るタイミングがわかって「よーいどん」の勝負になると、 CやJavaにくらべてスクリプト言語が有利になってしまいますよね。 それは面白くないかな、と思います。
お題更新のタイミングについて。 タイミングが固定化されると、 特定の生活リズムの人だけ「一番乗り」を取りやすくなってしまいます。 なので、基本的にランダムなタイミングで出題するようなシステムになっています。
