2020年3月31日火曜日

プログラムが動かない時の対処法

こんにちは。

今日は、プログラムが動かない時の対処法について書いてみます。

結論を言うと以下になります。
  • ロジックを追って確認する
  • ログを埋め込んで確認する
  • デバッガで確認する
上記の順で確認すると、大抵の不具合は解決します。

プログラムを作成していると、動かないというのはよくある事です。

調べていくとロジックのミスの場合が多いです。

ロジックを追って確認する

専門用語で言うと、机上デバッグと言います。

実際にソースコードがどのように動くかを、1ステップごとに追って確認する方法です。

大体、大きなロジックによる不具合は、机上デバッグで見つけることができます。

この段階で見つかる不具合は、詳細設計の段階で不具合が入り込んでいるケースが多いです。

ウォータフォールモデルでの開発では、ソースレビューを行うので、不具合がなくともレビューで見つかると思います。

ログを埋め込んで確認する

机上デバッグである程度動くソースコードができると、ログを出力して確認します。

机上デバッグでは、データの変動による不具合が見えにくいことがあります。

その場合は、ログに変数の値を出力し、なぜ動作しないのかを確認します。

私は、ログを埋め込む時に、どこのログか分かるように埋め込むようにしています。

特にループ処理の場合は、何回ループが回ったかを確認するようにしています。

たまに不要なループが回って、処理に負荷がかかっている場合があります

そういうのは、ログを埋め込んで確認するのが1番です。

デバッガで確認する

デバッガで確認するといろんな情報を取得することができます。

デバッガは、プログラムとは別のツールになります。

実際に仕事でプログラムを開発していると、ログを埋め込んで確認するのを飛ばして、デバッガでデバッグする事もあります。

上にも書いたように、デバッガは別のツールなのでいろいろと設定が必要になります。

ツールを使用できない事もあるので、ログを埋め込んで確認する方法も身に付けておきましょう。

デバッガを使用すると、様々な変数の値を見ることができます。

そこで、不具合に気づく事もよくあります。

まとめ

プログラムには不具合が付き物です。

不具合のないプログラムを組むことが理想ですが、最初から不具合のないプログラムはありません。

なので、プログラミングの後に試験を繰り返し不具合を叩き出すのです。

その時必要となるのが、上にあげた3点になります。

では、今日はこの辺で。

2020年3月29日日曜日

ブラウザとザーバーの関係

こんにちは。

今日は、ブラウザとザーバーの関係について書いてみようと思います。

結論から言うと以下になります。

  • ブラウザとサーバーは常に接続している訳ではない
  • サーバーはテキストのみを出力する
  • ブラウザはテキストを解析する
Webサービスを開発していると、経験の浅いメンバーから処理をどこに書いたらいいのかと言う質問をされることがあります。

その場合、ブラウザとサーバーの関係を理解していないことが多いです。

なので、ここでまとめてみようと思います。

ブラウザとサーバーは常に接続している訳ではない

開発をしていると、画面と処理をサーバーに置くため、ブラウザでWebサイトを開くと常に接続状態になっていると勘違いするようです。

しかし、実際は、ブラウザに表示するリソースが取得できれば、ブラウザとサーバーの接続は切断されます。

ブラウザは、必要な時のみサーバーに接続します。

実際、常にブラウザとサーバーを繋いでおく事もできるのですが、今回は、もっとも基本的な処理を扱います。

サーバーはテキストを出力する

サーバーからは、html、css、javascriptのテキストが出力されます。

実際には、それぞれのテキスト内容がデジタル化された状態(0、1のデータ)でサーバーからブラウザへ送られます。

テキストをデジタル化する処理は、Webサーバーソフトが行います。

実際に開発するのは、htmlを作るための処理です。

ブラウザはテキストを解析する

ブラウザは、サーバーから受け取ったテキストを解析してサイトを表示します。

まず、ブラウザは、htmlで画面構成を解析します。

次に、cssから画面に装飾を行います。

javascriptは、画面の動作を定義します。

まとめ

つまり、サーバーとブラウザは、テキストを受け渡すことでサイトを表示しているのです。

そのテキストを作成することが、Webサイトの開発となるのです。

では、今日はこの辺で。


