ゲームなんでも屋&プログラミングなんでも屋

ゲーム情報やプログラミングに関してのブログ

ゲーム年間売上ランキング2020

データ元はファミ通です

2020年のゲーム売上が判明し次第更新していきたいと思います。

 

 2019年のゲーム売上ランキングはこちらから

https://koro-game-programming.hatenablog.com/entry/2019/12/14/160934

 

最新の週間ゲーム売上ランキングはこちらから

https://koro-game-programming.hatenablog.com/entry/2020/01/08/224149

週間ゲーム売上ランキング 先週分(12/23~12/29) トップ10全てスイッチソフト!

2019年最後の週は1~10位全てがスイッチのソフトでした。30位まで見てもスイッチソフトが26個とスイッチの人気がうかがえた週でした。新作でトップ10入りしたのはスイッチの脳トレ。DSでは大ブレークしてミリオン売れていたが、今の時代ではどこまで伸びるのか注目です。1位は相変わらずポケモン!来週には300万本突破しそうです。また2位のルイージマンション3はハーフミリオン突破となりました。3位のリングフィットアドベンチャーも50万本突破は確実となりました。

 

前週(12/16~12/22)の売上

https://koro-game-programming.hatenablog.com/entry/2019/12/26/214713

2019年ゲーム年間売上(2019/12/31~2019/12/22)

https://koro-game-programming.hatenablog.com/entry/2019/12/14/160934

 

ハード売上

Switch/14万1227台(累計 1033万8048台)

Switch Lite/93041台(累計 104万5383台)

PS4/59123台(累計 735万3273台)

PS4 Pro/22226台(累計 139万4970台)

Xbox One X/195台(累計 18642台)

Xbox One S/102台(累計 92604台)

New 2DS LL(2DS含む)/2875台(累計 169万122台)

New 3DS LL/170台(累計 588万5915台)

PS Vita/53台(累計 586万3016台)

 

 ソフト売上

順位

ゲームタイトル

今週の売上

累計売上

機種

消化率

販売元

1位

ポケットモンスター ソード・シールド

243,476本

2,988,134本

Switch

80%

ポケモン

2位

ルイージマンション3

59,349本

505,998本

Switch

60%

任天堂

3位

リングフィット アドベンチャー

52,521本

495,639本

Switch

80%

任天堂

4位

Minecraft

40,905本

1,145,939本

Switch

80%

日本マイクロソフト

5位

マリオカート8 デラックス

40,883本

2,659,009本

Switch

80%

任天堂

6位

マリオ&ソニック AT 東京2020オリンピックTM

40,866本

195,128本

Switch

60%

セガゲームス

7位

大乱闘スマッシュブラザーズ SPECIAL

35,385本

3,453,052本

Switch

80%

任天堂

8位

東北大学加齢医学研究所 川島隆太教授監修 脳を鍛える大人のNintendo Switchレーニン

34,696本

34,696本

Switch

20%

任天堂

9位

スーパー マリオパーティ

34,649本

1,263,710本

Switch

80%

任天堂

10位

釣りスピリッツ Nintendo Switchバージョン

33,623本

336,995本

Switch

80%

バンダイナムコエンターテインメント

11位

スーパーマリオメーカー2

26,402本

800,504本

Switch

80%

任天堂

12位

スプラトゥーン2

21,094本

3,252,760本

Switch

80%

任天堂

13位

ディズニー ツムツム フェスティバル

17,473本

125,498本

Switch

60%

バンダイナムコエンターテインメント

14位

妖怪ウォッチ4++(ぷらぷら)

12,331本

46,896本

Switch

60%

レベルファイブ

15位

New スーパーマリオブラザーズ U デラックス

12,152本

747,589本

Switch

80%

任天堂

16位

ゼルダの伝説 ブレス オブ ザ ワイルド

11,170本

1,481,349本

Switch

80%

任天堂

17位

太鼓の達人 Nintendo Switchば〜じょん!

10,738本

420,582本

Switch

80%

バンダイナムコエンターテインメント

18位

実況パワフルプロ野球

8,375本

210,259本

Switch

80%

KONAMI

19位

スーパーマリオ オデッセイ

7,632本

2,047,546本

Switch

80%

任天堂

20位

無双OROCHI3 Ultimate

7,382本

25,768本

PS4

40%

コーエーテクモゲームス

21位

サクラ大戦

7,380本

161,288本

PS4

80%

セガゲームス

22位

ドラゴンクエストXI 過ぎ去りし時を求めて S

