かんたんRubyという書籍を執筆しました(6/21発売)
表題の通りですが、もうすぐ技術評論社から「かんたんRuby」というRubyの入門書が発売されます。
かんたんRuby is 何
技術評論社から出版している「プログラミングの教科書」シリーズのRuby版です。
基本的にはプログラミングの経験があまり無い人向けの入門書という位置付けです。
対象読者
- なんとなくターミナルの操作ができる
- 難しいことはしていませんが、全く触ったことないとちょっと大変かも
- プログラミングは初めて、あるいはちょっと触ったことがある
これくらいの経験の方向けに、Rubyを通じてプログラミングを経験してもらえると良いなと思っています。
目次
- 1章 Rubyを始めよう
- 2章 Rubyの基本を学ぼう
- 3章 変数
- 01 変数の種類
- 02 擬似変数
- 03 定数
- 04 nilオブジェクト
- 4章 数値と演算子
- 5章 文字列
- 6章 制御構造
- 01 条件分岐とは
- 02 繰り返し処理
- 7章 配列/レンジ/ハッシュ
- 01 配列オブジェクト(Array)
- 02 配列でよく使われるメソッド
- 03 レンジオブジェクト(Range)
- 04 ハッシュオブジェクト(Hash)
- 05 ハッシュでよく使われるメソッド
- 06 配列とレンジ,ハッシュのまとめ
- 8章 メソッド
- 01 メソッド定義
- 02 メソッドと戻り値
- 03 ブロック付きメソッド
- 9章 クラスの基本
- 01 クラスとは
- 02 クラスにメソッドを定義する
- 03 再び変数について
- 04 アクセッサメソッド
- 05 メソッドと可視性
- 06 クラスの継承
- 07 別ファイルを読み込む
- 08 クラスと抽象化
- 10章 モジュール
- 11章 例外処理
- 01 例外処理とは
- 02 例外を捕捉する
- 03 例外を発生させる
- 12章 組み込みライブラリ
- 01 Timeクラス
- 02 Fileクラス
- 03 Dirクラス
- 13章 標準添付ライブラリ
- 14章 組み込みツール
- Appendix より高度なRubyの知識
本書を通じて、独り立ちできるように
これは「はじめに」にも書いてあるんですが、とにかく、自分がプログラミングを始めた時に一番困ったのは、入門書に書いてあることは理解できても、その後「どう調べていけば良いのか」がよくわからなかったという記憶があります。
そのため、本書では細かく本文中にリファレンスマニュアルのURLを記載しています。
このような文章を読むことで、わからないことがあったらまずはリファレンスマニュアルを見れば良いんだな、という体験をしてもらいたいという狙いがあります。
また、あまり深くは踏み込んでいないのですが、正規表現やエンコード、テストについても解説があります。
これらをはじめとして「知らないとハマる」類のものや、初心者向けの説明としては不要と思われるかもしれないけれど、世の中のコードを見るときに知らないと意味がわからない類のものは適宜解説を入れているつもりです。
この本を読めば中級者になれる!とかそういうのは難しいかもしれませんが、ある程度自分で調べる分別が着くようになってほしいーーつまり独り立ちするための基礎体力がつくように、というコンセプトで執筆しました。
👏お礼👏
本書を書くにあたって、 @willnet さん、 @koemu さんにレビューをしてもらいました。なかなかタイトなスケジュールになってしまったにも関わらず、快く引き受けていただいて本当に嬉しかったです。ありがとうございました><
Rubyの動作について完全に思い違いしていた部分や、プログラミングの説明で難しいなーとついボヤかした部分などをズバッと指摘してもらって、かなりクオリティが高まったというか、本当に見てもらって助かりました……。余談ですが、頭がイカれていたのかGemfileを異常にtypoしていた(日常生活ではそんなことほとんどない)のをめっちゃ指摘してもらったのが印象深いです😇
購入はこちら
紙の書籍
Amazonで買えます(執筆時点では予約購入)。
- 作者: すがわらまさのり
- 出版社/メーカー: 技術評論社
- 発売日: 2018/06/21
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る
あるいは、先行入荷している以下の書店では在庫があれば本日購入することが可能です!
6/14先行販売『かんたん Ruby』技術評論社(978-4-7741-9861-3)すがわらまさのり 著 入荷◆「Ruby」棚にて展開中!章の最後には練習問題を収録しているので,内容がきちんと理解できたかを確認しながら学習できる教科書です。 pic.twitter.com/05TQC1HMwy
— 書泉ブックタワーコンピュータ書売り場 (@shosen_bt_pc) 2018年6月14日
【4階コンピュータ】技術評論社の先行テスト販売書籍が入荷いたしました。『かんたんRuby』4階F13の棚にございます。是非いち早くご覧くださいませ。(sa
— 紀伊國屋書店 新宿本店 (@KinoShinjuku) 2018年6月15日
6/15先行販売:ISBN978-4-7741-9861-3 技術評論社 『かんたん Ruby』 すがわらまさのり 著 10冊入荷
— ジュンク堂書店池袋本店/PC書 (@junkudo_ike_pc) 2018年6月15日
電子書籍
技術評論社の電子書籍サイトでEPUB/PDF版を購入できます。
かんたん Ruby | Gihyo Digital Publishing … 技術評論社の電子書籍
あるいは、AmazonでKindle版を購入することもできます。
- 作者: すがわらまさのり
- 出版社/メーカー: 技術評論社
- 発売日: 2018/06/21
- メディア: Kindle版
- この商品を含むブログを見る
どちらもリフロー版とのことです。
良いなと思ってくれた方はぜひamazonのレビューなどに記載してくれるととても嬉しいです。おかしい点や改善点があれば技術評論社の書籍ページからいけるお問い合わせか、私に伝えてもらえると今後の改善につながるかもしれません。
それはそれとして単著 is 辛い
私は今まで、パーフェクトRuby, パーフェクトRuby on Rails, Webアプリエンジニア養成読本という書籍を共著で執筆してきました。 今回は色々あって単著という運びになったのですが、とにかく想像を絶する厳しさでほぼイキかけました。
何が辛いかって、
- 自分がやらないと進まない
- 自分がやらないと進まない
- 自分がやらないと進まない
- 自分がやらないと進まない
- 自分がやらないと進まない
本当にこれに尽きるというか、共著の場合はチームで誰かが執筆している気配があると良い意味でプレッシャーになって自分も書かなくてはという感じになるのですが、とにかく自分一人しかいないのでやらないと何も進まないんですよね……。
チームでやるのは、それはそれで苦労があるのですが単著というのはとにかく夏休みの宿題をギリギリまでやらないタイプのスタンド使いとは相性悪いのではないか😇
色々あって自分が手元でテキストベースの原稿を執筆した期間がおよそ3ヶ月(その後はDTPしてPDFになった原稿での調整や見直しがある)で、その後の加筆修正なども考慮するとだいたい24万文字くらい書いた感じですが、とにかく執筆期間は人間性を捨てて時間を作っていた結果3kgくらい太って厳しみがあります(こんなの人生で初めて)。
そんなわけで、結構苦労して書いたのでもし本屋さんで見かけたらどんなもんかチラ見くらいしてもらえると幸いです(良いと思ったら買ってね!)。
Rubyのnilクラスを調べたい
nilクラスが実際にどうなってるのか調べたい
Rubyの実装がどうなっているか、一年に365回くらいは調べたくなると思うのですが、今日はnilクラスについて調べました。
Rubyの組み込みクラスは(多分)リポジトリ直下にそれぞれ、それっぽい名前.cとして存在しているのですが、nilについてはどうやらそうではない模様。
GitHub - ruby/ruby: The Ruby Programming Language
仕方がないので頑張って探してみましょう。
おもむろに git grep nil
rubyのリポジトリをgit cloneしてきて*1、おもむろに git grep nil
。当たり前だけど普通にnilばっか出てきてダメですね;;
よく考えればnilはクラスではないのでクラス名で検索しないとダメだろう。というわけでNilClassを調べます。念のため書いておきますが、nilのクラスは以下のようにして調べることができますよ。
irb(main):001:0> nil.class => NilClass
気を取り直して、おもむろにgit grep NilClass
。これでも結構たくさんの結果が出てきてしまいました。ここから目grepするだけでも目的のものはわかるのですが、もうちょっと楽をするために.c
のみで検索してみましょう。
% git grep NilClass -- "*.c" class.c: SPECIAL_SINGLETON(Qnil, rb_cNilClass); class.c: * NilClass, TrueClass and FalseClass. complex.c: rb_define_method(rb_cNilClass, "to_c", nilclass_to_c, 0); ext/json/generator/generator.c: mTrueClass, mFalseClass, mNilClass, eGeneratorError, ext/json/generator/generator.c:static VALUE mNilClass_to_json(int argc, VALUE *argv, VALUE self) ext/json/generator/generator.c: mNilClass = rb_define_module_under(mGeneratorMethods, "NilClass"); ext/json/generator/generator.c: rb_define_method(mNilClass, "to_json", mNilClass_to_json, -1); object.c:VALUE rb_cNilClass; /*!< NilClass class */ object.c: * <code>false</code>, it returns NilClass, TrueClass, or FalseClass, object.c: * nil.singleton_class #=> NilClass object.c: * Document-class: NilClass object.c: rb_cNilClass = rb_define_class("NilClass", rb_cObject); object.c: rb_define_method(rb_cNilClass, "to_i", nil_to_i, 0); object.c: rb_define_method(rb_cNilClass, "to_f", nil_to_f, 0); object.c: rb_define_method(rb_cNilClass, "to_s", nil_to_s, 0); object.c: rb_define_method(rb_cNilClass, "to_a", nil_to_a, 0); object.c: rb_define_method(rb_cNilClass, "to_h", nil_to_h, 0); object.c: rb_define_method(rb_cNilClass, "inspect", nil_inspect, 0); object.c: rb_define_method(rb_cNilClass, "&", false_and, 1); object.c: rb_define_method(rb_cNilClass, "|", false_or, 1); object.c: rb_define_method(rb_cNilClass, "^", false_xor, 1); object.c: rb_define_method(rb_cNilClass, "===", rb_equal, 1); object.c: rb_define_method(rb_cNilClass, "nil?", rb_true, 0); object.c: rb_undef_alloc_func(rb_cNilClass); object.c: rb_undef_method(CLASS_OF(rb_cNilClass), "new"); rational.c: rb_define_method(rb_cNilClass, "to_r", nilclass_to_r, 0); rational.c: rb_define_method(rb_cNilClass, "rationalize", nilclass_rationalize, -1); spec/ruby/optional/capi/ext/constants_spec.c:static VALUE constants_spec_rb_cNilClass(VALUE self) { spec/ruby/optional/capi/ext/constants_spec.c: return rb_cNilClass; spec/ruby/optional/capi/ext/constants_spec.c: rb_define_method(cls, "rb_cNilClass", constants_spec_rb_cNilClass, 0); sprintf.c: if (value == rb_cNilClass) { vm.c: if (klass == rb_cNilClass) return NIL_REDEFINED_OP_FLAG; vm.c: C(NilClass), C(TrueClass), C(FalseClass));
かなり人間がわかるような量になりました。
これで必要な情報はほぼわかったようなものですが、実装はobject.c
にあるようです。
object.c 👀
もはや説明不要なレベルですが、先ほどの結果を抜粋すると、object.cのここら辺が見るべきポイントのようですね。
object.c: rb_cNilClass = rb_define_class("NilClass", rb_cObject); object.c: rb_define_method(rb_cNilClass, "to_i", nil_to_i, 0); object.c: rb_define_method(rb_cNilClass, "to_f", nil_to_f, 0); object.c: rb_define_method(rb_cNilClass, "to_s", nil_to_s, 0); object.c: rb_define_method(rb_cNilClass, "to_a", nil_to_a, 0); object.c: rb_define_method(rb_cNilClass, "to_h", nil_to_h, 0); object.c: rb_define_method(rb_cNilClass, "inspect", nil_inspect, 0); object.c: rb_define_method(rb_cNilClass, "&", false_and, 1); object.c: rb_define_method(rb_cNilClass, "|", false_or, 1); object.c: rb_define_method(rb_cNilClass, "^", false_xor, 1); object.c: rb_define_method(rb_cNilClass, "===", rb_equal, 1); object.c: rb_define_method(rb_cNilClass, "nil?", rb_true, 0);
あまりCの実装には詳しくありませんが、少なくともrb_define_class
でNillClassを定義していて、rb_define_method(rb_cNilClass, ...)
でメソッド名と実装の紐付けを行なっていることがわかります。
例えば、to_i
はnil_to_i
で実装されているようですね。このnil_to_iも同じobject.cで実装されているのでみてみましょう。
static VALUE nil_to_i(VALUE obj) { return INT2FIX(0); }
こんな感じでゼロを返すという強い意志を感じます。
というわけで、NilClassの実装を見ることができました。まあ今回のポイントはどのファイルで実装されているのか?というのを調べる部分で、それはobject.cでした、ということですね。
合わせて読みたい
あんまり関係ないけどこちらもよろしくお願いします
- 作者: Rubyサポーターズ
- 出版社/メーカー: 技術評論社
- 発売日: 2017/05/17
- メディア: 大型本
- この商品を含むブログ (1件) を見る
「あなたの知らないセキュリティの非常識」を読んだ
辻伸弘さんから、「あなたのセキュリティ」シリーズ第一弾(http://sugamasao.hatenablog.com/entry/2016/10/31/083124)に続いて頂きました! (本当は12月中にこのエントリを書くつもりだったのですが遅くなってしまった……)
今回の内容も実際に発生したセキュリティインシデントに対して対策や対応方法について書いてあります。 が、なかなか事例が生々しい例が多いということもあって身が引き締まる思いです。
- 作者: 辻伸弘
- 出版社/メーカー: 日経BP社
- 発売日: 2017/11/24
- メディア: 単行本
- この商品を含むブログを見る
気になった内容メモ
ランサムウェアにお金を払うか?
バックアップから人質に取る事例。昨年はよく話題に上がった事例だと思います。 とにかく恐ろしい。
個人の端末ではなく、サーバにアクセスして復旧手段を封じてから本丸を暗号化させて身代金要求するようなケースの紹介があるのですが、暗号化や侵入の手順の説明だけではなく、被害にあった業者と攻撃者が交渉して代金の支払いやデータの復旧が行われたという事例の紹介になっていて、読んでいるだけで胃が痛くなる。 こんなんやられたら死ぬわ、、、。
また、脅迫型のDDos攻撃の事例も紹介されている。 これは言ってしまえばDDos攻撃されたくなかったら金を払えということなのだけど、脅迫メールとともにお試しで攻撃してブラフでないことを証明したり攻撃方法としてMiraiボットネットを使用するなどが書かれていたらしい。
Miraiボットネットについてよく知らなかったのだけど、Iot機器に感染させて様々な機器からDDos攻撃を仕掛けるとか言われるの怖すぎますね……。単にIPアドレスで弾くみたいなことはできないでしょうし。 参考 : http://techfactory.itmedia.co.jp/tf/articles/1704/13/news010.html
他にも、筆者がアノニマスのアカウントから人物像をプロファイリングしている話や、Webサイトを改ざんしたハッカーに直接コンタクトを取ってみたりする話が載っているのですが、スリリングで面白いというか、すげえって感じですね。
攻撃の被害者になったら
この章は実際に筆者の会社で被害にあった時の対応などが書かれている。最高の知見では???
実際の対応について、三つのポイントというのが書いてあって、例えば対応の意思決定者として社長が参画しているとか、きちんと情報を公開するという方針をとったなど。
これはぜひ本書を手にとって読んでみてもらいたい。
本作の見どころ(難易度:高)
前作の「あなたのセキュリティ対策間違ってます」で、Amazonのレビューに著者である辻さんのお母さんがレビューを書いていたことがありました。 非常に良い内容で一部界隈では盛り上がったのですが、なんらかの事情でAmazonから消えてしました(親族からのレビューはダメとかあるのかな?)。
そのレビューの文章が本作には載っているので、もし見逃してしまった人は一見の価値ありです。
合わせて読みたい
前作の「あなたのセキュリティ対策間違ってます」はこちらからどうぞ
- 作者: 辻伸弘
- 出版社/メーカー: 日経BP社
- 発売日: 2016/10/21
- メディア: 単行本
- この商品を含むブログ (3件) を見る
High Sierra上にPallarels DesktopでHigh Sierraの仮想環境を構築する
うまくインストールできなくて困った
この時はPallarels Desktop 13.1.0を使っていた
そんなことよりパラレルズを13.1にアップデートしたけどHigh SierraをVMとしてインストール完了まで進めなくてキレそう
— でも幸せなら🆗です (@sugamasao) 2017年10月13日
それからしばらくして
High Sierra上の parallels でHigh Sierraの仮想マシン作ろうとするとこんなこと言われるんだけどどうして・・・ pic.twitter.com/6TdG03fa7D
— でも幸せなら🆗です (@sugamasao) 2017年10月23日
気を取り直してリベンジしたもののうまくできない・・・
なんかうまくいかないんですよねぇ。今アップデートが降ってきたことに気がついたので明日(もう今日か)あたりアップデートしてから試してみます😇
— でも幸せなら🆗です (@sugamasao) 2017年10月23日
のだが、Pallarels Deskotop 13.1.1がリリースされていることに気がついたのでアップデートしてから再チャレンジ。
できた
めっちゃわかりにくいと思うけど仮想環境上のHighSierraです
バージョン情報と手順
手順は特に何もないのだけど、記憶を失った時のために書いておくと、仮想環境の新規インストールから「インストール」の「回復パーティションを使用」からOSのイメージを使ってインストールする。
わかばちゃんと学ぶ Git使い方入門を読んだ
読みました
- 作者: 湊川あい,DQNEO
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2017/04/21
- メディア: Kindle版
- この商品を含むブログを見る
目次
- CHAPTER 1 Gitって何?
- CHAPTER 2 個人でGitを使ってみよう
- CHAPTER 3 複数人でGitを使ってみよう
- CHAPTER 4 実用Git 〜 こんなときはどうすればいい?
- CHAPTER 5 Gitで広がる世界
読むモチベーション
普段から仕事などでgitは使っているので、今さらgitとは?のような話を学ぼうと思ったわけではなくて、本書の目次のCHAPTER 4「実用Git 〜 こんなときはどうすればいい?」が目当てでした。
というのも、基本的には必要に迫られて色々なコマンドを覚えてきたので体系的な(というか詳しい人の)「こういう時はこうする」という方法が果たして自分の普段やっていることと合っているのだろうか?という不安があったんですね。
結論から書くと
自分が普段やっていたのと同じことが本書に書かれていたので間違ってなかったんだなwと安心できてよかったし、説明がとてもわかりやすくてよかった。
読んだメモ
- ブランチやリモートとローカルの関係などが図示されているのはとてもわかりやすい
- コンフリクトやrebaseなども丁寧に説明されているのは非常によかった
- 説明は基本的にSourceTreeの画面で行われるので、SourceTreeユーザはドンピシャでわかって良さそう
- コラムでGitHub Flowの説明はあるけど、基本的にはブランチを使ったリリースフローなどの説明はなくて、あくまでブランチ自体の使い方などにとどめてある。のでそっち方面は別の書籍などで補完すると良さそう
日頃使っている人はともかく、VSC関連のツールを使ったことないけどgit使ってみたい人とか、gitをたまにしか使わなくて慣れていない人などが読むには非常に良いと思う。 使い始めた時に疑問に思うようなことはきちんとわかばちゃんが疑問に思う→説明→実演という流れで解決していくので、怖くて実行できない、みたいな恐怖心はだいぶ和らぐんじゃあないかな。
新人研修などでgitをゼロから教える場面があったらこの本渡せば良いんじゃないかと思うのでおすすめです(たぶん)。
読む用、保管用、布教用で3冊購入すると良さそうです。
- 作者: 湊川あい,DQNEO
- 出版社/メーカー: シーアンドアール研究所
- 発売日: 2017/04/21
- メディア: Kindle版
- この商品を含むブログを見る
Ruby2.4のoptparseでHashにパース結果をマッピングするintoという便利オプションを調べた
表題の通りなんですが
上記のページの「Parse CLI options into a Hash」の項目を見ると、以下のように parse
メソッドに :into
でハッシュオブジェクトを渡すと自動でマッピングしてくれるという地味に便利な機能が追加された。
上記のURLから抜粋
require 'optparse' require 'optparse/date' require 'optparse/uri' cli = OptionParser.new do |options| options.define '--from=DATE', Date options.define '--url=ENDPOINT', URI options.define '--names=LIST', Array end config = {} args = %w[ --from 2016-02-03 --url https://blog.blockscore.com/ --names John,Daniel,Delmer ] cli.parse(args, into: config) config.keys # => [:from, :url, :names] config[:from] # => #<Date: 2016-02-03 ((2457422j,0s,0n),+0s,2299161j)> config[:url] # => #<URI::HTTPS https://blog.blockscore.com/> config[:names] # => ["John", "Daniel", "Delmer"]
:into
で便利になるのはわかるものの、このサンプルを見ると define
って何だろう、とか短いオプション名(-u
とか)も指定した場合どうなるの?ってところが色々と疑問だったので調べてみた。
define is 何
情弱なのでリファレンスマニュアルに載ってないAPIだから define
を使ったオプションの定義したことがなかった(実は載っているのかと思ってドキドキしたけどやっぱり載ってない)。
というわけでRubyのソースを確認して見るとこんな感じ
https://github.com/ruby/ruby/blob/v2_4_2/lib/optparse.rb#L1465-L1505
抜粋すると以下のように、いつも使っている on
メソッドが内部で呼び出しているメソッドなんですね。
def define(*opts, &block) top.append(*(sw = make_switch(opts, block))) sw[0] end def on(*opts, &block) define(*opts, &block) self end
ソース内の雰囲気からすると、 on
は公開用で define
は内部で使う用っぽい気がするけど*1、普通に呼び出せるしどっちでも良いのかもしれない。まあ、今まで通り on
系を使えば良いかなって気がしますね……。
オプション名 is 何
割り当てるオプション名ってどう決まるのか。
options.on '-a, '--argument=VAL'
みたいに定義した時にどっちが使われるのかなという話でもありますし、オプション名に -
が含まれていた場合どうなるのか(ネタバレすると:"foo-bar"
みたいになる)など疑問が湧きますよね。
これを知るにはざっくり :into
オプションの流れを追う必要があるのですが、結論を先に書いておくと
- 短いオプション名と長いオプション名があった場合長いオプション名が使用される
- オプション名の先頭ハイフンを取り除いた文字列を
.to_sym
した値になる
という動作のようです。
プログラム的には
- ここで
:into
があった場合の動作が定義されていて、オプション名を.to_sym
している - ハッシュの名前としては
switch_name
の値が使われて switch_name
は長い名前を優先して使用する
という流れのようですね。
まとめ
OptionParser.new do |options| options.on '-r', '--ruby=VAL' do |val| val.downcase end options.on '-p', '--perl=VAL' do |val| val.upcase end options.on '-g', '--go-lang' do 'go' end options.on '-d' do true end options.on_tail '-h', '--help', 'hi' end
こんな定義をした場合、 into
オプションでHashを渡した場合は
{ ruby: 'ruby', perl: 'PERL', 'go-lang': 'go', d: true }
こんな値が得られます。便利ですね。
サンプルソースコードとテストケースは以下にあります(主に test/unit
を使ってみたかっただけw)。
https://github.com/sugamasao/optparser_ruby24_into_sample
*1:実際のところはどうなんでしょうか?
3DS LLがWifiを見つけられなくなった(解決済み→ではなかった)
ある日気がつくとインターネットに繋がらなくなった
我が家の環境は以下のような流れで接続している(細かくいうともうちょっとあるけど)
- 各機器
- AirMac (https://www.apple.com/jp/airmac-express/)
- インターネット
そして、他の機器は問題なく接続できているにも関わらず、3DSだけ、ある日突然繋がらなくなった。
具体的にいうと、アクセスポイントを見つけることが不可能になってしまい、結果としてインターネットに繋がらなくなった。
2年くらい前にも同じ現象が発生したが、気がついたら解消していた。だがしかし、また発生してしまった。普段インターネットに接続することはないけど、ゲームを購入するときにダウンロードで購入できないのは困る。
具体的には👇の発売日までにはどうにかする必要があって、すわ修理や買い替えが必要か!と思ったけど、自力で解決できた。
対応方法
まず、Wifi側の再起動や3DS本体の再起動、3DSについてるWifiのスイッチなどは何度かON/OFFを試したが効果はなかった。 何度やっても「アクセスポイントが見つかりませんでした」と表示される。
3DS側のインターネット接続を見直す
3DSのインターネット接続で、新規登録→アクセスポイントを検索でも上記と同じ結果。 その他、手動でSSIDやセキュリティを入力する方式で試してもアクセスポイントが見つからない状態は変わらない*1。
必死にググっていたところ、検索結果のうちの一つに、接続先の詳細設定でIPアドレスなどを手動で入力すると繋がったという情報が載っていたのを発見した。
モノは試しということで、 IPアドレス
と DSN
を手動で設定したところ、無事にインターネットに繋がるようになった。
なぜ自動取得だとうまくいかないのかはよくわからないのだけど、ハード的にWifi部分がぶっ壊れているとかではなくてよかった。
設定メモ
繋がるようになった3DSのネットワーク設定をメモしておく
- Wifiルーター : Air Mac
- SSID : 自分のWifiルーターのやつ
- セキュリティ :
WPA2-PSK(AES)
- IPアドレス(詳細設定)
- DNSの設定(詳細設定)
- Proxyの設定 :
使用しない
(デフォルト) - MTU値 :
1400
(デフォルト)
繋がるようになったことで、ファイアーエムブレム Echoesの無料コンテンツが届いていることに気がつけてとてもお得でした。
ファイアーエムブレム Echoes もうひとりの英雄王 |オンラインコード版
- 出版社/メーカー: 任天堂
- 発売日: 2017/04/19
- メディア: Software Download
- この商品を含むブログを見る
追記:なんか明らかに繋がっていたのだが、数分後にはアクセスポイントが見つかりません状態に戻ってしまった。あれは一体何だったんだ……
*1:ここまでは今まで何度も試したが解決しなかった