プログラマー的思考から無駄な時間を削減して時間を確保する!
というテーマで今回は時間の作り方について書いていきたいと思います。
プログラマーがパフォーマンスの改善を行う方法と、その考え方で日常生活で時間を作る方法に落とし込んでいきたいと思います。
プログラマーにとっての時間削減
プログラマーにとって時間削減とは、パフォーマンス改善の際に出てくる問題です。
パフォーマンスを改善するためには、大きく分けてソフトウェア側の改善とサーバー側の改善(サーバーの増強等)があります。
サーバーの増強は札束での解決策なので、今回はソフトウェア側の時間削減方法について説明していきたいと思います。
Step1 現状把握
これが全てだと言っても良いです。
どこで、何をしたときに遅いのか現状把握の把握を行います。
このフェーズでしっかりと現状を把握しておくと、後の工程が楽に進みます。
現実でもソフトウェアでも現状把握は大事ってことですね!
Step2 問題の切り分け
現状を把握してどこに問題があるのか、問題の切り分けを行います。
問題を切り分けることにより、改善すべき部分を絞り込んでいきます。
Step3 詳細確認
Step2で絞り込まれた範囲で、パフォーマンスに悪影響を与えている部分を特定します。
改善するのに必要なコスト(時間)と改善されるパフォーマンスを考慮して優先順位の高いものから修正していきます。
ざっくりとしたパフォーマンス改善の手順は以上のような感じになります。
どこらへんが遅いの??
システムのパフォーマンスのネックとなるのは、外部への通信が行われる部分であることが多いです。
内部で数値の処理を行う部分は近代のサーバーの処理速度の場合、数百万回の計算でもサクッと終わらせてしまいます。
しかし、外部へのアクセスはそうもいきません。
人間で例えるなら、頭の中で処理(内部)するのとメモを取る(外部への通信)のとでは必要な時間が違うのと同じような感じです。
そして、繰り返し処理を行っている部分も時間がかかっている事が多いです。
処理中に1回だけ通る処理を1秒短くするのも、1万回ループしている処理を一回あたり0.0001秒短くするのも同じ時間パフォーマンスを改善する事ができます。
人間だと、日常的に何度も繰り返す作業の1回あたり時間を削減することで繰り返し回数分の時間を削減できる感じですね!
システムにもよりますが、基本的にはこの2つがネックとなっていることが多いような気がします。
優先度は難易度と効果について!
実際にパフォーマンスを悪化させている部分を特定した後に、改善に必要なコストと効果を考慮して改善する箇所を決定します。
これは日常生活でも当たり前のように行われていますよね!
簡単にできて効果が大きいものをターゲットにして修正します!
また、実際の現場では、札束で解決する事も多いです!!!
つまり、お金を出してサーバーの増強ですね… なんだかんだお金の力は絶大で効果が大きい場合多いです。
サーバーのスペックは車のエンジンと同じようなもので、いくら車体重量や形状を工夫してもエンジンに馬力以上の力は出ないですよね。
どんな世界でも お金は力ってことですね!
現実に当て込んで行く!
ここまでのことを現実で考えていくと…
繰り返し作業・時間を費やしている作業を軽減すると時間の確保ができるかも!
ということですね!
まずは自分の1日の行動を記録して現状の把握を行いましょう!
一日の行動を記録するのに便利なアプリ『Toggle』の紹介記事です!
興味がある方は是非見てください!
日常生活を記録した中から、毎日繰り返している項目や時間を多く費やしている行動を優先的に分析しましょう!
毎日2時間お風呂に入っているなら、入浴時間を半分にすると1時間の時間を作る事ができますよね!(お風呂に浸かりながらブログ書いている私みたいな人もいるかもしれませんが…)
多くの時間を費やしている可能性のあるものとして挙げられるのが、Youtubeを見たり本を読んだり、ゲームをしたりという娯楽の時間です。
・娯楽の時間を削減する!
システムでは時間のロスが大きく削りやすい部分から改善していくのが基本となります。
その点では、娯楽の時間というのは時間のロスが大きく削りやすい時間となるので、一番に見直すべき項目になると思います。
日常生活で繰り返し行っている行動を削減する例を挙げてみます。
・食器洗いの時間を削減する!
食器洗いが嫌いな方は多いと思います。
手がぬれるし、時間がかかるし… めんどくさいですよね!
1人くらしの場合で1日10分を食器洗いに使っている場合、食洗器を導入することで食器洗いに費やす時間を削減することができます。
1日10分が5分になると、1ヵ月で2時間半 1年で30時間も時間を削減することができます。
また、私の知り合いにはコップや皿、お箸などを全て使い捨てのものを使用している人もいます。
環境的には良くないかもしれませんが、時短としては良い方法だと思います。
コスト的にも水道代やガス代や手間を考えるとそんなに変わらないのかもしれません…
プログラマーのパフォーマンス改善で時間を削減する方法を現実の時間削減にあてはめてみましたが、現実とあまり変わらないような結果になりました!
時間を多く費やしている項目から改善していくと、多くの時間を削減できるかもしれません!
ここまで
最後までお読みいただきありがとうございます。