5月4週
土曜:5h
- 今日も一日実装
日曜:5h
- 今日も一日実装
月曜:11h
- 共通のエラーメッセージ実装
関数型プログラミング
const arr=[1,2,3,4,5,6,7,8]; console.log(arr.map(n => n * 2)); // [ 2, 4, 6, 8, 10, 12, 14, 16 ] console.log(arr.filter(n => n % 3 === 0)); // [ 3, 6 ] console.log(arr.find(n => n > 4));// 5 console.log(arr.every(n => n !== 0));// true console.log(arr.some(n => n > 8));// false console.log(arr.includes(5)); // true console.log(arr.reduce((n, m) => n + m)); // 36 console.log(arr.sort((n, m) => n < m));// [ 8, 7, 6, 5, 4, 3, 2, 1 ]
- map() は対象の配列の要素一つ一つを加工した新しい配列を作る
- filter() は条件に適合する要素だけを抽出して新しい配列を作る
- find() は条件に適合した要素をひとつだけ取り出す。見つからない場合はundefindを返す ・ every() はすべての要素が条件を満たすかを真偽値で返す
- some() は条件を満たす要素がひとつでもあるかを真偽値で返す
- includes() は指定した要素が含まれるかを真偽値で返す
- reduce() は配列の要素を、与えた式で畳み込んだ値を返す
- sort() は各要素を、与えた条件によって並び替えた新しい配列を返す
高階関数
- 高階関数とは、引数に関数をとったり、戻り値として関数を返したりする関数のこと
- 例えば、filterメソッドは引数にn => n % 3 === 0という
無名関数
を受け取っている
const arr=[1,2,3,4,5,6,7,8]; console.log(arr.filter(n => n % 3 === 0)); // [ 3, 6 ]
戻り値として関数を返したりする
の部分は
const hof = (ex, fn) => { return n => fn(n + ex); }; const plusOneDouble = hof(1, n => n * 2); console.log(plusOneDouble(4)); // 10
- 1ブロック目:関数hofは第一引数に数値、第二引数に関数を受け取り、引数を受け取る関数を返す。
- 2ブロック目:第一引数に1、第二引数にn*2する関数を渡す。
- 第3ブロック:n(4)を関数に渡して、1+4をしてから関数n2が実行されるため52が実行されて10が出力される
クロージャー
- 目的:グローバル変数を作成せずに外部(子関数)から親関数スコープの変数へアクセスする方法
- ポイント:counterMakerが最後に関数を返しているいこと。
const count = counterMaker(1)
の中身は関数。
const counterMaker = (initialCount) => { let c = initialCount; const increment = () => c++; return increment; }; const count = counterMaker(1); console.log(count(),count(),count()); //123
ジェネレータ
- Redux-Sagaを使用する際に書くので飛ばす
カリー化
const curriedMulti = n => { returnm=>n*m; } console.log(curriedMulti(2)(4)); // 8
- n(2)を引数に取り、nmを返す。そして、m(4)を引数にとり、24している
(4)の部分がmを引数にとって、返ってきた関数にぶつけている箇所
returnを省略するとこんな感じ
const simpleCurriedMulti = n => m => n * m; console.log(simpleCurriedMulti(2)(4));// 8
- 部分適用
- ×3するだけの関数を変数に代入し、その変数に第二引数を与えて計算結果を出す
constmulti=n=>m=>n*m; const triple = multi(3); console.log(triple(5)); // 15
火曜:11h
- json-serverでエラーハンドリングをテストしたい時
server-jsonでエラーハンドリング
- server.jsを作ってこんな感じでレスポンスするファイルの中身(mock.json)を読み込む
const jsonServer = require('json-server') const server = jsonServer.create() const router = jsonServer.router('mock.json') const middlewares = jsonServer.defaults() const db = require(`./mock.json`) server.use(middlewares) // Add custom routes before JSON Server router server.get('/echo', (req, res) => { res.jsonp(db.list) }) server.use(router) server.listen(8000, () => { console.log('JSON Server Port is 8000 running') })
golang久々に再開
- docker on golangの環境構築でずっとモジュールがないよ的なこと言われていた。。。
go mod init app
でgo.modを作らないといけなかった・・・
水曜:11h
- nullチェック構文
{ servicePriceMax: servicePriceMax || '' }
- こうやって書くとservicePriceMaxがnullまたはundefinedのときは''が設定される
木曜:11h
- テストデータの出しわけ考え方
- 例えば、認証時の電話番号の1桁または2桁に意味を持たせる(1桁目は性別・2桁目は料金プランとか)
金曜:11h
- テストケース作成
週次報告
- 年間(2019/8~2020/8)目標時間(業務での設計・実装含む):3380h
- 今週を含む累積時間:2470h
- 週次目標時間:65h
- 週次実績時間:65h
- 何を得たか:flutter基礎・capreseデプロイ検討・ライブラリの改造
- 何が必要か:golang基礎・認証の知見・Nuxt・React・テスト手法の取得
- 来週の目標:新機能追加