[2022年2月号] Software Design(技術評論社) サマリー+個人メモ

[2022年2月号] Software Design(技術評論社) サマリー+個人メモ
みるみ

Software Design の2022年2月号について、

  • ざっくり内容紹介
  • 個人的に気になった記事やポイント

をまとめている記事です。

サマリー記事の一覧はこちら

特集①:JavaScriptの関数を極める

  • なんか珍しいくらい「The プログラミング言語の基本的解説!」って感じだった
    • でも今一番書いているのがJS(TS)なので復習兼ねてありがたく拝読した
  •  関数の作り方を熟知しよう
    • 関数の作り方3つ
      • 関数宣言 function kansu() {...}
      • 関数式 const func = funtion () {...}
      • アロー関数 const func = () => {...}
      • この記事シリーズではコード類は書かないことにしてたけど、ちょっとでも書こうとするとカオスになりますね。やめます。
    • 関数宣言&関数式とアロー関数の違い
      • コンストラクタ
        • 関数もオブジェクトなので new できる、アロー関数ではできない
      • thisの指すもの
        • 前者は呼ばれ方でthisが色々変わってくる、文脈の判断が必要
        • 後者は定義場所で静的に決まる、読みやすい
      • arguments変数の有無
        • 前者にはargumentsという可変長引数のようなものがある、配列で入ってる
        • アロー関数にはない
      • 引数が重複したとき
        • 前者は最後の値が反映される 
        • アロー関数はエラーになる
      • 関数定義と呼び出しの順番
        • 前者は定義前に呼び出してOK
        • アロー関数は定義後に呼び出さないとダメ
    • 使い分け
      • 基本的にはアロー関数を使えばいい、特にコールバック時とか有利
      • thisでイベント元を参照したいときなどは関数定義しよう
  • 意外と奥が深い引数の使い方 
    • デフォルト引数
      • 引数が省略されたときはもちろん、undefinedが入ってきたときにも反応する
    • 残余引数
      • 他言語でよく言う「可変長引数」のこと、func(...prams) でpramsに配列で全部入る、引数列の末尾に置くとあまりが全部入るよん(複数あるとエラー)
    • 分割代入
      • オブジェクトのプロパティごとにプロパティ名で一挙に代入する
    • 関数の引数がたくさんあるときはオブジェクトにしてまとめよう
      • 色んな課題を一挙に解決できるよ
      • 外部ライブラリのoptionsとかもだいたいこうだよね!
    • JavaScriptは値渡し
      • オブジェクトは違うよ!!
        • プロパティの値は同じものを参照する
        • プロパティ自体を新たな変数に代入すれば新しい値になる
  • 「関数は第一級オブジェクトである」とはどういうことか?
    • 関数は値である、これの何が嬉しい?
      • オブジェクトのプロパティに入れられる
      • 即時関数(IIFE)
        • 処理は同じでもスコープ内に閉じた変数だけで済ませられる
      • 高階関数
        • というかこれが「関数が値である」ことそのものとも言えるかも
        • filter() とかね!
      • 戻り値が関数の関数もある
        • 関数を実行したら関数が手に入る、普通だ
      • 関数は呼び出せるという特性を持っただけのオブジェクト
        • プロパティを持てるのだ
      • 関数とクラスとnewの関係
        • ここは気になったらあとで読み返してください to: 自分
    • JavaScriptで関数型プログラミングを理解する
      • 「再帰」が重要
      • 基底部
        • 再帰がないのでまずここで具体的な明示をする
          • その後に再帰を使って関数全体の問題定義をする
      • map関数
        • mapの話がここに分類されていることが理解できなかった
          • と思ったけど関数型の例として取り上げられている感じだった
      • 関数は式なので型がある、文とは違ってここにメリットがある
      • 参照透過性と副作用
        • 聞き慣れない言葉だが「参照透過性≒冪等性」と思ってよさそう?
        • 副作用は本来期待しているもの以外になにか存在する影響のこと
          • 値の算出中に他のグローバル変数を書き換えちゃったり…
      • カリー化
        • 多引数関数を「関数を返す関数」を使って実現すること
        • 関数の関数の…みたいな感じ
  • クロージャを理解する
    • 「定義時のコンテキスト(スコープチェーン)への参照を持つ関数」のこと
      • 関数の定義位置から見たその関数が参照可能な外部変数、的な
    • 関数に状態を持たせたいときに有用ですよね

特集②:GitHub Actionsで始めるCI/CD

  • あんまりちゃんと知らなかった部分だけ書いておく
  • ランナーの種類
    • GitHubホスト型ランナー
      • 標準のやつ、たぶん今もUbuntu 20.04
      • 他にはmacOSとWindows Serverがある(それぞれバージョンもある)
    • セルフホスト型ランナー
      • 文字通りの説明だった、それ以上のことは誌面では紹介されていなかった

Extra Feature

  • セキュリティキーITエンジニア流使いこなし術
    • パスワード運用に関しては死ぬほど悩んできているので特に新しいインスピレーションが湧く記事ではなかった
    • セキュリティキーというデバイスについてのお話。物理は、、、

    そのほか

    • Python試験情報局「Pythonのパフォーマンスの速度改善の手段は?」
      • Pythonの生みの親が速度改善として2倍のパフォーマンスを見込めると最近言ったらしい(しかも3.11(=次)で)
      • 実行速度が遅い理由は型推論
        • 自由に書ける分毎度型推論が必要になっている、という考え方
          • 例えば for x in xxx の xxx にはなんでも置けてしまうよね、とか
      • 数値しか扱わないならNumPyを使いましょう
    • ITエンジニア必須の最新用語解説「Policy as Code」
      • はやりの as シリーズ、IaCの子供あたり?(私見)
      • AWSにおけるポリシーステートメントとかのことかな、と思ってたけど読んだ限りでは主にCI/CDをメインとしたソフトウェア開発プロセス全体の意思決定に使うもの、みたいな感じっぽい
        • 「型を用いた言語を使う」などの表現があったので、やはり単なる権限ステートメントとは別種のもののよう
      • 主要なソリューション
        • Sentinel(HashiCorp社)
        • Open Policy Agent

    Software Design 2022年2月号

    この号の分のみ単品で読みたい方は、普通にAmazonで買うのがおすすめ。
    紙 or 電子書籍で選べます。

     

    みるみ
    みるみ

    ブロガー、ソフトウェアエンジニア。

    この「みるめも」というブログの筆者です。

    この記事へのコメント
    コメントはまだひとつもありません :)

    新しいコメントを書く

    • 必須項目はコメント本文のみですが、お名前はぜひご記入いただけると嬉しいです。
      ※メールアドレスを書いた場合も公開されることはないのでご安心ください。
    • 特定のコメントに返信したい場合は各コメントにある「返信する」ボタンからどうぞ。
    • コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください。
      ※ここ数年スパムが激化しており、誤って削除されてしまうケースが増えてきました。スパムボックスも毎日自分の目で確認するようにはしているのですが、どうしても限界があります。確実に僕に連絡を取りたい方は メールTwitter からお願いします。