@lifehacker

スポンサーリンク
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 戻り値型を省略すべき場面

前提:「全部書く」か「全部省略」か、の二択ではないまず大事なのは、戻り値型は「常に書くべき」でも「常に省略すべき」でもない、ということです。すでに話してきたように、外部公開の関数・複雑な処理・ジェネリ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 戻り値型を明示すべき場面

まず前提:「いつも書け」ではなく「ここぞで書く」TypeScript は戻り値型をかなりうまく推論してくれます。だから「全部に : 型 を書け」という話ではありません。大事なのは、「推論に任せると“危...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 引数と戻り値の型関係

「引数の型」と「戻り値の型」はセットで設計するものまず一番大事な前提から。関数の型は、「何を受け取って(引数)、何を返すか(戻り値)」この2つの組み合わせで決まります。function add(a: ...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – アロー関数の型推論

まず「アロー関数の型推論」で何が起きているかアロー関数はこういう形の関数です。const add = (a, b) => a + b;const add = (a, b) => a + b;TypeS...
TypeScript

TypeScript | 関数・クラス・ジェネリクス:関数設計の深化 – 関数宣言と関数式の違い

まず「関数宣言」と「関数式」をざっくり区別する最初に形だけ見て違いを押さえましょう。関数宣言(function declaration)function add(a: number, b: numbe...
JavaScript

JavaScript | 1 日 90 分 × 7 日アプリ学習:タブ切り替えアプリ(初級編)

1日目のゴールと今日やること1日目のテーマは「タブ切り替えアプリの“いちばん小さな仕組み”を理解する」ことです。タブ切り替えアプリとは、「ボタン(タブ)を押すと、対応する画面だけが表示される」という、...
Python

Python | 1 日 90 分 × 7 日アプリ学習:数当てゲーム(初級編)

1日目のゴールと今日やること1日目のテーマは「数当てゲームの“いちばん小さい芯”を作る」 ことです。いきなり完成版は作りません。今日はまず、プレイヤーから数字を入力してもらうその数字を「大きい」「小さ...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – imperative vs declarative

「命令的」と「宣言的」をざっくり一言でいうと命令的(imperative)は、「どうやってやるか」を一歩一歩、自分で指示していく書き方です。宣言的(declarative)は、「何をしたいか」だけを宣...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – forEach の落とし穴

forEach を一言でいうとforEach は「Stream の最後に、要素 1 つずつに対して“なにかする”ための終端操作」です。System.out.println したり、外部のリストに追加し...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – 例外処理と Stream

なぜ「例外処理と Stream」が難しく感じるのかStream は「関数型っぽく、処理の流れを宣言的に書く」ための仕組みです。一方で Java の例外は「throw して try-catch で受ける...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – Optional と Stream 設計

Optional と Stream を一緒に考える理由Java でモダンなコードを書くとき、Optional と Stream はセットで設計を考えると一気にきれいになります。どちらも「要素があるかも...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – downstream collector

downstream collector ってそもそも何?downstream collector は、日本語にすると「下流の Collector」です。でも名前よりもイメージが大事で、ざっくり言うと...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – partitioningBy

partitioningBy を一言でいうとCollectors.partitioningBy は、Stream の要素を「ある条件を満たすかどうか(true / false)」で きっちり 2 つの...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – groupingBy 複数キー

「groupingBy 複数キー」でやりたいことのイメージCollectors.groupingBy の「複数キー」は、ざっくり言うと「1 つの条件じゃなくて、2 個以上の条件の組み合わせでグループ分...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – Collector の自作

Collector 自作のゴールをまずイメージするCollector を自作する、というのは「Stream の要素を、標準の toList や groupingBy では表現しづらい“自分専用の集め方...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – collect の仕組み

collect を一言でいうとcollect は、「Stream に流れてきた要素たちを、“コンテナ(List / Set / Map など)や集計結果”にまとめ上げるための終端操作」です。reduc...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – reduce

reduce を一言でいうとStream#reduce は、「ストリームに流れてくる複数の要素を、“1 つの値”に畳み込むための終端操作」です。全部を 1 つに“まとめる”イメージです。合計を出す、最...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – allMatch / anyMatch

allMatch / anyMatch を一言でいうとallMatch と anyMatch は、「Stream の要素が“条件を満たしているかどうか”を、真偽値で答える終端操作」です。allMatc...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – findFirst / findAny

findFirst / findAny を一言でいうとfindFirst と findAny は、「Stream の中から“1 件だけ”要素を取り出すための終端操作」です。どちらも戻り値は Optio...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – limit / skip

limit / skip を一言でいうとlimit と skip は、どちらも 「ストリームから流れてくる要素の“範囲”を切り取るための中間操作」 です。ざっくり言うと、limit(n) は「先頭から...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – sorted

sorted を一言でいうとStream#sorted は、ストリームに流れてくる要素を「並べ替えた新しいストリーム」を返す中間操作です。「順番を整える係」が sorted だと思ってください。sor...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – distinct

distinct を一言でいうとStream#distinct() は、「ストリームの中から“重複している要素”を取り除き、“一意な要素だけ”を残す中間操作」 です。イメージとしては、「同じ値が何回も...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – flatMap の用途

flatMap を一言でいうとStream#flatMap は、「1 つの要素から“0 個以上の要素の流れ(Stream)”を作り、それらを 1 本のストリームに“平らに”つなげる中間操作」です。ma...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – map の設計

map を一言でいうとStream#map は、「ストリームの各要素に“変換処理”を 1 回ずつ適用し、その結果から“新しいストリーム”を作る中間操作」 です。元の要素を別の形にしたいとき――文字列を...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – filter の設計

filter を一言でいうとStream#filter は、「流れてくる要素のうち、“条件を満たすものだけ”を次のステップに通す中間操作」 です。SQL でいう WHERE 句に近いイメージで、tru...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – 中間操作と終端操作

中間操作と終端操作を一言でいうとStream API の「中間操作」と「終端操作」は、“流れをつくる操作(中間)” と “流れを終わらせて結果を取り出す操作(終端)”という役割分担になっています。この...
Java

Java | Java 詳細・モダン文法:Stream API 深掘り – Stream パイプライン

Stream パイプラインを一言でいうとStream パイプラインは、「データの流れを、生成 → 中間操作 → 終端操作 という“流れ(パイプライン)”としてつなげて書くスタイル」です。for 文でゴ...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – クラス設計の考え方

クラス設計の考え方とは何かクラス設計は、「コードをどう書くか」より先に、「このクラスは何者で、何ができて、どこまで面倒を見るのか」を決める作業です。JavaScript の class は、単に「便利...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – getter / setter

getter / setter とは何か(まずイメージから)getter / setter は、「プロパティに見える“入り口・出口”の裏に、処理を仕込むための仕組み」 です。普通のプロパティはこうです...
JavaScript

JavaScript | ES6+ 文法:クラス構文 – プライベートフィールド(#)

プライベートフィールド(#)とは何かプライベートフィールドは、class の中で「クラスの外から絶対に直接触られたくない値」を隠すための仕組みです。書き方は、名前の前に # をつけます。class U...
スポンサーリンク