2020年3月27日金曜日

プログラマに必要なマインド

こんにちは。

今日は、プログラマに必要なマインドについて書いてみようと思います。

結論から言うと、以下になります。

  • 自分ならどうやって動かすかを考える
  • 動かない理由を考える
  • 考えることにストレスを感じない
この3点は、私が大切にしているマインドです。

自分ならどうやって動かすかを考える

私は、動いている物を見ると、どうやって動いているのだろう、というのが気になります。

まず、興味を持つことが、プログラマに必要なマインドだと私は考えています。

そこから、私ならどうやって動かすかを考えます。

まずは、自分でロジックを考えてみます。

そうすることで、実際にフレームワークを使う時に新しい知識がスンナリと入ってきます。

動かない理由を考える

プログラムは、書いたようにしか動きません

そこに、論理的な間違いがあった場合は動きません。

そこを考えることができないと、先に進むことができません。

つまり、動かない理由を考えることは、プログラマにとって必要なマインドなのです。

簡単に解決できる場合もありますが、デバッカツールを使っても分からない時もあります。

そこを、論理的に考え修正し先に進める必要があるのです。

考えることにストレスを感じない

上にも書いたように、長時間、論理的に考えることがよくあります。

その時間を楽しめるかどうかなのです。

考えることにストレスを感じていると、すぐに潰れてしまいます。

私も、長時間考えることを楽しめれているかは分かりません。

多分、少しずつストレスを感じているのかもしれません。

そのため、適応障害になったのかもしれません。

でも、考えている時間は、自分なりに楽しめれていますよ。

まとめ

私も、上に掲げた3つのマインドを全て持っている訳ではありません。

でも、だからこそ、この3つのマインドの必要性が分かるのかもしれません。

逆に言うと、上の3つのマインドを全て持っていなくても、プログラマにはなれるのです。

後天的に、上の3つのマインドを身に付けることができるのです。

では、今日はこの辺で。

2020年3月26日木曜日

プログラミングを勉強する時に大切なこと

こんにちは。

今日は、プログラミングを勉強する時に大切なことについて書いてみます。

結論から言うと以下になります。
  • まずは1つのプログラム言語をマスターする
  • フレームワークは学ぶ必要ない
  • Linuxコマンドをマスターする
この3点に注力すれば、3ヶ月でそこそこ動くプログラムを作ることができるようになります。

これは、社会に出たばかりの自分に伝えたいことです。

まずは1つのプログラム言語をマスターする

まずは、1つのプログラム言語を充分にマスターしましょう。

プログラム言語は、どの言語も似ている点が多いです。

また、基本となる処理は以下のみです。
  • 分岐
  • ループ
  • 関数
基本となる処理については、過去に書いた記事がありますのでそちらを参照してください。


1つのプログラム言語をマスターしてしまえば、違うプログラム言語を勉強するのも、すんなり入ってきます。

フレームワークは学ぶ必要はない

フレームワークは、初めのうちは学ぶ必要はありません。

実際に仕事をするようになると、フレームワークを使います。

しかし、企業によって使うフレームワークは違ってきます。

プロジェクトによって違う場合もあります。

なのでフレームワークを学ぶのではなく、まずは、1つのプログラム言語を十分に身に付けることを意識してください。

フレームワークは、実際に仕事をするようになってからで十分に学ぶことができます。

また、使用するフレームワークに詳しい先輩や仲間がいるので、分からないことは使いながら学ぶことが可能です。

しかし、プログラム言語を1つも知らなと仕事になりません。

Linuxコマンドをマスターする

実際にプログラマーとして仕事をすると、Linuxサーバでの作業が多いです。

開発するPCはWindowsでも、実際に動作するOSはLinuxが大半です。

Linuxコマンドが使えなと動作試験で苦労します。

Linuxは、デスクトップもありますが、コマンドで使えるようにしておきましょう。

GUIのツールがある場合もありますが、実際遅いです。

Linuxコマンドに慣れているだけで、プログラマーとしての生産性が結構違います。

まとめ

つまり、Linuxで1つのプログラム言語をとことん勉強するのが一番です。

私が社会に出たばかりの頃は、いろんなプログラム言語を勉強していました。

