- Published on
海外のプログラミング質問サイトまとめてみた
- Authors
- Name
- Shou Arisaka / 有坂翔
海外の英語でのプログラミングの質問に使えるサイトをまとめましたので紹介します。 以下では、最も代表的なスタックオーバーフロー(stackoverflow; SO)とスタックエクスチェンジ、一般フォーラムサイトのReddit、質問サイトのQuora、プログラミングフォーラムのCodeProject、有料での質問やメンタープラットフォームのcodementorについて紹介していきます。
例えば、stackoverflowとstackexchangeの違いをご存知でしょうか。stackoverflowはstackexchangeのサービスのうちの一つです。 ubuntuやるひとなら見たことくらいはあるであろう、askubuntuも、stackexchangeのグループに属します。
とはいってもジャンルは違うしサイトも違うので、stackexchangeだけ、という説明にもいきませんので、stackexchangeの各サービスは別々のモノして扱います。
stackoverflow
http://stackoverflow.comおなじみですね。 プログラミングといえばスタックオーバーフローです。 垢バンされやすいのが玉に瑕。
stackexchange
参考: All Sites - Stack ExchangeBitcoin Stack Exchangeビットコインやブロックチェーンの質問。 サイト規模は小さめ。
Mathematics Stack Exchange数学に関する質問。ディープラーニングなんかやってる人は使えるかもしれません。あとRとか統計方面とか。 サイト規模は大きめ。
Web Applications Stack Exchangeウェブアプリケーションに関する質問。 Railsとか多いのかなーって思って覗いてみましたが、全然ありませんでしたorz stackoverflowのほうがいいっぽいですね。 サイト規模は小さめ。
WordPress Development Stack Exchangewordpress専門質問サイト。 サイト規模は小さめ。
Super Userハード系の質問や、エクセルなどのミドルウェア、windows,mac,ubuntuなどOSに関する全般的な質問があります。 サイト規模は大きめ。
English Language & Usage Stack Exchangeこちらはプログラミングとは関係ありませんが一応紹介。 英語の使い方などの質問ですね。decideとdetermineの違いはなんですか、みたいなのがあったきがします。エラーなどの問題解決の際やgoogleに必要になる英語とは別に、プログラミング特有の変数やファイルの命名などで参考になることもあるかもしれません。 サイト規模は大きめ。
Spanish Language Stack Exchangeこちらはプログラミング関係ないですが一応。(私の趣味です) スペイン語の質問。 サイト規模は小さめ。
ちなみに言語系だったら、redditやquoraでもいいですが、hinativeの質問フォーラムとかwordreferenceのフォーラムとかが使えると思います。SEでの質問はなんだかんだでシステム、コーディングが関係してる要素のある言語系の質問が多い傾向のある気がしますね。
Ask UbuntuLinuxのUbuntuディストリビューションに関する質問。unixのスタックエクスチェンジと同様、コマンドライン関連の質問も多い。 サイト規模は大きめ。
codementor
codementor15分15ドル(1500円ほど)程度から1:1、マンツーマンのプログラミングヘルプを求めることができるサイト。 例えばテキストチャットなりボイスチャットなりリモートデスクトップなりでサポートが受けられます。
英語力とお金が必要ですが、本当に困った時には使えそうです。
Railsなど複雑なプロジェクトを制作している際に、そのRailsのコードを部分部分で見せながらエラーを解決していきます。
例えば自分のメインプロジェクトのソースコードをgithubにのせて、stackoverflowなんかでこれのどこが間違ってるか教えてくれ、と訊くなんて無理ですよね。 ビジネスに関わるソースコードなり、プライバシーに関わるソースコードだったり、どちらにせよ大事なソースコードをオープンにシェアするのは明らかに良くないです。それにスタックオーバーフローに投稿された質問、回答、コンテンツは自動的にクリエイティブ・コモンズ・ライセンスになりますので(CC BY-SA 3.0)、なおさら企業秘密的なコードは載せられません。 そしてまず、それに答えてくれる人も少ないかと思います。
こういうサイトは日本にはないですからね。 あるいは、タイムチケットみたいなサービスもありますが、こちらはプログラミング専門ってわけじゃないので、本当に簡単な質問しかできない傾向にあるかと思います。、例えば、wordpressサイトの作り方を教えて下さい、のような。
やはり英語がいけるなら、英語で勝負したほうが圧倒的にいいかとは思います。
CodeProject
Quick Answers - CodeProject質問サイトというよりフォーラムサイトという感じのところ。 質問サイトとしても一応機能しているけどちょっと少ないかなぁ。
ユーザー数でいえばstackoverflowより上。
Quoraなどの質問サイト
Quorayahoo知恵袋みたいなサイトです。yahoo知恵袋に負けないくらいどうでもいい質問やアホな質問があります。一方で真面目な質問、回答、学術的なものも多くありますので、投稿するカテゴリや文章の質に気をつければそれなりの回答が見込めるかと思います。
ただし回答率は低めだと思ってください。
Redditなどのフォーラムサイト
redditは海外のフォーラムサイトです。国内ではよく海外版の2ちゃんねる(2ch)などと喩えられますが、個人的には2chよりもyahoo知恵袋の上位互換みたいなサイトに思います。とりあえず英語を話すネチズン(ネット民)なら98%の人が知ってるか使ったことのあるような規模のサイトです。ちなみにredditはオープンソースで公開されており…と、残念ながらこれは少し昔の話ですね。redditの原型ならどこかでソースコードが公開されているのではないでしょうか。
redditにはサブレディットと呼ばれるサブカテゴリが星の数ほど存在し、プログラミングの質問系のサブレディットもそれなりにあります。
例えば以下はJavaScript全般系
Learn Javascript以下はプログラミング全般系
AskProgrammingサブレディットによっては新規ユーザーやユーザーのスコア(カルマ)の低いユーザーの投稿をフィルタしているところもあるので注意しておくといいかと思います。
回答率はquoraより高めだけどスタックオーバーフローよりは低め、という感じです。 ただ使い分けとして、スタックオーバーフローはお固めの質問、クオリティのそれなりの質問が要求される傾向がありますが、redditはアホみたいな質問や疑問でもダウンボート、低評価はあまりされずに答えてもらえる傾向にあります。
質問したい質問がわからない、何がわからないのかわからない、自分の質問のクオリティに自信が持てない、などのケースにはおすすめです。
まとめ
私的なプログラミングの問題解決ワークフローを紹介すると、以下のようになります。- エラーや問題をgoogleで調べる。redditやSOなどを読む
- 自分の環境を見直す
例えばWindowsでなくLinuxでやってみる、pythonのバージョンを変えてみる、WSLやVirtualboxでなく実機でやってみる、dockerで0から環境構築して問題を切り分けしてみる、など
周りの大勢がやっているであろう"前提"の環境を想像し、その上でやり直してみると案外問題の原因が見えたりします。
- スタックオーバーフローやSE(スタックエクスチェンジ)で質問する
問題をまとめたり説明を記述するのは時間のかかる作業です。この段階に移る前に、ステップ2と1をある程度やっておきます。
だいたいの問題はこの時点で解決されるはずです。
- Githubにissueをオープンする
スタックオーバーフローできちんとした質問をしたのにも関わらず回答が来ない、回答は来たが回答してくれた人も解決がわからない、といったケースの場合、それはむしろその環境、言語、フレームワーク、ライブラリ、プラグインのバグである可能性があります。
Githubがある場合はバグ報告、issue、イシューの投稿を検討すると良いです。
あるいはGithubがない場合は、それなりに大きいプロジェクトであれば何かフォーラムなりあると思うので、そこのバグ報告カテゴリなどがないか探し、そこに投稿するようなことを検討します。
- redditやquoraに質問する
Githubにissueをオープンした時点で回答を待機してもいいですが、この段階になるとかなり問題解決が難しい段階、回答が来ることも見込みづらい、あるいは5/5の段階なので、githubへの投稿と同時にスタックオーバーフローに投稿したのと同じような内容の質問を適時多少編集を加えてredditやquoraにクロスポスティング、マルチポストします。
ダメ元、というやつですが、案外回答が役に立ってくれることもあるので、あまり追加コストもかからないのでやると良いです。
- お金を払って解決する
他のプログラマーに問題解決の助力を仰ぎます。代表例では、上記で紹介したcodementorです。 場合によって20ドルか100ドル、あるいは数百ドルくらいはコストがかかりますが、どうしても解決したい問題であればその価値はあるはずです。
あるいは、自分であと10時間頑張っても解決できそうか不安なら、10時間を無駄にするよりも3万円(例えば時間あたり3000円単位として)を出してヘルプを求めるのも良いアイデアだと捉えることもできます。
- 諦める
これでだめなら… 一度やめましょう。
冗談ではなく、一度問題を忘れて離れることは、実際に一つの非常に有効な解決法の一つです。 確率的に言えば、非常にまれな確率で、しかし確実に、どうしても解決できない、ほぼ不可能である問題というのは、プログラミングを続けていればいずれ出くわしてしまうものです。
こういうたぐいに出会ったら、無視して一度忘れるのが吉です。そのときに闇雲に絶対的に解決を図ろうとするのは、時間効率が悪すぎます。(メンタルヘルスにも悪いです)
3ヶ月後、あるいは1年後など、もう一度問題に出会い、あるいはふと思い出し、少し頭を使って考えてみたら、あるいはGoogle検索しただけで、あっけなく苦労していた問題が解決できてしまうことは多々あります。
参考にどうぞ。