---
# System prepended metadata

title: Untitled
tags: [JSPrimer輪読会]

---

## 【第18回】JSPrimer輪読会

###### tags: `JSPrimer輪読会`

- [開催概要](https://hackmd.io/OsL28Q9fS7Wa2alu3gkoaw)
- [JSPrimer輪読会 ノートまとめ](https://hackmd.io/@NRLooQz8RrqbPmaSYWZceg/r1S4p-5Ds)

------


## 2023\-2\-22(木)

### 連絡事項や確認・相談
- 

### タイムキーパー
-  maimu

### 読んだところ
- 配列の章を最後まで
### 次回
- 文字列
### 自由に使う共有スペース

### 各自の疑問点や気づき、学んだこと
- maimu
    - コードを書く際に破壊的か非破壊的かをあまり意識していなくてメンターさんからレビューで指摘されたのを思い出しました。
        - `map` を使ってるのに副作用があるコードを書いていたり・・・
        - JSのメソッドは破壊的か非破壊的かが区別しにくいため、書く際になるべく非破壊的な実装でまとめられるようにしていきたいと思った。
    - `reduce` メソッドを知らなかった。読みにくいとあったけど、使いながら慣れたい。

-　@AntiSatori 
    - 破壊的かどうか見分けがつかないのならどうせ注意しても間違うので、必要のない限り全てコピーだけで済ませたら意識する必要なくなって良いと思います。ReactのuseStateとかと同じパターンで。
    - 再帰関数で書くよりはreduceはまだ読みやすい
```TS
// 再帰関数バージョン
function recursiveSum(array: number[], acc = 0): number {
    if(array.length > 0) {
        acc += array.shift() as number
        return recursive(array, acc)
    } else {
        return acc
    }
}

// reduceバージョン
function sum(array) {
    return array.reduce((accumulator, currentValue) => {
        return accumulator + currentValue;
    }, 0);
}

console.log(recursiveSum([1, 2, 3]))
```

- @fuwa
    - 破壊的メソッドと非破壊的メソッドを意識して使わないとな〜と思いました。見分けつかないですし。
        - rubyの！は習慣であって強制力は無いです
            - ですよね〜!つければいいってものじゃないですし。。
    - `reduce(累積値, 要素, インデックス, 配列)` で配列の要素の合計値を返すことができる。引数多い。
    - `Array-likeオブジェクト`がArrayのプロトタイプオブジェクトを持ってたり持ってなかったりするのふわっとしてるなぁ
- dawa
    - letで宣言した変数は再代入が可能なため、意図しない箇所で変数の値が変更され、バグの原因となることがある。
    - 破壊的、非破壊的を意識してコード書こうと思いました。
    - メソッドチェーンは代入する変数名で表せる処理の範囲で利用するのが好ましい。

- LEF
    - 今日の輪読会を聞いていて思い出したのですが、競技プログラミングの問題をJavaScriptで解こうとしたときに、RubyやPythonと違ってコードの記述量が長くなってしまう傾向があって（他の方の回答例を見ていてもコードが長くなっている場合が多くて）、複雑なロジックを組み立てるときにJavaScriptはつらい気がちょっとだけしました。
        - 便利関数は自分で定義出来るのでそんなに気にならないと思います。それよりも型があるかどうかとかエコシステムが成熟しているかどうかの方が大切そう。
      - この内容と関連してなのですが、最近はNestJSなどTypeScriptでバックエンドも書いていこうという流れをそこかしこで観測していて、バックエンドをJavaScript（TypeScript）で書くときに、この上記の問題（ロジックを書きにくい）という問題をどのように解決しているのか、ということで最近は疑問を持っています。もしTypeScript（JavaScript）に詳しい方がいたら、このあたりをどう解決されているのかお訊きしたいです。（長くなっちゃった💧） 
            - ライブラリとか上手く使うと解決できる部分もあると思いますが、依存管理面倒ですよね、、
            - IO周り面倒なイメージ
            - 最近「実践Node.js入門」という本読んでますが、この本ではバックエンドからフロントエンドまで一気貫通で開発する時のあれこれが書いてあって勉強になりました。(でもRailsとかと比べるとやっぱりたくさん記述しますね)
- haruguchi
    - 昔、破壊的メソッドを破壊的メリットと思って、めっちゃ良いやつなんやーと思ってたことがありました。
        - www 
        - 🥹

### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK)
- dawa
    - 利用者が課金していてそのアプリがないとサービスが受けられない形のサービスをもし引き継ぎてがいなくなったとき、どのように廃止？するのかなと疑問に思いました。 

- maimu
    - いま、プログラマー脳という本を読んでいるのですが、とても面白い。おすすめです。
        - Ankiというフラッシュカード作成アプリが紹介されていて試しに使ったらPCとスマホを同期できて便利でした。
    - チーム開発でテスト結果が文字列でベタ書きされていた箇所を変数に変えて直していたのですが、ベタ書きの方がわかりやすいのかな〜と思ったり、ちょっと迷いました。

- @fuwa
    - これからスーパーに半額弁当を買いに行ってきます。節約た〜のし〜！

- haruguchi
    - AtCoderで入茶しました。次は緑を目指します！
        - 🎉🎉🎉

- @AntiSatori
    - ＠lefさん今からReactのレビュー返信するのでお待ちください。。。
        - 承知しました！😊
         - www
## 2023\-2\-23(金)

### 連絡事項や確認・相談
- 

### タイムキーパー
-  maimu

### 読んだところ
- 
### 次回
- 
### 自由に使う共有スペース

### 各自の疑問点や気づき、学んだこと
-

-

-

-
### 本日の振り返り(よかった点・次回に向けての改善点・今の気分などなんでもOK)
-

-

-

-