7,273本

463,699本

Switch

80%

スクウェア・エニックス

23位

フォートナイト ダークファイアバンドル

6,179本

41,089本

Switch

80%

ワーナー ブラザース ジャパン

24位

FIFA 20 Legacy Edition

5,838本

43,956本

Switch

60%

エレクトロニック・アーツ

25位

星のカービィ スターアライズ

5,835本

783,874本

Switch

80%

任天堂

26位

映画すみっコぐらし とびだす絵本とひみつのコ ゲームであそぼう! 絵本の世界

5,697本

32,049本

Switch

60%

日本コロムビア

27位

東京2020オリンピック The Official Video GameTM

5,670本

81,491本

Switch

80%

セガゲームス

28位

モンスターハンターワールド:アイスボーン マスターエディション

5,560本

417,462本

PS4

80%

カプコン

29位

DEATH STRANDING(デス・ストランディング

5,231本

262,827本

PS4

80%

ソニー・インタラクティブエンタテインメント

30位

ゼルダの伝説 夢をみる島

5,208本

250,947本

Switch

80%

任天堂

環境構築のコツ スムーズに環境構築を行うために

 プログラミングの勉強をしようと思って、本を買ってきて環境構築をしようとしたら、本に書いてある通りにやってるのになんかエラーが出てくる。あるいは、ネットで調べた記事通りに環境構築をしていたら、エラーが出てくる。みなさん今までにこんな経験はありませんか?僕は今までこういったことが何回もありました。そして1年くらい前までなんとなく適当にエラー文をgoogleの検索に打ち込んで上から順番に見ていってエラーがなくなるまで調べ続けるということをしていました。おそらくこの方法でもネットに正しい記事があればいずれは解決すると思います。しかしこれってすごく疲れますよね?初心者は訳もわからないエラーと永遠に戦うことになり、時にはそこで諦めてしまうこともあります。今回は少しでも環境構築をスムーズにするためのコツを初めてプログラミングするような人にもわかりやすく書きたいと思います。

 

・そもそもなぜ環境構築でエラーが出るのか

 本やネットに書いてある通りにやっているのにエラーが出る。これは何も本やネットの記事を書いている人がみんなを困らせようと思って、嘘を書いているわけではありません(もしかしたらそういういじわるな人もいるかも)。じゃあなぜエラーが出るのかというと、多くのソフトウェアやライブラリーは少しずつ改良されているからです。この改良というのが厄介で改良されるのは確かにいいことなのですが、古いバージョンにあったよくない仕様等は消されていってしまうことがよくあるんです。その結果古いバージョンでうまく動いていたものでも、新しいソフトウェアやライブラリーでは動かないということが起きます。

 

・環境構築をスムーズに行うために意識すべきこと

①ソフトウェアやライブラリーのバージョンを意識する

②自分が読んでいる本や記事がいつ書かれたものかを意識する

③すでに自分のパソコン上に作られた環境を意識する

 

 初心者の方々だとそもそも、バージョンがいくつもあることや、バージョンが違うと互換性がないということに気づいていない人が多いかなと思います。僕も独学でやっていたので最初しっかりバージョンというものを意識できておらず、環境構築で戸惑っていました。この二つを意識しておけば闇雲に検索してエラーが出続ける、環境構築の闇にハマることも少なくなると思います。

 

・ケース別の対処法

①そもそも環境構築でエラーを出さないようにする方法

・ネットの記事を読む場合

 この場合、記事が書かれた日付を意識します。そして何かプログラムをパクってくる時はなるべく新しいものからパクってきます。もしくは古いバージョンからパクってくる場合でもしっかり記事にバージョンが書かれているものからパクってくる(ネットの記事って結構適当で動くことを確認した環境をしっかり書いてくれている記事が少ないです)。ちなみにパクってきたプログラムをそのまま使うだけならこれでエラーは出ませんが、多くの人はパクってきたプログラムを自分なりに改良していくと思うので、そういう時エラーが出ないためにも新しめの記事からパクってくる方が、少なくとも初めのうちはおすすめです(自分の環境は新しめのバージョンであることを想定)。

 

・本を買う場合

 本を買う時意識すべきなのは発行年数です。発行年数が新しければ新しいほど、本に書かれた通りやるだけで、うまくいく場合が多いです。初めのうちって本に書いてある結果と自分の結果が少しでも違ったりすると自分のやってることあっているかな?とか不安になるものですし、本と同じ環境でやることは大切だと思います。ただし本の場合、ネットの記事と違ってソフトウェア等のバージョンがしっかり書いてあるので、そのバージョンを指定してやればそんなに困ることはないかもしれません。ただ本も不親切な場合があって、文章ではバージョンを書いてあるのに、コードではバージョンを指定していない(この場合普通は最新バージョンがダウンロードされる)場合があります。ある程度プログラミングをやっている人であれば、自分でバージョン指定しなきゃって意識できますが、初心者の方、ましてや初めてプログラミングする方はそんなこと意識できるはずもありません。そして書かれたコードを打ち込んだら、最新のバージョンがインストールされて、挙動が本と異なることがあります。だから初心者の方でとりあえず本を買うなら新しい本買った方がいいかなと思います。プログラミングは面白いと感じるのに、環境構築でつまらないと感じて諦めてしまったらもったいないです。それに基本的にはバージョンアップは改良なので、どうせなら最新バージョンを学んでおいた方が、本の内容を理解した後自分で何か作る時に、その環境のまま最新のものを動かせて便利だと思います。

 

②環境構築でエラーが出てきたときの対処法

 ①では最新のものを見ることでエラーをそもそも出さないようにするといいという説明をしてきましたが、当然記事や本しかない事やあえて古いバージョンのものを動かしたい場合もあると思います。そこで②ではエラーが出てきた時にエラーを解消していくコツを説明したいと思います。まず一番簡単な方法は詳しい人に聞くということです。しかし多くの人は周りにそのような人がおらず、ネットでエラーについて調べると思います。そこで今回はネットでエラーを検索するときのコツを紹介します。

・まずは自分の動かしたいプログラムに必要なバージョンを意識する。

 これがわかればそのバージョンをインストールするだけで解決するので早いです。

 

・記事の書かれた時期を意識する(使うべきバージョンがわからない場合)

 使うべきバージョンがわからないなんてことは、記事をあげている人が親切であれば、起きることもないですしあって欲しくはないのですが、こういう場合も多々あると思います。こういう時はまず記事が書かれた時期を意識しましょう。まず絶対に言えることは記事を書かれた時期よりも未来のバージョンに対応しているという保証は絶対にない。ここで保証がないといっているのは、バージョンが違っていてももちろんそのまま動くことはあるので、動かないと決まっているわけではないからです。では実装したいプログラム等が書いてある記事が書かれた時期と同じくらいの時期に書かれた記事を読めばいいのかというとそれも違います。なぜならその記事が書かれた時期にはまだそのエラーで困っている人はいないからです。バージョンが切り替わって今まで使えていたものにエラーが出るようになった時期に初めてそのエラーへの対処法が書かれた記事が書かれます。そこでそのエラーが出るようになったバージョンへ切り替わったタイミングを意識して、それを調べていくようにしましょう。

 

・正しい対処法が書かれているにもかかわらずうまくいかない場合

 これが一番厄介な場合です。こんなことはありえるのかということなんですが、残念ながらあり得ます。どういう時に起きるかというと、例えば間違ったバージョンをインストールした後、アンインストールしたつもりでもパス(どのプログラムを参照したらいいかを指定するよなもの)にその情報が残っている場合などです。こうなってくると非常に厄介で、正しい対処法を実行してもうまくいかなくなることがあります。しかも厄介なのは正しいかどうかというのは環境構築している時にはわからないということです。この場合は意識すべきこと③に書いた「すでに自分のパソコン上に作られた環境を意識する」というのを思い出して、一旦落ち着いて自分の環境にインストールされているもの、設定されているパスの中で関係ありそうなものを、整理しましょう(こんなこと言ってますが、おそらく初心者には無理)。まあこの段階はもう環境構築の闇にハマってしまっているので、頑張るしかないですね。この闇に陥らないための一つの方法として仮想環境というものがあります。仮想の環境を作ることで、その仮想の環境外に影響を与えることなく環境構築を行えます。このあたりは話だしたらキリがないので、ネットで「仮装環境」と検索してみてください(気が向いたらいつか記事書くかも)。

 

最後に繰り返しとなりますが大切なことは

①ソフトウェアやライブラリーのバージョンを意識する

②自分が読んでいる本や記事がいつ書かれたものかを意識する

③すでに自分のパソコン上に作られた環境を意識する

です。環境構築を突破して楽しくプログラミングしていきましょう。

プログラミング勉強法(独学で初心者から中級者へ)

自分の経験を元にプログラミングを何もできない人が独学である程度プログラミングができるようになるまでの勉強法を説明していきたいと思います。僕のプログラミング経験としてはウェブアプリ制作、画像処理、音声処理、機械学習、ウェブスクレイピング、簡単なゲーム制作などがあります。3日前にはandroid studioスマホアプリを作ろうと思いandroid studioの勉強を始めました。

ただプログラミング経験は2年ほどですし、プロでもありません。あくまである程度プログラミングができるようになるまでの勉強法と思って読んでください。逆にプログラミング経験がプロのように長くはないので、プログラミング初心者の頃を思い出しやすく書きやすいと思いこのタイミングでこの記事を書くことにしました。ちなみにここでいうプログラミングはHTMLなどのマークアップ言語やLispなどの関数型言語などではなくC言語Pythonのような命令型プログラミング言語で書くプログラミングを想定しています。

 

・プログラミング学習で大切なポイント(初めて学ぶ時)

①あくまで学習するべきなのは形ではなく考え方

 よく知り合いとかでもプログラミングを学んでいてfor文の書き方はみたいなのを暗記するところから学習を始める人がいますが、最初から暗記する必要はありません。というか暗記する必要は基本的にありません。プログラミングにおいて書き方は正直どうでもいいです。for文の使い方さえわかっていれば書き方は調べればわかります。そしてよく使う言語であればそのうち自然に覚えます。逆に滅多に使わない言語で書き方忘れていたら、使う時に調べればいいです。とにかく形では無くこういう時はこういう方法を使うとうまくいくということを学びましょう。

 

②インプットよりもアウトプット多め

 基本が書かれた本の第一章を何周もしたり、ノートに構文をまとめたりしている人もいますが、基本的にこういったことは意味がないです。こんなことをするくらいだったらさっさと本を一周して実践しましょう。ただこれは適当に斜め読みすればいいということではないです。大切なのは読むだけじゃなくて書くことです。全てを理解しなくてもいいのでまずしっかり書いて動きを確かめましょう。ポイントは書き方を覚えるために書くのではなく、動きを理解するために書くということを意識することです。小学生の時にやったような漢字練習帳とは書く目的が違います。そして、ここを変えたらどうなるかな?といった興味を持ちながらコードを少し書き換えたりして動きを確かめるとさらにいいでしょう。こういった勉強をしているうちに、こういうことしたい時にはこの方法を使えばいいといったことがわかるようになります。

 

③プログラミング習得のゴールは調べながら、色々なものを作れるようになること

 ここでいうゴールはあくまである程度プログラミングができるようになるという意味でのゴールです。ただこの段階まで来れば基本的に困ることはないでしょう。多くの人が到達したいレベルであるウェブアプリを作れる人になる、スマホアプリを作れる人になる、サーバー管理をできる人になる、機械学習をとりあえず利用する人になるなどであれば全然困りません。そもそも世の中にプログラミングのための便利な道具(フレームワークや開発環境、ライブラリーなど)は無数に存在していてそれら全部を覚えている人なんていません。必要になった時覚えればいいのです。もちろん世の中にまだ方法がないようなことを生み出したりしたいのであればこの段階では不十分かもですが、その段階まできたらそれはもはや研究レベルの話であって、プログラミング技術の問題ではないことも多いでしょう。とにかくここで大切なのは調べながら実装できればいいということです。

 

④完璧主義をやめること

これはここまで書いた①〜③のポイントのまとめとなるのですが、プログラミングは完璧を求めていたらキリがありません。完璧主義はやめましょう。完璧主義の人はまず形を覚えなければと思い、調べているようではまだまだだとかんじ、頑張ってインプットしてしまいます。大事なところはそこではないので、完璧主義はやめたほうがいいです。

 

・プログラミング学習の手順

①まずはプログラミングの基本を学ぶ

この段階でのポイントは5つあります。

その1 本やProgateなど一定のレベルにまとまった教材を使う

いくら独学とは言え何もわからない段階で、ネットに書かれた記事をつまみながら読んで学ぶのは無謀です。素直に本やProgateなどの教材を使って、基本を学びましょう。(個人的にProgateのプログラム書く部分って答えが決まっていて、少し変えたらどうなるかなとかを確かめられないのが好きではないですが(友達がやっているのを見ていてそう思っただけでやったことはないので間違っているかもしれません))

 

その2 基本とはどのレベルなのか

僕が思う基本というのは、変数に代入した時の挙動や変数の型、if・for・whileなどの基本構文の使い方や使い所、関数やクラスの使い方および使い所などです。大事なのは書き方ではなく使い方や動きを学ぶというところです。

 

その3 一つの言語を学ぶ

何度も言っているように、プログラミング学習で大切なことはプログラミングの形式(例えばif文の書き方や関数の書き方)ではなく、プログラミングで利用できる考え方や構造を学ぶこと(例えばfor文というループ構造がある。関数やクラスを利用することで効率よくプログラミングできるなど)です。しかしいきなり色々な言語に触れてしまうと、それぞれの言語における書き方の違いに混乱してしまい、肝心のプログラミングの考え方を学ぶことができなくなります。それに焦って色々な言語を同時にやらなくても、一つの言語で書けるようになれば、調べながらではありますが他の言語でも同じことを書けるようになります。

 

その4 高度なライブラリーやフレームワークを使わない

これは高度なライブラリーやフレームワークは引数を指定したり、パスを設定したりするだけで様々なことができたりしますが、これだと実際プログラムがどのように動いているのかは何もわからないですし、基本を学ぶには向いていないからです。高度なライブラリー等をいきなり使うことで混乱してしまうこともあるでしょう。まずは実際に役立つようなプログラムを作ることを意識するのではなく、基本を理解することを意識しましょう。

 

その5 インプット:アウトプット = 1:1

最初にアウトプット多目が大切と書きましたが、この段階ではインプットとアウトプットは同じ割合でいいでしょう。基本的に一つのことを学んだら、それを使ったコード(本や教材に書いてあるものでよい)を書くといった感じですね。

 

学ぶ言語はどれがいいのか?

自分のやりたいことに使う言語から学ぶもしくは簡単めな言語(PythonRubyPHPなど)から学ぶのが良いでしょう。

下の記事ではPythonを勧めています。

https://koro-game-programming.hatenablog.com/entry/2019/12/14/182627

 

では次の段階に進みましょう

 

②とりあえず簡単なプログラムを自分で考えながらいくつか作る

この段階でのポイントは3つあります。

その1  今まで習ったことを組み合わせたプログラムを書く

 おそらく段階1ではほとんど一つのことを理解しているだけで作れるプログラムを書いてきたと思います。例えばif文を使うだけ、関数を一つ作るだけなどのプログラムです。第2段階ではそれらを組み合わせてプログラムを書いていきましょう。本や教材がある場合にはその本や教材に載っている問題をやってみるといいでしょう。そのような物が無くて無料で済ませたい場合には下のURLに書かれた問題のうち上10個位をやってみるといいでしょう。ただしこの問題だけだと問題に偏りがあるので不十分かもしれないです。ここで大切なことはやり方が思い浮かべば、あとは書き方を調べながら実装できればいいということです。実際にスラスラコードを書けなくてもこの段階では当たり前です。安心してください。

http://vipprog.net/wiki/exercise.html

 

その2 カンニングオッケー

 例えばこのプログラムこういう関数をif文とwhile文を組み合わせて作ればいいななどということが思い浮かんだら、ネットをカンニングしながら書けばいいです。プログラミングにおいてカンニングは何年経っても大切なことですし、ここでネットから自分に必要な知識を見つけるスキルを身に付けるといいでしょう。何年経ってもカンニングが大切というのは、どんなすごいプログラマーであっても初めて使うライブラリーの関数の引数に何を入れればいいかなどということはわからないからです(もちろんライブラリーにあるような関数も全て1から作っていけば実装可能だとは思いますが、普通そんなことはしません)。つまりどんなプロも初めて何かを作る時にはまずそれを実装するのに使えそうな便利な道具を調べるのです。

 

その3 完全なパクリはやめる

 上でカンニングオッケーと言ったのにパクリはダメとかなんじゃこりゃと思う人もいると思いますが、上でカンニングオッケーと言ったのはあくまで部品のカンニングはオッケーと言うだけで、ただ全てをコピーしてくるのがオッケーと言うことではありません。ただコピーしてきただけでは当然何も学べません。最初はしりとりのプログラムを参考にしながら頭とりのプログラムを書くとか、フィボナッチ数列のプログラムを参考にしながら、自分が考えた漸化式の問題をとくプログラムを書くなどだいたいパクリだけど完全にパクリではないといった問題から初めてもいいでしょう。

 

ここまで来たらだいたいのものは作れるようになります

実際に自分の作りたいものを作ってみましょう

 

③実際に作りたい高度なアプリなどを作る

この段階でのポイントは3つあります。

その1 まずは自分の作りたいものを作るのに役立つライブラリーやフレームワークを書籍やネット等で調べる

 ここで初めてライブラリーやフレームワークを調べます。そしてそのライブラリーやフレームワークで利用できる関数やシステムを学んで実際に使っていきます。この段階まで来たら、便利な道具をどんどん使っていきましょう。この段階でimportなどを使うようになると思うので、同時に自分の書いた別のプログラムもimportできることを学ぶといいでしょう。

 

その2 自分の実装したいものに近いものを見て学ぶ

 おそらく高度なアプリを作る時、自分がイメージしているものと全く同じものを作っている人はいませんが、部分ごとでみると似たものを作っている人はいると思います。そういったものを見て自分の作りたいものにどこが利用できるかを考えることは大切です。ブログやgithubなどを覗いてみましょう。段階2でカンニングしっかりカンニングしていた人はこの作業でそんなにつまずかないでしょう。

 

その3 エラーは出て当たり前

いきなり全てうまくいくことなんて滅多にありません。エラーが出たら直して、例外が出たら直してと言うのを繰り返してプログラムを完成させます。このエラーを直していくと言う作業がプログラミングの肝だと思います。もちろんここでもネットや書籍を参考にしましょう。

 

プログラミングは独学でも学べるのか?

個人的な意見としては独学でもいいと思います。このように思うのはプログラミングにおいて誰もが知っておかなければいけない基本というのはとても少なく、あとは実際に作りたいものに合わせて、それを作るのに必要な知識を習得していけばいいからです。

そもそもおそらくですが、世の中にある全ての言語の全てのライブラリーの全ての関数の使い方を覚えている人なんていません。なぜなら世の中の便利なライブラリーは無数とありますが、それらを全て使うような開発はないからです。そしてライブラリーやフレームワークなどの使い方はネットや書籍で調べればわかります。

実際プログラミングスクールでどのようなことをやられているのかは残念ながらわかりませんが、プログラミングを書くという観点で見たらプログラミングスクールにわざわざいく必要はないかなと思います。詰まった時にやり方を聞けるような知り合いはいたほうがいいかもしれませんが。僕もプログラミングスクールには通っていませんが、ある程度実力がついてからはプログラミングをするインターンやプログラミングを利用する団体などに入って実際に使えるプログラミングを学びました。

逆にすぐ特定の仕事に直結する知識だけを学びたいという方や案件をすぐに勝ち取りたいという方はプログラミングスクールを利用されるのがいいかもしれません。プログラミングスクールが仕事に結びつくまで面倒を見てくれる場合も多いようです。

 

以上長々と書いてきましたが、プログラミングは継続さえすれば、少なくとも世の中にすでにある技術を利用してプログラムを書くというレベルには誰でもなれると思います。だってプログラミングって英語に比べて文法は簡単、わからなかったらカンニングすればいい、リスニングもスピーキングもない。こう聞くと誰でもできそうですよね。プログラミングを習い始めたばかりの人、これから習おうという人、頑張ってください!

自作関数シリーズ第1回 ルート関数 (C言語、Java、Python、Ruby)

このシリーズは普段ライブラリを利用して求めているような計算を自作するとしたらどのようなコードになるのかを紹介するシリーズです。といってもOpenCVやBeautiful Soupのような大規模なライブラリの関数を自作するわけではありません。大規模なライブラリは眺めてこんな感じ何だなって理解するに留めて、素直に作ってくれた人に感謝して利用しましょう。さて記念すべき第1回はルートを求める関数を自作したいと思います。ちなみに普通にルートを求めるには

C言語: include<math.h>をしてからsqrt関数を使う

Java: Mathクラスのsqrtメソッドを使う

Python: import mathをしてsqrt関数を使う

Ruby: Math.sqrtを使う

 

今回ルートを求めるのに使う方法はニュートン法です。

ニュートン法は「f(x) = 0になるような値Xを探す時、ある値Xnにおける接線の切片Xn+1は、元の値Xnより真の値Xに近くなる。」という考え方に基づいています。

この考え方を数式に直すとXn+1とXnの漸化式は

Xn+1 = Xn - f(Xn)/f'(Xn)

となります。

下の図を例に見てみると確かにXn+1はXnよりも真の値Xに近いことがわかります。

ニュートン法の数学的な説明をもっと詳しく知りたい人は

wikipediaなどを参考に読んでみてください。

https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3%E6%B3%95

 

f:id:koro_game_and_programming:20191231182645p:plain

 

さて今回の本題ルートを上で紹介したニュートン法で求めていきましょう。

x = √a

と置き式変形すると

x^2 - a = 0

ここで左辺をf(x)と置くと

f(x) = x^2 - a

f'(x) = 2x

これを上の

Xn+1 = Xn - f(Xn)/f'(Xn)

に代入すると

Xn+1 = Xn - (Xn~2 - a)/2Xn

         = Xn/2 + a/2Xn

これを繰り返していくと近似的にルートを求めることができます。

最後に実際にこの漸化式を10回繰り返し近似的にルートを求めるプログラムを紹介したいと思います。今回は10回漸化式を繰り返す方法をとりましたが、自分で近似の精度を決めたい場合はwhile(True)で回し続けて精度がよくなったらbreakで抜けるという方法を取れば良いでしょう。

 

C言語

double my_sqrt(double x){
 int i;
 double y,z;
 if(x==0){
  return 0;
 }
 else{
  y = 1;
  for(i=0;i<10;i++){
   z = x/y;
   y = (y+z)/2;
  }
  return y;
 }
}

 

Java

public static double my_sqrt(double x){
 if(x==0){
  return 0;
 }
 else{
  double y = 1;
  for(int i=0;i<10;i++){
   double z = x/y;
   y = (y+z)/2;
  }
 return y;
 }
}

 

Python

def my_sqrt(x):
 if x == 0:
  return 0
 else:
  y = 1
  for i in range(10):
   z = x/y
   y = (y + z)/2
  return y

 

Ruby

def my_sqrt(x)
 if x == 0
  return 0
 else
  y = 1.0
  for i in 0..9 do
   z = x/y
   y = (y+z)/2
  end
 return y
 end
end

ポケモン、孵化あまり交換会2!

第二回孵化あまり交換会を開催したいと思います。

僕が持っている孵化あまりは

夢特性ドヒドイデ、夢ローブシン、夢ドリュウズ、夢イーブイ、夢コイキング、夢サニーゴ、夢アーマーガア、夢カビゴン、夢ヒトカゲ、夢ヌオー、夢モスノウ、夢カモネギ、夢ブリムオン、夢マホイップ、夢イエッサン、アリアラプラス、ミミッキュ、ストリンダー、ジュラルドン、バンギラスジャラランガナットレイロトムサザンドラパルシェンオニシズクモヒヒダルマ、ドラパルト、オーロンゲ、シャンデラ、エースバーン、ウインディ、ゴリランダー、オノノクス、ウィンディ、ギルガルド

(孵化あまり他にもいたらまた追記します、マイナーなポケモンとか抜けているかもしれません)

また孵化あまりじゃなくても良ければソード限定ポケモンも出せます。

孵化余りなので交換するポケモンはなんでも大丈夫です。

一応希望を書いておくと欲しいポケモンはシールド限定ポケモンメタモン(わんぱく、ようき、いじっぱり)、上記以外の夢特性ポケモン、火炎玉、メッソン、その他上記以外の孵化あまり

 

 

交換方法

1.ツイッターをフォローする。(ただし明らかな捨て垢は禁止)

ツイッターアカウントはこちら https://twitter.com/korokoro_9

2.ツイッターの孵化あまり交換会2のツイートをリツイート&いいねする(どちらかでもOK)。

3.孵化あまり交換会2のツイートにリプライで欲しいポケモン(2匹まで)と出せるポケモンを書く(出せるポケモンはいない場合はなしと書いてください)。

 

締め切りは1/1の12時です。

交換は1/1の22時以降から行います。

そろそろみんな主要ポケモン揃えて、そんなに欲しいポケモンいなくなってるかもしれないですが、万が一交換希望者が多かった場合には、僕が欲しいポケモンを出せると書いてくれた方および、抽選で選ばれた20名とのみ交換を行います。

 

過去の孵化余り交換会

https://koro-game-programming.hatenablog.com/entry/2019/12/14/220251

2019年ゲーム売り上げランキング

https://koro-game-programming.hatenablog.com/entry/2019/12/14/160934

週間ゲーム売上ランキング 先週分(12/16〜12/22) PS4値下げキャンペーンの効果てきめん

ソフトではポケモンが6週連続で1位!他に有力候補がいないとはいえ、凄まじい強さですね。そのほかのswitchソフトもよく売れ12位までswitchが独占することになりました。新作の中ではPS4とSwitchで発売された、無双OROCHI3 Ultimate が合計28314本売り上げ1位でした。

ハードではSwitchが相変わらず高い水準で売れました。またPS4も12/19より始まった1万円びきキャンペーンの影響で大幅に売り上げを伸ばしました。

先々週(12/9~12/15)のゲーム売り上げ

https://koro-game-programming.hatenablog.com/entry/2019/12/18/221250

 

データ元はファミ通です。

https://www.famitsu.com/news/201912/25189804.html

 

Switch/18万9908台(累計 1019万6821台)

Switch Lite/10万1577台(累計 95万2342台)

PS4/74419台(累計 729万4150台)

PS4 Pro/32894台(累計 137万2744台)

Xbox One X/166台(累計 18447台)

Xbox One S/60台(累計 92502台)

New 2DS LL(2DS含む)/3081台(累計 168万7247台)

New 3DS LL/235台(累計 588万5745台)

PS Vita/38台(累計 586万2969台)

 

順位

ゲームタイトル

今週の売上

累計売上

機種

消化率

販売元

1位

ポケットモンスター ソード・シールド

288,199本

2,744,658本

Switch

80%

ポケモン

2位

ルイージマンション3

78,903本

446,649本

Switch

80%

任天堂

3位

リングフィット アドベンチャー

56,861本

443,118本

Switch

80%

任天堂

4位

マリオ&ソニック AT 東京2020オリンピックTM

50,405本

154,262本

Switch

60%

セガゲームス

5位

Minecraft

41,907本

1,105,034本

Switch

80%

日本マイクロソフト

6位

釣りスピリッツ Nintendo Switchバージョン

38,527本

303,372本

Switch

80%

バンダイナムコエンターテインメント

7位

マリオカート8 デラックス

37,835本

2,618,126本

Switch

80%

任天堂

8位

スーパーマリオメーカー2

34,368本

774,102本

Switch

80%

任天堂

9位

大乱闘スマッシュブラザーズ SPECIAL

34,085本

3,417,667本

Switch

80%

任天堂

10位

スーパー マリオパーティ

32,041本

1,229,061本

Switch

80%

任天堂

11位

ディズニー ツムツム フェスティバル

20,709本

108,025本

Switch

60%

バンダイナムコエンターテインメント

12位

スプラトゥーン2

19,662本

3,231,666本

Switch

80%

任天堂

13位

無双OROCHI3 Ultimate

18,386本

18,386本

PS4

40%

コーエーテクモゲームス

14位

妖怪ウォッチ4++(ぷらぷら)

14,558本

34,565本

Switch

60%

レベルファイブ

15位

サクラ大戦

13,532本

153,908本

PS4

80%

セガゲームス

16位

ゼルダの伝説 ブレス オブ ザ ワイルド

12,113本

1,470,179本

Switch

80%

任天堂

17位

New スーパーマリオブラザーズ U デラックス

11,936本

735,437本

Switch

80%

任天堂

18位

太鼓の達人 Nintendo Switchば〜じょん!

11,602本

409,844本

Switch

80%

バンダイナムコエンターテインメント

19位

無双OROCHI3 Ultimate

9,928本

9,928本

Switch

40%

コーエーテクモゲームス

20位

実況パワフルプロ野球

9,649本

201,884本

Switch

80%

KONAMI

21位

スーパーマリオ オデッセイ

9,639本

2,039,914本

Switch

80%

任天堂

22位

フォートナイト ダークファイアバンドル

8,464本

34,910本

Switch

60%

ワーナー ブラザース ジャパン

23位

うたの☆プリンスさまっ♪Repeat LOVE for Nintendo Switch

8,410本

8,410本

Switch

60%

ブロッコリー

24位

映画すみっコぐらし とびだす絵本とひみつのコ ゲームであそぼう! 絵本の世界

8,394本

26,352本

Switch

40%

日本コロムビア

25位

テラリア

7,516本

7,516本

Switch

40%

スパイク・チュンソフト

26位

ドラゴンクエストXI 過ぎ去りし時を求めて S

6,951本

456,426本

Switch

80%

スクウェア・エニックス

27位

星のカービィ スターアライズ

6,631本

778,039本

Switch

80%

任天堂

28位

モンスターハンターワールド:アイスボーン マスターエディション

6,312本

411,902本

PS4

80%

カプコン

29位

FIFA 20 Legacy Edition

6,222本

38,118本

Switch

60%

エレクトロニック・アーツ

30位

東京2020オリンピック The Official Video GameTM

6,139本

75,821本

Switch

80%

セガゲームス