読者です 読者をやめる 読者になる 読者になる

世界が変わったのだから、自分も変わらなくてはならない。

エンジニア兼デザイナーのナカモリのブログです。

プログラミングでハマったときに僕がやること

日記

今日は仕事の合間にPHPのフレームワークLaravelでごく簡単なWebAPIを作ってみたり、Swiftでその作ったWebAPIをきちんと取得するかを実装してみました。目標は2つクリアしましたが、思いもしなかったところでつまづきました。しかし、なんとか調べて自分なりにスッキリしましたが、どのようにして調べて、解決まで持っていったのか?その方法について少し説明します。

よくある「プログラミングをマスターするにはどうしたらいいでしょうか?」の回答(その2)です。

ちなみに回答(その1)はこちら。

blog.takahironakamori.jp

 1.重要なのは「なんとかしてやるぞ!」という気合

プログラミングをマスターする方法としては、書籍や最近ではドットインストールなどの映像授業、スカイプみたいなものを使ったリアルタイムで質問する仕組みがあります。しかし、自分の場合は書籍か自分自身でなんとかする方法のどちらかです。特にPHPのフレームワークは書籍はあってもバージョンが古かったり、値段が高かったり、その割に半分くらいが序章的というか基礎的な内容です。基本的な知識を得るには書籍は非常に良いツールですが、実際に何かしらを作ってみて、ハマったところを解決するときに役に立った経験はあまりありません。書籍に載っていることで解決するのであれば、それは基本を理解していないということなので…。ということで、ハマったら大体は自力でなんとかします。必要なものは気合!です。

2.実際の方法としては、まずはエラーを調べる

「なんとかしてやるぞ!」という気合がいると精神論を言っても、方法はある程度決まっています。それは単純です。エラーを調べます。最近のプログラミング言語やブラウザやエディタなどのソフトはエラーを丁寧に出力してくれます。失敗は成功のもと、エラーは僕を成長させてくれます。例えば、今日はSwiftでWebAPIでJSONを取得しようと思ったら、下記のようなエラーが出ました。

CFNetwork SSLHandshake failed (-9801)

ぱっと見はSSLがfailedだから、何か失敗しているんだなーとわかりますが、9801はエラーコードかな?でも、詳細はわかりません。そこで、上記のエラーを全てコピーしてブラウザの検索エリアにペーストして、そのまま検索します。そうすると、大体Stack Overflowなどの、いわゆるQ&Aサイトが検索結果として表示されます。同じようなエラーが出てこまっている人が質問していたり、同じエラーを解決した方法を丁寧にブログで書いてくれています。非常に助かりますが、大体が英語です。英語が読めれば、解決に近づきます。英語が読めなくても、文章内のキーワードやコードを拾っていき調べていくと、答えに近づき、日本語の情報を得られることもあります。

上記のエラーからいろいろ調べていくと、下記のブログ記事に行き着きました。

shirakiya.hatenablog.com

上記の記事を参考に、ATS機能についての例外設定をすればエラーはなくなりました。
数時間かかりましたが、SSLやTLSなどの理解も深くなり、なぜなのかもわかりましたのでよかったです。

時間はかかりますし、遠回りかもしれませんが、知識の幅が広がるので気合で地道に調べる方法もいいのでは?と思います。(もちろん詳しい人が近くにいるのなら、聞くのが一番早いです。)