そーくのつれづれぶろぐ

web系エンジニアの勉強したことなど

【読書メモ】イラスト図解式 この一冊で全部わかるWeb技術の基本

イラスト図解式 この一冊で全部わかるWeb技術の基本

概要

所感

  • 思ったより知らない/抜けている情報があり読んで良かった...
  • ほどよく新しい概念も紹介されているし、IT未経験者にはとっつきやすい印象
  • 基本情報処理などの知識がなくてもざっくりwebの知識、概念がわかる
  • ただの基本説明だけでなく実用として使われている/使われていないが軽く書かれているのが印象的

動機

  • 会社にあった
  • 復習がてら読んでみようか

新しく得た内容

  • Webの設計思想

    • RESTful
      • 統一性インタフェース/アドレス可能性/接続性/ステートレス性
    • セマンティックWeb
      • Webページの情報に意味を付け加える
        • webページは簡単に言うとどんな内容を表すのか
  • HTTP/1.1おさらい

    • HTTPキープアライブ
      • 1webページで発生する複数リクエスト/レスポンスを同一のTCPコネクション内で行う
    • HTTPパイプライン
      • 1webページで発生する複数リクエストを並列に送る(前まではレスポンスが帰るまで他のリクエストは投げられなかった(直列だった))
  • HTTP/2と1.1との差分(改良点)

    • (HTTP2について)2015年5月に標準化
    • ストリームによる多重化
      • before : HTTPパイプラインで多重化(並列にリクエストを送る)してはいたが、不十分だった
        • リクエストが来た順番をレスポンスも準ずる必要があるため、最初のリクエストに対するレスポンスが大きい場合は後続のレスポンスはその処理を待たなければならない
      • after : TCPコネクション上に仮想的にストリームというさらなるコネクションの場を提供することで、before時の順番を守るということを考慮しなくてもよくなった→さらなる待ち時間の短縮
    • バイナリ形式
    • 1.1まではすべてのデータはテキスト形式である必要があったが、バイナリデータのまま送れるようになった
    • ヘッダー圧縮
    • HPACKという、前回のヘッダ情報の差分のみを送る方法でヘッダ自体を圧縮する
    • サーバプッシュ
      • webページに複数の画像などの、従来でいう複数のリクエストが必要なwebページに対し、一番最初のリクエストが来た時点でサーバ側がwebページに必要なレスポンスを返すよう動く仕組み
  • HTTPSSSL/TLSハンドシェイクの流れ

    • 暗号化方式は多数に渡るため、実際の暗号化通信を行う前に両者で取り決めを行う
    1. クライント/サーバ間で暗号化方式の決定
    2. 通信相手(サーバ)の証明
    3. 鍵の交換
    4. 暗号化方式の最終確認
 ```

 - CDN (Contents Delivery Network)
   - コンテンツキャッシュサーバの集合体. エンドユーザからみると一つのキャッシュサーバに見えるようになっている。実際はアクセス元に最も近いキャッシュサーバが採択され、必要に応じて応答を行う

 - スマホアプリは大きくは2種類
   1. WebViewアプリ
     - スマホのブラウザを介してアプリの表示を行う
   2. ネイティブアプリ
     - スマホのブラウザ等は介さず、viewに関する部分はアプリ内部で処理を行い生成し、データの処理などはweb APIを通してやり取りを行うタイプ

 - ”情報セキュリティ”とは下記を3点を維持すること
    1. 機密性
    2. 完全性
    3. 可用性

 - 脆弱性おさらい
   - パスワードクラッキング ... 当たりをつけたパスワードでログインを試み、ID/PASS情報を入手する攻撃
     - ex) **ブルートフォース攻撃** ... ランダムな可能性のある文字を片っ端から試す方法

ウェアラブルトラッカー「fitbit Charge4」1ヶ月使用したけど買ってよかった。

www.fitbit.com

1ヶ月弱使用しましたが、買ってよかったと思います。

動機

不定愁訴(動悸・めまい・脚の不定期の痛み(週1,2)・疲れやすい・急な肩こり/頭痛など)が多く、 日常に不便を感じることにずっとコンプレックスを持っていたので 不調の原因がどこにあるのかをデータで確認した上で効果的に健康になりたい、 という動機でスマートウォッチの購入を検討し始めました。 主に以下を満たすものを探したところ、fitbitにいきつきました。

  • バッテリーの持ち
    • 持ちが短いとつけ続ける習慣がつかなくなりそうなので
  • 軽量
    • 腕時計をつける習慣がないので違和感を覚えたくなかった
  • ラッキングするデータ
    • 運動量/睡眠の質/心拍数

仕様と実際の使用感に差異があったか : なし

バッテリーの持ち

問題なし。公式ではGPSなしだと7日間と書いてあったが、ほぼほぼ同じくらいです。
充電はお風呂に入っている一時間で50%くらい(かそれ以上)充電できるので優秀かと思います。
充電が終わってないから待っている間に腕時計をつけなくなる...というのはあまりなさそうです。
ただ手首に接する本体側の汗による汚れが結構つくので気になる人は気になりそうです。

軽量

問題なし。大きな違和感はないので満足しています。

ラッキングするデータ

 精度は特に違和感なし!明らかな精度劣化などは今の所感じていません。

生活で変わったこと

  1. 食事見直しのモチベーションアップ

消費カロリーと摂取カロリー(手入力)で日常のカロリー収支が可視化されるので以前よりなにを食べてなにを減らすべきか明確になりました。消費カロリー > 摂取カロリーに努めて一ヶ月生活したところ、体重1kg減, 体脂肪率0.5%減しました。

  1. 継続的な運動へのモチベーションアップ

心拍数検知によって運動すると、fitbitが褒めてくれます。 また消費カロリー可視化により運動をするメリットを思い出させてくれます。

終わりに

データ取得と可視化の恩恵を得られたので良かったなーと思います。

だべる

半年〜一年くらいかけてリングフィットアドベンチャーで筋トレしてきて、 先月からようやく20分の有酸素運動してもめまいがしないようになってきました。(えらいわたし!!!)
ようやく世間で脂肪燃焼のためのアクションでよく言われる「週2,3の20分以上の有酸素運動」ができるようになった...スタートラインまで長い...だが自分頑張った!
筋肉量つける&脂肪燃焼で体軽くなったり、脚の冷えさよならとか、起きてる時間増やせたり...効果あると思うので引き続きストレスかからない程度に継続していきたい。 引きこもりなので有酸素運動はfitboxでトレーナーとほそぼそやっていきます。

fitboxing.net

要件定義 > システム仕様を行う際のポイントをまとめてみた

元資料

www.ipa.go.jp

「システム化要求定義」は「システム仕様」と言葉を変えている。
(あまり"システム化要求定義"に馴染めなかったのでより平易に記述したつもり)

まとめ

f:id:soachr:20200823221455p:plain
システム仕様の定義ポイントまとめ

所感

業務で要件定義に関わることになったのでポイントをまとめてみた。
フェーズごとの責務がふわっとしていたのが、少し具体的になれたと感じる。

ストレスに気づき、対処する手順をまとめてみた

はじめに

疲れたときにその度に同じワードでググっている気がするので、 下の書籍を読んだ上で、自分なりにストレスに気づく〜対処するまでの基本の流れをまとめてみた。 一般的な問題解決と同じなので、あとは知る→考えるを実践しよう。(to 自分)

www.amazon.co.jp

ストレス対処法

1. 現状に気づく・分析する

  • 健康なときと比べてどのような症状が出ているかを知る
  • 症状からストレスの「ステージ」を知る
    • 対策をする緊急度を知る

f:id:soachr:20200808165300p:plain
ストレスの段階別症状とざっくり対策

対策はすべて基本的には「休め」にはなるが、ストレッサーの種類によって休養のアクションは異なる。 ので、ストレス反応がでている元を知る必要がある。

  • 休養の分類
    • アクティブレスト(適度な運動をするなど)
    • パッシブレスト(アロマをたく、半身浴するなど)

3. 原因仮説

  • 「ストレッサー(ストレスを与える元)」はなにか

    • 原因から適切なストレス対処法を知る
  • ストレッサーの分類

    • 身体的ストレッサー
      • 生物学的
        • 風邪などの一時的な病気など
      • 環境的
        • 気候など
      • 生活習慣的
        • 食生活, 睡眠など
    • 精神的ストレッサー
      • 交友関係
        • 嫉妬、けんか、いじめなど
      • 家族
        • 結婚、出産、引っ越し、同居、子供の独立など
      • 職場
        • 人間関係、転勤、異動、仕事の失敗、ノルマ達成など

4. 対処法を実践する

  • 「ストレッサー」の種類 x ストレスの「ステージ」 からどのような対処を行うべきか

    • 対処するのに時間がかかるタイプとそうでないタイプがあるので、「ステージ」を加味して対処法を選択する
  • ストレスの対処法の種類

    • 問題焦点型
      • ストレッサーをコントロールする
        • ストレッサーとなる環境などから離れる
        • ストレッサーを小さく分解して一つずつ解消する(プロジェクトのやることを小さな単位に分けて、ゴールを明確にするなど)
    • 情動焦点型
      • ストレッサーに対する自分の受け止め方を変える
        • 特定の言動にネガティブに感じてしまうのを、少しずつ感じ方を変えていくなど(認知行動療法)
          • 記事の執筆の参考資料はココにフォーカスを当てて解説をしている

終わりに

図を作るのに疲れてしまって後半は文字ベースだけになった...けれど、
気づくことができてもそれに対して適切なタイミングと対処法に行動が移せているかでいうと あまりできていないなと思ったので、今後自分自身で観測して行動に移していきたい。

健康維持したい!

【PHP7】declare(strict_types=1)の挙動

自分の言葉でメモをする。

declare(strict_types=1)の効力範囲

一言でいうと「declare(strict_types=1)を記載しているファイル内で関数を呼び出すときに厳密に型が検査される」

qiita.com

つける/つけないのふるまいの違い

引数にstringを持つshow()関数(後述参照)で試した結果が以下。

  • 文字通り型がちがうかどうかの厳密さ
  • 空、nullは通常と同じふるまい
declare(strict_types=1) なし あり
返り値 エラー 返り値 エラー
'correct word' show ! correct word - show ! correct word -
999 999 - - TypeError
'' show ! - show ! -
null - TypeError - TypeError

所感

PHPの空、nullまわりの挙動がそもそもふわっとした理解だったのでまとめておいた。
標準関数によってはnullの挙動は中でよしなに変換しているかもなので使うときはいつもどおりリファレンスの確認が必要だなと感じた。


確認用プログラムと結果

プログラム
<?php
declare(strict_types=1);

$patterns[] = 'correct word';
$patterns[] = 999; //string以外
$patterns[] = ''; //空
$patterns[] = null; //空

foreach ($patterns as $pattern) {
    try {
        echo "\n\n\n input : $pattern \n";
        echo show($pattern);
    } catch (Throwable $e) {
        echo $e->__toString();
    }
}

function show(string $a): string
{
    return "show ! $a \n";
}

結果(型チェックなし)
achr@iMac PHP_practice % php strictTypesTest.php



 input : correct word 
show ! correct word 



 input : 999 //数値
show ! 999 



 input :  //空文字
show !  



 input :  //null
TypeError: Argument 1 passed to show() must be of the type string, null given, called in /Users/soachr/practice/PHP_practice/strictTypesTest.php on line 13 and defined in /Users/soachr/practice/PHP_practice/strictTypesTest.php:19
Stack trace:
#0 /Users/soachr/practice/PHP_practice/strictTypesTest.php(13): show(NULL)
#1 {main}%     
結果(型チェックあり)
soachr@iMac PHP_practice % php strictTypesTest.php



 input : correct word 
show ! correct word 



 input : 999 //数値
TypeError: Argument 1 passed to show() must be of the type string, int given, called in /Users/soachr/practice/PHP_practice/strictTypesTest.php on line 13 and defined in /Users/soachr/practice/PHP_practice/strictTypesTest.php:19
Stack trace:
#0 /Users/soachr/practice/PHP_practice/strictTypesTest.php(13): show(999)
#1 {main}


 input :  //空文字
show !  



 input :  //null
TypeError: Argument 1 passed to show() must be of the type string, null given, called in /Users/soachr/practice/PHP_practice/strictTypesTest.php on line 13 and defined in /Users/soachr/practice/PHP_practice/strictTypesTest.php:19
Stack trace:
#0 /Users/soachr/practice/PHP_practice/strictTypesTest.php(13): show(NULL)
#1 {main}%

HSP気質のエンジニアが1ヶ月テレワークした感想と備忘録

テレワークを一ヶ月した感想、メリデメを記載する。
主観だけでいうと、オフィスより楽だと感じている。
HSP気質の人間にはテレワークはいい...と感じる。

テレワークのスタイル

  • 勤務時間 : 9:00-18:00(1h任意時間から昼休憩)
  • コミュニケーションツール
    • mattermost
      • slackライク。急を要さない情報共有や作業依頼など
    • zoom
      • チーム内のみ常時接続
    • Gsuite
      • 作成した資料をzoomしながらレビュー&その場で修正など

メリデメ

メリット

1. 通勤時間がなし

単純に2h弱/日浮くのはだいぶでかい。学生自体からずっと電車通学をしていたので、通勤時間って結構疲れるものだったんだと気づいた。

before
  • 電車の時間を気にする忙しなさ
    • 朝ごはんの準備・食べるスピード/メイクスピード/身だしなみ/歩くスピードなどの電車起点の微調整
  • 電車に乗っている時間の気配り
    • 乗客とのいさかいなどないよう周りの声などをキャッチしながら乗るのでなにか集中してすることもできず...(集中すると周りの音が聞こえなくなるタイプ)
  • ご飯の準備など家事をしたらあっという間にゆっくりする時間なく寝ないといけない
    • 時間を作るために手早く急いで準備しなくては、と思い準備するもいつの間にか寝ないと次の日に響くので、時間を作るというミッションを達成できない苦痛
after
  • 朝に心の余裕がある
    • 好きなコーヒーを淹れる時間
    • 勉強の続き
    • 本読む
    • 筋トレ
  • 就業後すぐにご飯準備できる。急がなくても余暇があるという心の安寧

2. 精神的な疲れが軽減

before
  • 家に帰ったらへとへとでなにもしないで暗闇でぼーっとして回復する、こともしばしば。(月に1回は一日寝たきりになる休日がある)
  • チームメンバーの状況、雰囲気によって疲弊する
    • トラブル対応や、対面している人の声色などで体がこわばり、目の前のことへの集中力が下がる。午後くらいには肩こり・頭痛がでる(週1以上頭痛薬飲む)
after
  • 非言語コミュニケーション(声色など)が少なくなるので、メンタル疲労が少なくなる
    • 頭痛薬服用は隔週くらいに減る
  • (疲れないので)プライベートで勉強をしたり、新しいことを自然に考えることが増える。(〜しなきゃから〜したいなになる)
    • ドットインストールで4レッスンほど勉強が進む
    • ビジネス本を数冊読む
    • 業務に使えるスクリプトを作成する(未完だけど...)
    • オンライン勉強会・トーク会への参加

デメリット

1. 共同作業が対面より進まない

仕事で詰まったときの相談はzoom常時接続で呼び出せはするが、細かいニュアンスの意思疎通がしづらいので色々説明や認識の確認に時間がかかる

2. 目が疲れる

オフィスではそれなりにMTGの移動やMTG中などでもそこまでずっと画面を見る必要はないが、 MTG=画面共有ないしは共通資料を見るのでずっと白い画面を見ることになる。気づくと疲れている。

3. そもそもチームの関係性がある程度できていないと意思疎通が困難

相手の仕事の価値観や求められているものはなにかなどは特に言語化するものではなく、
時間によってや対面で普段のしごとの姿を垣間見ることでわかるが、そういう情報は画面ごしでは伝わらない。
ある程度対面で仕事を一緒にしないと互いの求めるアウトプットが異なってストレスになる。

4. 通販の敷居が下がり、色々買い物したくなる欲が高まる

カートに入れては買わない、というウィンドウショッピングならぬブラウジングショッピングが多くなった。 ボタンひとつで買えることが恐ろしい。。。

雑感

もともと引きこもり体質(HSP体質)で体力もない人間にとってはチャンスの1ヶ月であり、とても有意義だった。ありよりのあり。

なにか仕事でやらかしたなとか、この言葉の言い方良くなかったなとか、進め方が悪かったなということもいい意味で重く受け止めすぎなくなって自分にとってはちょうどいい感じ。

【GAS】Google Apps Scriptのスクリプトエディタからピボットテーブルを作成する方法

やりたいこと

「同一スプレッドシート内にある表データから、別シートにピボットテーブルを作成する」という処理をスクリプトエディタから行う方法がわからなかったのでメモ。

方法

  1. より高度な操作を行うためのGoogle Sheets APIを有効にする(※利用規約を確認した上で有効にすること) f:id:soachr:20200509181924p:plainf:id:soachr:20200509182226p:plain
  2. 公式サンプルをそのまま利用、実行→できた!

developers.google.com

雑感

サンプルコードそのままではSheets.Spreadsheets.batchUpdate()というバッチ処理を行うAPIが呼び出せないため、エラーで落ちる。
上記のリンク内のメモ書きに「APIサービス使うなら使うように有効というのをせんならん」としっかり書いてあった。

This is an advanced service that must be enabled before use.