それに使えそうなフレームワークがあれば、いろいろと使ってみてました。

でも、フレームワークは、プロジェクトで決まっていることが多く、いろんなフレームワークを知っていてもあまり役に立ちませんでした。

結局、私はいろいろとやって遠回りをしてしまいました。

この3点に注力すれば、プログラミングの仕事は何とかなるのではないでしょうか。

では、今日はこの辺で。

2020年3月23日月曜日

アウトプットすることの大切さ

こんにちは。

今日は、アウトプットすることの大切さについて書いてみようと思います。

結論を言うと以下になります。

  • 理解が深まる
  • 人生に変化を付けられる
  • 失敗しても次へ進める
  • たまに大当たりがある
  • 行動が早くなる
私は、インプットばかりでアウトプットをしない人間でした。

でも、こうしてブログなどでアウトプットする事で、自分の理解力の低さを実感できています。

理解が深まる

自分では理解しているけど、友達に教えると難しいという経験、誰でもありますよね。

でも、誰かに説明しないといけないと思って調べたり、本を読んだりすると、結構身に入ってくるんですよね。

私も何度も経験しています。

兄弟に勉強を教える時とか、何でこんなことがわからないんだと思うことがよくありました。

でも一つ一つ教科書を見ながら説明していくと、自分でも理解してなかったことが解ったりということがよくありました。

大人になってからも、後輩にプロジェクトの説明をしながら自分で納得していることがよくあります。

インプットすることは、頭に知識として入っているだけで、何も役に立っていないことが多いのです。

アウトプットすることで、曖昧に理解していたことを、再度理解し直すことができます。

人生に変化を付けられる

毎日、淡々と仕事をしていると、仕事をしている意味が分からなくなることが私はよくあります。

そういう時、私は、本読むようにしています。

小説とかの本を読む事もありますが、大体、成功する本やお金持ちになる本が多いです。

読んでいるだけで、自分も成功しそうな気持ちになるので気持ちもいいんですよね。

でも、インプットだけでは、読み終わったらそこまでなんですよね。

私は、ここ数年、そういう本を読んだ後は、身近なところで、できそうなことを本の中から1つ選んで実行するようにしています。

うまくいったらそれだけで人生に変化を付けれますよね。

失敗したとしても、やっぱこの程度じゃ無理かと次の本に移れます。

失敗しても次へ進める

本に書かれていることは、著者がいろいろやって成功した内容なので、真似したところでそう簡単に成功することはありません。

でも、それを理解した上で実践すると、失敗を前提として実行しているから、失敗してもすぐに次へ進むことができるようになります。

初めのうちは、うまくいかないことを悩んだり私もしていました。

でも、失敗を繰り返しているうちに、失敗に慣れるというか、失敗してもいいかと思うようになってきました。

たまに大当たりがある

何度も本を読む、実践する、失敗するを繰り返していると、たまに成功することがあります。

それも、何度も失敗した上での成功なので、小さな成功も気分的には大当たりに感じることがあります。

私は、この大当たりがストレスを発散させてくれていたりします。

初めのうちは、失敗するとストレスが溜まっていきます。

でも、失敗を繰り返すと失敗もストレスではなくなります。

実践できた自分をほめれるようになると、失敗もストレス発散になるのかもしれませんが、私はまだそこまでではないですね。

行動が早くなる

これは、私だけかもしれませんが、失敗を前提で行動していると、行動が早くなった気がします。

それまでは、行動する前に考え過ぎで、行動が遅くなることが多かったです。

今でもたまにあるのですが、そういう時って、失敗することを前提で行動できてないんですよね。

とりあえずやってみるかくらいの勢いで行動すると、その後で手戻りも発生することがあるけど、これじゃダメだって気づくのも早いので、戻る時間があったりします。

まとめ

つまり、本などでインプットしたら、そのままアウトプットとしてみると、失敗でも成功でも何か得られるのです。

大きなリスクを取らないとうまくいかない物もあります。

でも、本に書かれている内容には、小さなリスクでもうまくいく方法が一緒に書かれています。

そうしないと、読む人がいなくなるので。

そういうのを実践して失敗を繰り返してみてください。

たまに大きな当たりあるかもしれませんよ。

では、今日はこの辺で。