【2023最新】「rust」のおすすめ本!人気ランキング
この記事では、「rust」のおすすめ本をランキング形式で紹介していきます。インターネット上の口コミや評判をベースに集計し独自のスコアでランク付けしています。
Amazonで詳しく見る
紹介文
今もっとも人気があり、Google、Amazon、Microsoftも注目している新言語。C/C++にかわる安全爆速の言語。
■■C/C++の代わりとなるべき最新言語 ■■
■■その独特な仕様をわかりやすく解説。 ■■
■■これから Rust をはじめるすべての人へ■■
●いますぐ使いはじめるべきRustの5つ魅力
・とにかく実行速度が速い
・モダンな言語機能が一通り入っている
・OS から Web アプリケーションまで幅広く実装できる
・ツール群がとても充実している
・「安全性」が強力に担保されている
●Rustならではの言語仕様を完全理解
・Google、Microsoft、Amazonが いま注目する最新言語。その先進的考え方を体験する。
・バグを出させないための仕組みを知り、Rustの深淵に踏み込む。
・本書に載っているいろんな領域のサンプルで、組み込み開発からWebアプリケーションまで幅広く使われるRustを学ぶ。
・特徴的なRustの概念を完全理解する。
「ゼロコスト抽象化」「ムーブセマンティクス」「クレート」
「スレッド安全性」「パニック」「unsafe」「エディション」
「所有権」「借用」「ライフタイム」「トレイト」……
"安心安全の 爆速言語 Rust入門"
edtion 2018対応。
■Part 1 入門
■Chapter1 プログラミング言語 Rust
●1-1 Rust の魅力
●1-2 とにかく実行速度が速い
Rust は機械語に直接コンパイルされる
ガベージコレクションをもたない
「ゼロコスト抽象化」を追求している
●1-3 モダンな言語機能が一通り入っている
不変・可変を明示的に制御できる
filter, map などを使ってコレクションを操作できる
代数的データ型とパターンマッチング
強力な型推論
トレイト
●1-4 OS から Web アプリケーションまで幅広く実装できる
●1-5 ツール群がとても充実している
Cargo
エディタサポート
標準フォーマッタ rustfmt、標準リンター clippy
●1-6 「安全性」が強力に担保されている
●1-7 エディションという考え方によって互換性を担保している
●1-8 Rust の利用事例
■Chapter2 環境構築
●2-1 Webサイトで試せるRust - The Rust Playground
●2-2 開発環境を構築する
rustupをインストール
動作確認
cc
エディタ
Rust Language Server(rls)
rust-analyzer
cargo-edit
リリーストレインモデル:nightly, beta, stable
●2-3 まとめ
■Chapter3 Rustの基本
●3-1 基本的な文法
基本的な型
変数宣言
制御構文
関数
マクロ
●3-2 Rustを支える言語機能
ゼロコスト抽象化
所有権と借用
スレッド安全性
非同期処理
●3-3 クレートとモジュール
入門 クレート
入門 モジュール
●3-4 Cargo - ビルドシステム・パッケージマネージャ
サブコマンド
Cargo.toml
●3-5 テスト
assertマクロ
パニックを発生させるテスト
普段は無視するテスト
testsモジュール
testsディレクトリ
ドキュメントのテスト
■Part 2 実践
■Chapter4 プログラムを作成する
●4-1 プロジェクトの準備
アプリケーションの仕様
プロジェクトの作成
コマンドライン引数の処理
●4-2 計算ロジックを追加する
アプリケーションの枠組みの作成
逆ポーランド記法の計算ロジックの作成
●4-3 テストを書く
●4-4 エラーハンドリングを追加する
エラーをハンドリングしない実装
Resultでエラーを受け取る
独自のエラーを定義する
エラー処理クレートを使う
逆ポーランド記法計算機へのanyhowの適用
●4-5 ファイルパスの表現について
●4-6 実行パスへのインストール
●4-7 まとめ
■Chapter5 Webアプリケーションの開発
●5-1 Webフレームワークのセットアップ
Hello world!
エラーハンドリングの定義
●5-2 テンプレートエンジン
Web アプリの設計
HTML テンプレート
HTML の表示
●5-3 データベース
テーブルの設計
SQLite に Rust でアクセスする
サーバーアプリケーションでアクセスする
●5-4 Todo アプリを仕上げる
POST リクエストを受け取る
●5-5 Docker イメージの作成
Dockerfile の作成
イメージビルドの高速化
イメージサイズの削減
●5-6 まとめ
■Chapter6 WebAssembly
●6-1 WebAssemblyとは
●6-2 開発の準備
npm
cargo-generate
wasm-pack
●6-3 サンプルプログラム:マンデルブロ集合を描く
マンデルブロ集合とは
マンデルブロ集合を計算するプログラム
wasmを呼び出すJavaScriptの実装
JavaScriptから呼び出せるようにする
JavaScriptとの速度比較
●6-4 サンプルプログラム:ナンバープレースを解く
ナンバープレースとは
ナンバープレースを解くプログラム
Rustの実装
JavaScript側の実装
●6-5 まとめ
■Chapter7 GUIアプリケーション
●7-1 RustにおけるGUIの現状
GUIクレートの紹介
IcedによるGUIの実装
●7-2 ウィンドウ
プロジェクトディレクトリの準備
アプリケーション基盤の作成
main関数からの実行
●7-3 ウィジェット
ウィジェットの配置
フォントの使用
ウィンドウのサイズ変更
●7-4 メッセージ
メッセージと状態変数の定義
メッセージの送信
メッセージの受信
●7-5 サブスクリプション
レシピの作成
サブスクリプションの作成
メッセージの受信
時間の表示
完成
■Chapter8 組み込みシステム
●8-1 環境構築
ターゲットとするプラットフォームについて
クロスコンパイルの環境構築
QEMU
●8-2 Hello, world!
●8-3 Lチカ
LEDの操作方法
Peripheralsの取得
Peripheralsの有効化
GPIOの取得
LEDの操作
ウェイトを入れる
Lチカのプログラム
●8-4 embedded-hal
単一のPeripherals
クロックの凍結
型制約されたピン設定
その他のデバイス
●8-5 組み込み向けクレート
alloc
heapless
パニックハンドラ
cortex-m-rtic
●8-6 参考資料
■Chapter9 開発ツール
●9-1 実践Cargo
プロジェクトのディレクトリ構成
フィーチャ
依存クレートの修正
ワークスペース
サブコマンド
●9-2 フォーマッタ・リンター
rustfmt
clippy
●9-3 コードカバレッジ
cargo-tarpaulin
●9-4 ベンチマーク・プロファイラ
cargo bench
criterion
cargo-profiler
flamegraph
hyperfine
●9-5 CI
Travis CI
GitHub Actions
■Chapter10 プロダクトをリリースする
●10-1 シングルバイナリ
●10-2 ビルドの再現性
Cargo.lock
rust-toolchain
●10-3 バイナリサイズの最適化
最適化のオプション
サイズ比較
●10-4 Profile-Guided Optimization
実行方法
●10-5 クレートの信頼性
rustsec.org
cargo-audit
cargo-crev
●10-6 ファジング
cargo-fuzz
●10-7 プライベートなクレート
cargo publishを禁止する
代替レジストリ
■Part 3 Tips
■Chapter11 いろいろなRustの発展的Tips
●11-1 マクロ
宣言的マクロ
手続きマクロ
関数的マクロ
deriveマクロ
アトリビュートマクロ
●11-2 FFIによる他言語との連携
サンプル:RustからC言語の関数を呼ぶ
サンプル:RubyからRustの関数を呼ぶ
FFIを使う上での注意点
その他のバインディングを作るクレート
まとめ
●11-3 パニック
自己診断としてのパニック
パニックとResultの使い分け
パニックが起こるとどうなるか
パニックを捕捉する
巻き戻しが起こらない場合
パニックハンドラを置き換える
パニックとポイズニング
パニックのまとめ
●11-4 unsafe
UB (未定義動作)
安全性と健全性
unsafeアンチパターン
契約で理解するunsafe
unsafeの2つの使い方
妥当性不変条件と即時UB
unsafeをできるだけ安全に使うために
valgrind
デバッガを使う
サニタイザ
参考資料
unsafeのまとめ
●11-5 Rust のエディション
エディションとは何か?
エディションの歴史
今後予定されているエディション
エディション間の互換性について
Cargo でのエディションの設定方法
●11-6 Rust製のOSS
ripgrep
Alacritty
Rust製のOSSでよく使われるライセンス
cargo-license
●11-7 Rust のコミュニティ
Rust のコミュニティについて
Rust 商標ポリシーについて
最新情報を得るために
日本のコミュニティの現状
●11-8 Rust と競技プログラミング
●11-9 Rustを仕事で使う
業務で使われている例
自社の業務にRustを取り入れるためのヒント
まとめ
索 引
■Column 目 次
機械語とは何か
ゼロコスト抽象化
関数型プログラミング言語 Rust?
ビルトインマクロ
PartialEqとPartialOrd
2015エディションのモジュールシステム
Rust の文字列型
Rust におけるasync/await と非同期ランタイム
Webフレームワーク
汎用 SQL ライブラリ: diesel
Rust とサーバーレスアプリケーション
Rust と Prometheus
wasm-bindgen
web-sys
Tierについて
xargoとstd Aware Cargo
cross によるクロスコンパイル
svd2rust
RustとOS
バイナリにリビジョンを埋め込む
清潔なマクロ
2015エディションのマクロと名前解決
Amazonで詳しく見る
紹介文
Rustは、安全性、高速性、並行性に優れた言語。概要と用途について書かれた書籍で、ほとんどの機能を詳細にカバーした決定版。
安全性、高速性、並行性に優れた言語Rustの決定版の改訂!
次世代ブラウザ開発用にMozillaによって開発されたRustは、C/C++並みのパフォーマンスと低レベルの制御能力に加え、メモリとスレッドの安全性を担保し、さらに並行性にも優れるといった特徴を持つ、優れた言語です。本書はMozillaで実際にRustを使ってFirefoxを開発している著者による、言語の概要と、用途について書かれた書籍で、Rustのほとんどの機能を詳細にカバーします。Rustのメジャーバージョンアップにより非同期処理が可能となったことに対応し、第2版では新たに非同期の章を設け、この機能を詳細に解説しています。
Rustは、安全性、高速性、並行性に優れた言語。概要と用途について書かれた書籍で、ほとんどの機能を詳細にカバーした決定版。
Amazonで詳しく見る
紹介文
注目度の高い次世代のプログラミング言語Rustの日本では初めての書籍。
注目度の高い次世代のプログラミング言語Rustの決定版!
Rustは次世代ブラウザ開発用にMozillaによって開発されたプログラミング言語です。C/C++並みのパフォーマンスと低レベルの制御能力に加え、メモリとスレッドの安全性を担保し、さらに並行性にも優れるといった特徴を持つ、いま最も注目度の高い言語です。C/C++に不満を持ちながらも使い続けているシステムプログラマには、とても魅力的な言語と言えます。世界的に注目度が高く、英語では次々に解説書が発刊されていますが、日本では初めてのRust本となります。
Amazonで詳しく見る
紹介文
Rustは2015年に安定版がリリースされた新しい言語です。静的型付けと関数型言語などにみられる高度な抽象化のしくみを取り入れており、高品質で再利用性の高いプログラムを開発できます。さらに、ハードウェア資源についてC/C++と同等の効率の良い制御ができますが、決定的に違うのは、安全性をかなり重視しています。つまりRustは開発者の生産性を高めつつ、性能やハードウェア資源の効率を最大限に発揮するという、従来の言語では相反する要件を同時に満たす、数少ないプログラミング言語の1つなのです。本書はこの注目のプログラミング言語Rustの入門書です。この1冊でRustの言語仕様から開発現場で必要となる知識までを丁寧に解説しています。
第1部 基礎編
第1章 Rustの特徴
1-1 Rustの特徴
1-2 最も愛されている言語
1-3 Rustの起源
コラム 名前の由来
1-4 なぜRustなのか?
1-4-1 トップクラスのパフォーマンス
1-4-2 安全なシステムプログラミング言語
1-4-3 生産性を高めるモダンな機能
1-4-4 シングルバイナリ、クロスコンパイル
1-4-5 他言語との連携が容易
1-5 導入事例
1-5-1 Dropbox - Magic Pocket
1-5-2 ドワンゴ - Frugalos
1-5-3 npmレジストリ
1-5-4 AWS Firecracker
1-5-5 Mozilla Firefox
第2章 はじめてのRustプログラム
2-1 インストール
2-1-1 本書が対象とする環境
2-1-2 ツールチェイン、リンカ、ABI
2-1-3 rustup
2-1-4 Rustツールチェインのインストール
2-1-5 リンカのインストール(Linux)
2-1-6 リンカのインストール(macOS)
2-1-7 リンカのインストール(Windows MSVC)
2-2 Hello Worldプログラム
2-2-1 パッケージの作成
2-2-2 binクレートとlibクレート
2-2-3 Cargo.tomlファイル
2-2-4 src/main.rsファイル
2-2-5 パッケージのビルド
2-2-6 プログラムの実行
2-2-7 プログラムの内容
2-3 ソースコードエディタの導入
2-3-1 Rustをサポートする主なエディタとIDE
2-3-2 Visual Studio Code(VS Code)の特徴
2-3-3 VS Codeのインストール
2-3-4 Rust RLS拡張機能のインストール
2-3-5 基本的な使い方
2-4 RPN計算機プログラムとデバッガによる実行
2-4-1 プログラムの作成
コラム ジェネリクスにおけるトレイト境界について
2-4-2 デバッガのセットアップ(LinuxとmacOS)
2-4-3 CodeLLDB拡張機能のインストール
2-4-4 デバッガのセットアップ(Windows MSVC)
2-4-5 パッケージごとの設定
2-4-6 デバッガでRPN計算機を実行
コラム ターミナルからデバッガを実行する
2-5 ツールチェインの補足情報
2-5-1 プラットフォーム・サポート・ティア
2-5-2 リリースサイクルとリリースチャネル
2-5-3 エディション
2-5-4 rustupのその他の機能
2-5-5 Cargoの主なコマンド
第3章 クイックツアー
3-1 プログラムの概要
3-1-1 実行例
3-2 並列ソートに適したバイトニックソート
3-2-1 アルゴリズム
3-2-2 Pythonによるサンプル実装
3-2-3 Pythonプログラムの実行
3-3 第1段階:初歩的な実装
3-3-1 モジュール構成について
3-3-2 関数の引数を定義する
3-3-3 識別子の命名規則について
3-3-4 コーディング規約について
3-3-5 sort関数の本体を実装する
3-3-6 残りの関数を実装する
3-3-7 単体テストを書く(数値のソート)
3-4 第2段階:ジェネリクスでさまざまなデータ型に対応させる
3-4-1 テストケースを追加する(文字列のソート)
3-4-2 型パラメータを導入してジェネリクス化する
3-4-3 大小比較可能な型に限定する
3-4-4 コンパイラが型に関するバグを防いでくれる
3-4-5 列挙型で使いやすくする
3-4-6 match式による場合分け
3-4-7 エラーを返す
3-5 第3段階:クロージャでソート順をカスタマイズ
3-5-1 テストケースを追加する(学生データのソート)
3-5-2 クロージャの構文について
3-5-3 sort_by関数を実装する
3-5-4 クロージャの型について
3-5-5 既存の関数を修正する
3-5-6 トレイトを自動導出する
3-5-7 乱数で巨大なテストデータを生成する
3-5-8 イテレータチェインでスマートに
3-5-9 ソート結果を確認する
3-6 最終形:並列ソートの実現
3-6-1 標準ライブラリのマルチスレッドAPI
3-6-2 並列データ処理ライブラリRayon
3-6-3 Rayonを導入する
3-6-4 SyncトレイトとSendトレイト
3-6-5 所有権
3-6-6 sub_sort関数の並列化
3-7 仕上げ:ベンチマークプログラム
第4章 プリミティブ型
4-1 型の分類
コラム コードの表記法について
4-2 スカラ型
4-2-1 ユニット
4-2-2 真理値
4-2-3 固定精度の整数
4-2-4 固定精度の浮動小数点数
4-2-5 文字
4-2-6 参照
4-2-7 生ポインタ
4-2-8 関数ポインタ
コラム 関数ポインタとクロージャ
4-3 プリミティブな複合型
4-3-1 タプル
4-3-2 配列
4-3-3 スライス
4-3-4 文字列スライス
第5章 ユーザ定義型
5-1 スタック領域とヒープ領域
5-2 標準ライブラリの主な型
5-2-1 Box(std::boxed::Box)
5-2-2 ベクタ(std::vec::Vec)
5-2-3 その他のコレクション型
5-2-4 String(std::string::String)
5-2-5 範囲(std::ops::Range)
5-2-6 オプション(std::option::Option)
5-2-7 リザルト(std::result::Result)
5-3 新しい型の定義と型エイリアス
5-3-1 型エイリアス
5-3-2 構造体(struct)
5-3-3 列挙型(enum)
5-3-4 構造体と列挙型のより詳しい情報
5-4 型変換
5-4-1 型キャスト
5-4-2 複合型の型変換
5-4-3 Transmute(std::mem::transmute)
5-4-4 型強制
第6章 基本構文
6-1 準備
6-1-1 パッケージの作成
6-1-2 パッケージの構造
6-2 コメント
6-3 うるう年と平年
6-4 use宣言
6-5 関数
6-5-1 関数定義
6-5-2 式と文
6-5-3 関数の実行
6-5-4 メソッド
6-5-5 関連関数
6-6 束縛とミュータビリティ
6-6-1 束縛とは
6-6-2 ミュータビリティ
6-6-3 スコープ
6-6-4 シャドウイング
6-6-5 定数とスタティック変数
6-7 演算子
6-8 分岐
6-8-1 if式
6-8-2 match式とパターン
6-8-3 if let式
6-9 繰り返し
6-9-1 loop式
6-9-2 while式
6-9-3 while let式
6-9-4 for式
6-10 クロージャ
6-11 アトリビュート
6-12 モジュールとアイテムの可視性
6-12-1 modキーワードとpubキーワード
6-12-2 モジュールをファイルとして切り出す
第7章 所有権システム
7-1 所有権システムの利点
7-1-1 ガベージコレクタが不要になる
7-1-2 メモリ安全性がコンパイル時に保証される
7-1-3 リソースの自動解放
7-2 所有権システムの概要
7-3 値の所有者
7-4 値のスコープ
コラム 値の破棄の意図的な遅延とリソースリーク
7-5 ムーブセマンティクス
7-6 コピーセマンティクス
7-6-1 Copyトレイトを実装する主な型
7-6-2 CopyトレイトとCloneトレイトの違い
7-7 借用:所有権を渡さずに値を貸し出す
7-8 参照のライフタイムと借用規則
7-8-1 新旧2種類の借用チェッカ
7-9 ライフタイムの詳細:簡単なベクタの実装
7-9-1 構造体の定義
7-9-2 new関連関数とwith_capacity関連関数
7-9-3 lenメソッドとcapacityメソッド
7-9-4 pushメソッドとgetメソッド
7-9-5 参照のライフタイムを確認する
7-9-6 ライフタイムの省略
7-9-7 staticライフタイム
7-9-8 popメソッドと借用からのムーブアウト
コラム 列挙型とnullableポインタ最適化
7-9-9 growメソッド
7-9-10 イテレータと所有権
7-9-11 可変の参照と不正なポインタの回避
7-9-12 構造体や列挙型のライフタイム
7-10 共同所有者を実現するポインタ:Rc型とArc型
7-10-1 循環参照の問題
7-11 内側のミュータビリティ
7-11-1 使用例:TLSとRefCellでスレッド固有の可変の値を持つ
7-11-2 使用例:RwLockで可変の値を複数スレッドで共有する
コラム アリーナ・アロケータ
7-12 クロージャと所有権
第8章 トレイトとポリモーフィズム
8-1 トレイトの基本
8-1-1 基本的な使い方
8-1-2 トレイト境界
コラム ジェネリクスの記法の表現力
8-1-3 トレイトの継承
8-1-4 デフォルト実装
8-1-5 トレイトとスコープ
8-1-6 トレイト実装のルール
8-1-7 自動導出
8-2 トレイトのジェネリクス
8-2-1 ジェネリクスの型パラメータと具体的な型
コラム トレイトとオーバーロードの関係
8-3 静的ディスパッチと動的ディスパッチ
8-3-1 ジェネリクスと静的ディスパッチのしくみ
8-3-2 トレイトオブジェクトと動的ディスパッチのしくみ
8-4 存在impl Trait
コラム 全称と存在
8-5 トレイトとアイテム
8-5-1 関連関数
8-5-2 関連定数
8-5-3 関連型
コラム ジェネリクスか関連型か
8-6 標準ライブラリのトレイト利用例
8-6-1 std::io::Write
8-6-2 std::convert::From
8-6-3 std::iter::Iterator
8-6-4 std::ops::Eq
8-6-5 std::os::unix::fs::FileExt
8-6-6 std::marker::Sized
8-7 演算子のオーバーロード
8-8 トレイトのテクニック
8-8-1 StringとInto
8-8-2 オプショナル引数
8-8-3 パスネーム
8-8-4 &strとstr
8-8-5 Newtypeによるトレイト実装制約の回避
8-8-6 列挙型を使った型の混合
第2部 実践編
第9章 パーサを作る
9-1 四則演算の処理系の作成
9-1-1 パーサを構成する要素
コラム パーサの種類
9-1-2 処理する計算式について
9-1-3 全体の設計
9-2 字句解析
9-2-1 トークン
9-2-2 字句解析器の実装
9-3 構文解析
9-3-1 抽象構文木の実装
9-3-2 構文解析器の実装
9-3-3 エラー処理
9-4 抽象構文木の利用
9-4-1 評価器の作成
9-4-2 コードの生成
第10章 パッケージを作る
10-1 コマンドラインツールの作成
10-1-1 Cargoとプロジェクト、パッケージ、クレート
10-1-2 マニフェストファイルの修正
10-1-3 プログラムの作成
10-1-4 ライブラリとバイナリへの分割
10-2 ドキュメントを書く
10-2-1 ドキュメントの構文
10-2-2 ドキュメントの書式
10-2-3 ドキュメント文章の記載
コラム cargo docの便利なオプション
10-3 テストの追加
10-3-1 簡単なテストを書く
10-3-2 さまざまなテストを書く
10-3-3 テストを書く場所
コラム クレート内テストとクレート外テスト
10-4 パッケージを公開するために
10-4-1 パッケージのビルド
10-4-2 作業のコミット
コラム Cargo.lockはコミットすべき?
10-4-3 リモートリポジトリの追加
10-5 自動テストを行う
コラム CIのアレコレ
10-5-1 Travis CI
10-5-2 AppVeyor
コラム いろいろなCIサービス
10-6 パッケージをリリースする
10-6-1 マニフェストファイルの修正
10-6-2 最終確認
コラム パッケージ名の-と_
10-6-3 crates.io での公開
10-6-4 バイナリのリリース
第11章 Webアプリケーション、データベース接続
11-1 RustとWebの現状
11-1-1 同期と非同期
11-1-2 FuturesとTokio
11-1-3 Rustでの非同期の未来
11-1-4 Webアプリケーションフレームワーク
11-2 WebアプリケーションフレームワークActix Web
11-2-1 Hello, Actix Web
11-2-2 Actix Webとサーバの構成要素
11-2-3 静的ファイルを返す
11-2-4 テンプレートを返す
11-3 JSON APIサーバ
11-3-1 仕様
11-3-2 ワークスペース
11-3-3 ひな型
11-3-4 データ型の定義
11-3-5 APIでの使用
11-4 Dieselを使ったデータベースの扱い
11-4-1 diesel_cliのインストール
11-4-2 スキーマ定義とマイグレーション
11-4-3 モデルの定義
11-4-4 Dieselを用いたクエリ
11-4-5 データベースへのコネクションとHTTPサーバへの統合
コラム Dieselの型とクエリキャッシュ
11-5 マルチパート/CSVファイルの扱い
11-6 CLIクライアントの作成
11-6-1 最初のコード
11-6-2 ReqwestによるHTTP POST
11-6-3 ReqwestによるHTTP GET
11-6-4 完成
第12章 FFI
12-1 C FFIの基本
12-1-1 単純なC FFI
12-1-2 ライブラリとのリンク
12-1-3 グローバル変数
12-1-4 静的リンクライブラリとのリンク
12-1-5 ビルドスクリプトサポート
コラム Rustのリンカ
12-2 Cのデータ型の扱い
12-2-1 プリミティブ型
12-2-2 ポインタ型
12-2-3 libc クレート
12-2-4 文字列型
12-2-5 関数ポインタ
12-2-6 所有権とリソースの解放
コラム ValgrindをRustに使う
12-2-7 Opaqueと空の列挙型
12-2-8 #[repr(C)]
コラム Nullableポインタ最適化
12-3 C APIの基本
12-3-1 プロジェクトの作成
12-3-2 ライブラリの作成
12-4 実践C FFI
12-4-1 Onigmoのインストール
12-4-2 プロジェクト構成とbindgen
12-4-3 アンセーフなサンプルコード
12-4-4 ラッパ
Amazonで詳しく見る
紹介文
実践的なソフトウェアの実装と、安全性を支える理論の学習を通して、Rustをゼロから徹底的にマスター。通読して学習する入門書!
通読して学習するRust入門書!
単なる文法の解説にはとどまらない。
実践的なソフトウェアの実装と、Rustの安全性を支える理論の学習を通して、ゼロから徹底的にマスターできる!
サンプルコードもサポートページから提供!
【主な内容】
第1章 環境構築とHello, world!
第2章 Rustの基本
第3章 所有権・ライフタイム・借用
第4章 トレイト
第5章 モジュール・ドキュメント・テスト
第6章 正規表現
第7章 シェル
第8章 デバッガ
第9章 線形型システム
【正誤表】
https://github.com/ytakano/rust_zero/blob/master/errata.md
第1章 環境構築とHello, world!
第2章 Rustの基本
第3章 所有権・ライフタイム・借用
第4章 トレイト
第5章 モジュール・ドキュメント・テスト
第6章 正規表現
第7章 シェル
第8章 デバッガ
第9章 線形型システム
Amazonで詳しく見る
紹介文
C/C++に代わるプログラミング言語として期待されるRustを、実践に向けて踏み込んだ構成・スタイルで解説します。
さまざまなCUIアプリケーションを通して
システム言語としてのRustを徹底詳解
本書は、
Tim McNamara, "Rust in Action: Systems programming concepts and techniques"
Manning Publications,
の翻訳書です。
【本書の内容】
ダイレクトにメモリを操作し、OSのシステムコールを活用することで高速性を維持しつつ、コンパイラの進化によって安全性も確保した開発言語・Rust。
本書は、ファイルI/Oを使った入出力プログラムから、キーバリュー型のDB操作やメモリ操作、生のTCPを使うネットワークプログラム。そしてプロセスやスレッド、割り込みや例外処理などの低レイヤからカーネルそのものまで扱うためのノウハウを、Rust固有のテクニカルタームとともに解説します。
著者のTim McNamaraは、15年以上の時間をかけて、テキストマイニング、自然言語処理、データ工学のエキスパートになりました。彼はRust Wellingtonのオーガナイザであり、Rustプログラミングのチュートリアルを、オフラインでも、TwitchとYouTubeを介したオンラインでも、定期的に開催しています。
【本書で取り上げるジャンル】
・メモリ操作
・ファイルとストレージ
・ネットワーク
・時間管理
・プロセスとスレッド
・カーネル
・割り込みと例外処理
【読者が得られること】
・Rustによるプログラミング基礎
・Rust固有のプログラミング手法
・システムプログラミングの勘所
・コンピュータサイエンスの知識
目次
第 1章:はじめに
第 1部:Rust言語の独自機能
第 2章:言語の基礎
第 3章:複合データ型
第 4章:ライフタイムと所有権と借用
第 2部:システムプログラミングの謎を解き明かす
第 5章:データの詳細
第 6章:メモリ
第 7章:ファイルとストレージ
第 8章:ネットワーク
第 9章:時間とタイムキーピング
第10章:プロセスとスレッドとコンテナ
第11章:カーネル
第12章:シグナルと割り込みと例外
Amazonで詳しく見る
紹介文
Web開発に特化した「Rust×Web開発」の入門書です。Rustの基礎文法からWebアプリの開発までを網羅しています。
本書はWeb開発に特化した「Rust×Web開発」の入門書です。Rustの基礎文法からWebアプリの開発までを網羅しています。チュートリアル形式なので段階的に学習が進められます。また、解説するサンプルは、Web開発ならよく知っている題材を教材としました。そのため、RustによるWeb開発の理解を深めることができます。
RustはフロントエンドのエコシステムやMicrosoft/Google/AWSでも採用されるなど、近年高い注目を集めています。Rustは安全性・並行性・速度にフォーカスしながらも、非常に優れた開発者体験も提供してくれます。一方でシステムプログラミング言語であるRustは、多くのWeb開発者にとって学習の敷居が高いと考えられることも事実です。本書はRustによるWebアプリ開発を通じて、Web開発者のRustの学習の入口となることを目指した本です。
第1章 RustとWeb開発
第2章 Rust基礎
第3章 axumを使ってhttpリクエストを処理する
第4章 sqlxを使ってCRUDを実装する
第5章 Todoアプリの体裁を整える
第6章 Todoにラベルをつける
Rustを使ってWebアプリ開発を身に付けるための解説書です。Webアプリ開発者がよく知っている題材をもとに学んでいきます。
第1章 RustとWeb開発
第2章 Rust基礎
第3章 axumを使ってhttpリクエストを処理する
第4章 sqlxを使ってCRUDを実装する
第5章 Todoアプリの体裁を整える
第6章 Todoにラベルをつける
Amazonで詳しく見る
紹介文
Zennで大人気の「Rust 入門」が書籍になった!Rustの基本を手を動かしながらしっかり学べる!
サンプルを動かしながら
Rustの基本をしっかり学べる!
【本書の背景】
Rustは、2015年に初期版がリリースされたプログラミング言語です。Rustの特徴として「処理の速度が速い」「安全性が高い」「開発に必要なツールが充実」といったことが挙げられます。現在は、Microsoft、Google、Amazon、MetaといったIT企業やLinuxでも導入が進み、国内でも利用するIT企業が増えてきている人気急上昇の言語です。
【本書の概要】
Rustのプログラミング手法について、サンプルを元に手を動かしながら学ぶ書籍です。主に以下の3つについて丁寧に解説します。
●Rustの概要と開発環境
●Rustの基本的な文法と機能
●Rustによる簡単なアプリ開発
なお本書はエンジニアのための情報共有コミュニティ「Zenn」で公開されている大人気の「Rust 入門」を元にした書籍です。
【対象読者】
Rustに初めて触れるプログラマー
【本書のポイント】
・基本的な文法について丁寧に解説
・Rustの機能を学ぶのに適したサンプルを用意
・学習をもっと深めたい方に向けて「メモ」や「参照」で補足
【目次】
Chapter1 Rust
Chapter2 環境構築
Chapter3 Rustの文法と機能
Chapter4 アプリケーションの開発
【著者プロフィール】
mebiusbox(メビウスボックス)
趣味でフリーソフトウェアを開発。エンジニア向けのコミュニティに記事を投稿することが多い。コンピュータグラフィックスに関する記事を書いて公開している。最近は Rust や Three.js も扱っている。
Chapter 1 Rust
01 概要
Rustの特徴
Rustの誕生
Rustはどういうプログラミング言語なのかエディション
02 互換性
03 まとめ
Chapter 2 環境構築
01 Rustをインストールする前の準備
PowerShellのバージョンを確認
wingetのインストール
最新のPowerShellをインストール
Windows Terminal
Git
Anaconda(Miniconda)
02 Rustのインストール
rustup
cargo
rustc
03 Visual Studio Code
スニペット
04 rust-analyzer
05 Rust Playground
06 Hello, World!
パッケージの作成
Rustプログラムの実行環境
07 その他のツール
Terminal-Icons
Oh My Posh
winget
PowerShellのエイリアス
bat
lsd(LSDeluxe)
delta
simple-http-server
cargo-make
08 まとめ
本章で学んだこと
Chapter 3 Rustの文法と機能
01 基本
コメント(Comment)
式と文(Expression and statement)
ブロック(Block)
オブジェクト(Object)
組み込みデータ型 (Primitive Type)
型の別名(Alias)
所有権(Ownership)
関数(Function)
print!マクロ
束縛(Binding)
シャドーイング(Shadowing)
定数(Const)
参照(Reference)
可変性(Mutable and immutable)
文字列(String)
スタティック変数
命名規則
参照外し(Dereference)
参照と可変性の関係
借用チェック(Borrow Checker)
02 コピートレイト(Copy Trait)
03 構造体・列挙型
構造体(Struct)
列挙型(Enum)
04 クロージャ(Closure)
Fnとfn
05 制御構文
if式(else、else if)
loop式
while式
for式
06 数列・スライス
数列(Range)
スライス(Slice)
07 ジェネリクス(Generics)
Option型
08 パターンマッチング(Pattern
match式
マッチガード(Match Guard)
パターンによる束縛
if let式
09 エラー処理(Error
panic!マクロ
Result型
unwrapメソッド
expectメソッド
エラー伝搬(Error Propagation)
コンビネータ
10 RAII
Derefトレイト
Dropトレイト
3つのメモリ領域(データ、スタック、ヒープ)
Box型
Rc型
11 ライフタイム(Lifetime)
staticライフタイム
12 トレイト(Trait)
トレイトとは
継承
derive属性
Fromトレイト
マーカートレイト(Marker)
Sizedトレイト
13 動的ディスパッチ
トレイトオブジェクト
dyn Trait型、impl Trait型
14 内部可変性(Interior
Cell型
RefCell型
Weak型
15 並列処理
スレッド
Send・Syncトレイト
Arc型
RwLock型
16 所有権
17 所有型と参照型
18 Cow型(Clone-on-write)
19 イテレータ(Iterator)
アダプタ
20 コレクション(Collection)
Vec型
String型
HashMap型
イテレータからコレクションに変換
イテレータを返すメソッド
21 Cargo
パッケージ、クレート
ターゲット
TOML形式
cargo initコマンド
cargo buildコマンド
cargo cleanコマンド
cargo runコマンド
cargo checkコマンド
cargo treeコマンド
cargo install[uninstall]コマンド
cargo searchコマンド
cargo publishコマンド
デバッグビルド、リリースビルド
外部パッケージ
ワークスペース
Cargo.toml
22 モジュール(Module)
モジュールの定義
パス(Path)
モジュールの利用(use)
モジュールツリー
モジュールの再公開
23 テスト(Unit
cargo testコマンド
assertion
should_panic属性
testsターゲット
24 ドキュメントコメント
ドキュメントコメントの書き方
cargo docコマンド
rustup docコマンド
25 フォーマッタ(rustfmt)
26 リンター(clippy)
27 マクロ(Macro)
宣言的マクロ
手続きマクロ
28 非同期処理
Future型
async/.await
tokioクレート
29 unsafe
30 Tips
Defaultトレイト
分解束縛
デバッグ時やテスト時のみ有効なコード
属性
演算子のオーバーロード
Preludeモジュール
DisplayトレイトとDebugトレイト
特殊なマクロ
Nightly版
cargo-audit、cargo-outdated
31 まとめ
本章で学んだこと
Chapter 4 アプリケーションの開発
01 単語推理ゲーム
サンプルコードについて
プロジェクトの準備
単語辞書の読み込み
ゲーム構造体
推理ロジックの実装
GUIの実装(icedクレート)
02 レイトレーシング
サンプルコードについて
プロジェクトの準備
画像の出力
ベクトル
クォータニオン
基本的な構造体の実装
カメラ
球体の追加
球体の法線
確認用のウィンドウ
モジュール化
複数の物体への対応
アンチエイリアシング
拡散反射
材質
鏡面反射
屈折
大量に表示してみよう
テクスチャ
画像テクスチャ
発光
四角形
コーネルボックス
光学のおはなし
モンテカルロレイトレーシング
03 まとめ
本章で学んだこと
Appendix
01 std::option::Option型
02 std::result::Result型
03 std::vec::Vec型
04 std::string::String型
05 std::collections::HashMap型
06 std::iter::Iteratorトレイト
アダプタ
07 std::f64モジュール
定数
数学関数(std::f64モジュール)
08 Rustをビルドしてみよう
Amazonで詳しく見る
紹介文
安全なプログラムを記述しなければコンパイルできないプログラミング言語Rustの解説書。
安全なプログラミング言語
通常のプログラミング言語では、変数やメモリの保護はプログラマーの責任で行います。この際の配慮不足があったとしても、コンパイルして実行できるプログラムは作ることはできます。その結果は、バグやセキュリティホールにつながるので、プログラマーも強い責任感でのプログラミングが必要です。本書で解説するRust言語は、後発なだけいろいろ考えられており、構文そのものが配慮不足になりにくいしくみであり、また不良なソースコードはコンパイルできません。つまり安全なプログラムを記述しなければコンパイルできないというユニークな特長を持ちます。
Amazonで詳しく見る
紹介文
シリーズ累計50万部突破の定番入門書「スッキリわかるシリーズ」の『Java入門 実践編』に「第3版」が登場!最新Java16対応し、近年のJava改訂による新機能(Record等)の取り込みのほか、GitやMavenといったツール類の活用方法も具体的・実践的に解説! 新人エンジニア湊君の成長を傍らに、開発中に発生するJavaのいろんな「なぜ?」にしっかりと答えながら解説が進み、付録には「エラー解決・虎の巻」を用意して、独学に適した挫折しにくい紙面展開で、中級者に進むあなたを、効率的かつ、実践的にエスコートしていきます。
Amazonで詳しく見る
紹介文
RustコミュニティーによるRust言語入門の決定版!
「Rustプログラミング言語は、エンパワーメント(empowerment)を根本原理としています。どんな種類のコードを現在書いているにせよ、Rustは幅広い領域で以前よりも遠くへ到達し、自信を持ってプログラムを組む力を与え(empower)ます。」(本書「まえがき」より)
システムレベルのプログラムからWebサーバーやコマンドラインアプリなど、さまざまな分野に利用できるプログラミング言語として設計されているRust。本書はRustコミュニティ公式のガイドブックである。
基本的な文法事項から、Rustの中心的な機能である「所有権」の詳細、エラー処理や自動テストの方法、さらにはジェネリック型、スマートポインタ、関数型言語、並行プログラミング、オブジェクト指向の機能など、Rustプログラミングの肝となる要素のすべてを丁寧に解説する。
本書は、Rustの基本を理解する概念の章、Rustの機能を適用した小さなプログラムを構築するプロジェクトの章という2つで構成されている。それぞれを理解していけば、Rustを利用したプログラム開発にすぐに取りかかれるようになっている。
基本的な文法事項から、関数型言語、並行プログラミング、オブジェクト指向の機能など、プログラミング言語Rustのすべてを解説。Rustコミュニティー公式のガイドブックでその全体像をしっかり理解しよう。
第1章 事始め
第2章 数当てゲームをプログラムする
第3章 一般的なプログラミングの概念
第4章 所有権を理解する
第5章 構造体を使用して関係のあるデータを構造化する
第6章 enumとパターンマッチング
第7章 モジュールを使用してコードを体系化し、再利用する
第8章 一般的なコレクション
第9章 エラー処理
第10章 ジェネリック型、トレイト、ライフタイム
第11章 自動テストを書く
第12章 入出力プロジェクト: コマンドラインプログラムを構築する
第13章 関数型言語の機能: イテレーターとクロージャー
第14章 Cargoと crates.ioについてより詳しく
第15章 スマートポインター
第16章 恐れるな! 並行性
第17章 Rustのオブジェクト指向プログラミング機能
第18章 パターンとマッチング
第19章 高度な機能
第20章 最後のプロジェクト: マルチスレッドのWebサーバーを構築する
Amazonで詳しく見る
紹介文
最新のPython、ライブラリおよびWindoes 11に対応した「Python1年生」の第2版の登場!
おかげさまで8万部突破!
読者の声に応えて
第2版の登場
【本書の概要】
Web開発やデータ分析などの分野で、ユーザー数が増えてきているPython。
最近では、Pythonに触れる方も多くなってきています。
本書はそうしたPython初心者の方に向けて、
ヤギ博士とフタバちゃんと一緒に
基本的なプログラムの作成から、面白い人工知能アプリの作成までを体験。
対話形式でプログラミングのしくみを学ぶことができます。
【対象読者】
Pythonについて何も知らないプログラミング超初心者
【本書のポイント】
・対話形式で解説し、イラストを交えながら、基礎知識を解説します。
・初めての方でも安心して学習できるよう基本文法もしっかり解説します。
・平易なサンプルを用意していますので、安心してプログラムを体験できます。
・2022年時点の最新の環境(Windows 11、Python 3.10など)に対応しています。
・エラーでつまづいた場合の対応方法を巻末に掲載しています。
【目次】
第1章 Pythonで何ができるの?
第2章 Pythonを触ってみよう
第3章 プログラムの基本を知ろう
第4章 アプリを作ってみよう
第5章 人工知能くんと遊んでみよう
【著者プロフィール】
森 巧尚(もり・よしなお)
『マイコンBASICマガジン』(電波新聞社)の時代からゲームを作り続けて現在はコンテンツ制作や執筆活動を行い関西学院大学非常勤講師、
関西学院高等部非常勤講師、成安造形大学非常勤講師、大阪芸術大学非常勤講師、プログラミングスクールコプリ講師などを行っている。
近著に、『Python1年生』『Python2年生 スクレイピングのしくみ』『Python2年生 データ分析のしくみ』『Python3年生 機械学習のしくみ』
『Java1年生』『動かして学ぶ!Vue.js開発入門』『Python自動化簡単レシピ』(いずれも翔泳社)、
『ゲーム作りで楽しく学ぶ Pythonのきほん』『楽しく学ぶ Unity2D超入門講座』『楽しく学ぶ Unity3D超入門講座』(いずれもマイナビ出版)などがある。
第1章 Pythonで何ができるの?
第2章 Pythonを触ってみよう
第3章 プログラムの基本を知ろう
第4章 アプリを作ってみよう
第5章 人工知能くんと遊んでみよう
Amazonで詳しく見る
紹介文
Firefoxの開発元であるMozillaが支援するオープンソースのプログラミング言語の解説書。
Rustは、Firefoxの開発元であるMozillaが支援するオープンソースのプログラミング言語です。2017年末に公開されたFirefox のレンダリングエンジンの記述に使用され、その実行速度を2倍にしたことで有名になりました。オブジェクト指向と関数型の言語特徴を持ち、JavaやC#のようにVM(Virtual Machine)上の動作ではないため、既存のC言語のライブラリを直接扱える利点を持っています。またRustは、CやC++で発生しうる不正メモリアクセスに関する問題を,ある程度回避できるように設計されています。
Rustはまだ新しい言語なので、本書の前半は実務に必要な詳しい文法を解説しています。文法や具体例などは、簡単なRustのコードを動かして確認しながら説明を進めています。後半は、具体的な利用法(Web API呼び出し、データベースアクセスなど)を中心に説明し、すでに他の言語(C++やC#、Javaなど)で同様にプログラミングをしたことのある読者を対象としています。
はじめに
第1章 Rustの特徴
1.1 なぜRustなのか
1.2 高いパフォーマンス
1.3 型安全性
1.4 ビルドシステム
1.5 モダンな文法
第2章 環境構築
2.1 Rustのインストール
2.1.1 Linux とmacOSへのインストール
2.1.2 Windowsへのインストール
2.1.3 Windows for Linuxへのインストール
2.1.4 Visual Studio Codeの利用
2.1.5 rustupの利用
2.2 Hello Worldプログラム
2.2.1 cargo new
2.2.2 cargo の構造
2.2.3 cargo build
2.2.4 cargo run
2.2.5 rustc の利用
第3章 基本的な型、変数の扱い、束縛
3.1 型の宣言
3.1.1 数値の型
3.1.2 数値の型
3.1.3 リテラル
3.1.4 浮動小数点数
3.1.5 論理値型
3.1.6 文字型
3.1.7 文字列
3.2 複合型
3.2.1 タプル型
3.2.2 配列型
3.3 参照と借用
3.3.1 所有権の移動
3.3.2 借用
3.4 束縛
3.4.1 束縛と可変変数
3.4.2 シャドーイング
3.5 スコープ
3.5.1 ブロック単位
3.5.2 関数単位
3.5.3 構造体単位
3.5.4 クロージャ単位
第4章 文字列
4.1 文字
4.1.1 文字を扱う
4.1.2 特殊文字
4.1.3 u8型へのキャスト
4.2 文字列
4.2.1 文字列の扱い
4.2.2 アルファベットの操作
4.2.3 日本語の扱い
4.2.4 日本語を正しく扱う
4.3 文字列スライス
4.3.1 先頭を切り出すスライス
4.3.2 途中の文字列を切り出すスライス
4.3.3 最後までを切り出すスライス
4.3.4 全体を切り出すスライス
第5章 文と式と関数
5.1 文と式
5.1.1 文
5.1.2 式
5.2 演算子
5.2.1 四則演算子
5.2.2 代入演算子
5.2.3 ビット演算子
5.2.4 シフト演算子
5.2.5 論理演算子
5.2.6 単項演算子
5.3 関数
5.3.1 引数のない関数
5.3.2 引数のある関数
5.3.3 戻り値のある関数
5.3.4 文字列を受け取る関数
5.3.5 文字列を戻す関数
5.3.6 ベクターを受け取る関数
5.3.7 ベクターを戻す関数
5.3.8 ベクターの中身を変更する関数
第6章 制御文とパターンマッチ
6.1 分岐
6.1.1 条件にマッチしたときに実行
6.1.2 条件にマッチしないときに実行
6.1.3 複数のif文を重ねる
6.1.4 if文に論理和/ 積を使う
6.1.5 関数の戻り値を直接参照
6.1.6 if文で値を返す
6.2 繰り返し
6.2.1 for文で全ての要素に繰り返す
6.2.2 for文でイテレーターを利用する
6.2.3 for文をインデックス付きで繰り返す
6.2.4 for文で繰り返し数を指定する
6.2.5 繰り返しを途中で止める
6.2.6 繰り返しの途中で先頭に戻る
6.2.7 while文で継続条件を指定する
6.2.8 loop文で無限に繰り返す
6.3 パターンマッチ
6.3.1 enumで列挙型を定義する
6.3.2 列挙型をmatchで使う
6.3.3 オプション型をmatchで扱う
6.3.4 matchを「if let」で置き換える
6.3.5 enum以外でmatchを使う
第7章 配列とベクター
7.1 配列
7.1.1 固定配列を定義
7.1.2 文字列の配列を定義
7.1.3 配列の型を指定する
7.1.4 配列を初期化、変更する
7.1.5 配列を数値型に強制キャストする
7.2 ベクター
7.2.1 ベクターを定義する
7.2.2 ベクターの要素を増減させる
7.2.3 ベクターの要素を参照する
7.2.4 ベクターの要素を削除する
7.2.5 指定位置に要素を追加する
7.2.6 複数のベクターを連結する
7.2.7 連結文字を指定してベクターを連結する
7.2.8 分割文字を指定しベクターを作成する
7.2.9 ベクターを辞書順にソートする
7.3 イテレーター
7.3.1 for文でイテレーターを使う
7.3.2 iterメソッドとnextメソッドを使う
7.3.3 loop文とwhile文でイテレーターを扱う
7.3.4 イテレーターとmapを活用する
第8章 構造体とメソッド
8.1 構造体
8.1.1 構造体の定義
8.1.2 構造体のインスタンス化
8.1.3 構造体のフィールドを参照
8.1.4 構造体を引数にとる関数
8.1.5 構造体を戻り値にする関数
8.1.6 ベクターで構造体を扱う
8.1.7 フィールド名のない構造体を扱う
8.1.8 構造体のサイズを調べる
8.2 メソッド
8.2.1 引数のないメソッドを定義
8.2.2 引数のあるメソッドを定義
8.2.3 戻り値のあるメソッドを定義
8.2.4 フィールドを変更するメソッド
8.2.5 newメソッドを定義する
8.3 Result型
8.3.1 Result型の定義
8.3.2 str::parseの戻り値を探る
8.3.3 Result型を返す関数を作る
8.3.4 Result型のエイリアスを作る
8.3.5 コンピネーターでmatch文を減らす
8.3.6 エラー委譲でmatch 文を減らす
8.3.7 独自のResult 型を返す
8.3.8 exceptメソッドを使う
8.3.9 main関数でResult 型を返す
第9章 ジェネリクスとトレイト
9.1 ジェネリクス
9.1.1 ベクターはジェネリクスである
9.1.2 ジェネリックを使わないで関数を作る
9.1.3 ジェネリックを使って関数を作る
9.2 トレイト
9.2.1 構造体の動作をルール化する
9.2.2 メソッド名を統一する
9.2.3 デフォルトメソッドを追加する
9.2.4 既存の構造体を拡張する
第10章 所有権
10.1 所有権の概念
10.1.1 所有権という概念
10.1.2 構造体のインスタンスを借用する
10.1.3 構造体のインスタンスを移動する
10.1.4 変数を借用する
10.1.5 変数を移動する
10.1.6 可変変数を関数に参照で渡す
10.1.7 可変変数を扱うときの注意
10.1.8 数値とタプルの場合
10.1.9 ベクターと文字列の場合
10.1.10 複数の変数で所有権を奪い合う例
10.2 所有権の利点
10.2.1 有効範囲を明確にする
10.2.2 関数でインスタンスを返す
10.2.3 可変変数のアクセス制限
第11章 パッケージの作成
11.1 公開ライブラリを利用する
11.1.1 crates.io
11.1.2 randクレートのドキュメント
11.1.3 randクレートを利用する
11.2 公開バイナリを利用する
11.2.1 バイナリのインストール
11.2.2 バイナリの実行
11.3 パッケージを作成する
11.3.1 ライブラリのプロジェクトを作成
11.3.2 ライブラリを動作させる
11.3.3 ライブラリの出力場所
第12章 ファイル入出力
12.1 ファイル読み込み
12.1.1 スコープの指定
12.1.2 ファイルを全て読み込む
12.1.3 ファイルの読み込みエラーに備える
12.1.4 ファイルをオープンして読み込む
12.1.5 ファイルアクセス時のResultをチェックする
12.1.6 バイト単位で読み込む
12.1.7 行単位で読み込む
12.1.8 main関数でファイルを読み込む
12.2 ファイル書き出し
12.2.1 write!マクロで書き出す
12.2.2 writeメソッドで書き出す
12.2.3 バイト配列で書き出す
12.2.4 バイト単位で書き出す
12.2.5 main 関数でファイルに書き出す
12.3 標準入出力の利用
12.3.1 標準入力と標準出力
12.3.2 標準入出力の準備
12.3.3 ファイルから読み込み
12.3.4 標準入力から読み込み
12.3.5 標準出力へ書き出し
第13章 マクロ
13.1 println!マクロ
13.1.1 関数とマクロの区別
13.1.2 println!マクロのプレースホルダー
13.1.3 複数のプレースホルダー
13.1.4 整数の進数表現
13.1.5 整数の0埋め
13.1.6 実数の指数表現と有効桁数
13.1.7 数値や文字列の配置指定
13.2 dbg!マクロ
13.2.1 配列の内容を表示する
13.2.2 構造体にDebugトレイトを適用する
13.2.3 dbg!マクロのフォーマッタを実装する
13.3 panic!マクロ
13.3.1 main 関数でpanic!マクロを使う
13.3.2 panic!マクロの利用例
13.3.3 panic!マクロのトレースの利用
第14章 Web API呼び出し
14.1 HTTPプロトコル
14.1.1 reqwestクレート利用の準備
14.1.2 URLアドレスの呼び出し
14.1.3 URLクエリ文字列で呼び出し
14.1.4 目的のページが見つからない場合
14.1.5 指定したWebサーバーが見つからない場合
14.2 GETとPOSTメソッド
14.2.1 HTTPプロトコルのヘッダー部
14.2.2 GETメソッドの詳細
14.2.3 POSTメソッドの詳細
14.3 JSON形式
14.3.1 serde_jsonクレート利用の準備
14.3.2 JSON型式データをテキストとして受信する
14.3.3 JSON型式データから値を取り出す
第15章 データベースアクセス
15.1 SQLiteの読み込み
15.1.1 データベースの使い方
15.1.2 rusqliteクレートの準備
15.1.3 インメモリデータベースの利用
15.1.4 複数のSQL文を実行する
15.1.5 設定する値をパラメーターで渡す
15.1.6 SELECT文でデータを取得する
15.1.7 SELECT文でデータをquery_mapで取得する
15.1.8 SELECT文で検索条件を指定する
15.2 データの保存
15.2.1 データベースファイルを作成する
15.2.2 テーブルを作成する
15.2.3 データを挿入する
15.2.4 データを検索する
15.3 複雑なSQL
15.3.1 サンプルとなるテーブル例
15.3.2 chronoクレートの準備
15.3.3 テーブルを結合して表示する
15.3.4 データをソートして表示する
15.3.5 データを集計して表示する
15.4 ORMの利用
15.4.1 dieselクレートの準備
15.4.2 マッピングする構造体の定義
15.4.3 ORMでデータを取得する
第16章 C言語ライブラリの呼び出し
16.1 既存のC言語ライブラリとの連携
16.1.1 C言語ライブラリとの相互運用
16.1.2 C言語ライブラリの準備
16.1.3 C言語のソースコード
16.1.4 C言語のコードをビルド
16.1.5 C言語ライブラリの呼び出し
16.1.6 ビルドして実行
16.2 C 言語からRustの関数を呼び出す
16.2.1 Rustライブラリの準備
16.2.2 Rustライブラリのコード
16.2.3 Rustを呼び出すC 言語のコード
16.2.4 ビルドして実行
16.3 既存ライブラリで文字列の受け渡し
16.3.1 文字列を渡す関数の宣言
16.3.2 NULL終端の文字列
16.3.3 ビルドして実行
第17章 クロージャ
17.1 クロージャの利用
17.1.1 イテレーター処理
17.1.2 mapとクロージャ
17.1.3 filterとクロージャ
17.1.4 findとクロージャ
17.1.5 maxとmin
17.1.6 2 つの配列を合わせる
17.2 クロージャの定義
17.2.1 クロージャの引数
17.2.2 クロージャの戻り値
17.2.3 クロージャとmap
17.3 クロージャの受け渡し
17.3.1 数値とクロージャを受け取る関数
17.3.2 ベクターとクロージャを受け取る関数
第18章 並列化
18.1 スレッドの活用
18.1.1 プロセスとスレッドの違い
18.1.2 単純なスレッドの実行
18.1.3 スレッドの終了を待つ
18.1.4 複数のスレッドの終了を待つ
18.1.5 スレッド処理のクロージャを別定義する
18.1.6 スレッド処理を関数定義する
18.2 async/awaitの活用
18.2.1 スレッドを順番に実行する
18.2.2 async/awaitで順番に実行する
18.2.3 tokio クレートを利用する
18.3 スレッドと所有権
18.3.1 スレッドプールの利用
18.3.2 所有権の移動
18.3.3 moveの利用
18.3.4 moveした変数を変更する
第19章 テストコード
19.1 単体テスト
19.1.1 テストプロジェクトを作る
19.1.2 関数をテストする
19.1.3 テストメソッドを増やす
19.1.4 関数とテストメソッドを増やす
19.2 テストコードの記述
19.2.1 値を比較する
19.2.2 値が異なる
19.2.3 構造体を比較する
19.2.4 真偽をチェックする
19.3 テストコードの実行
19.3.1 変数チェックの埋め込み
19.3.2 テストコードの埋め込み
付録A Rustのメモリ配置を調べる
A.1 変数のポインタを扱う
A.2 変数の移動(move)をポインタで確認する
A.3 変数の借用(borrow)をポインタで確認する
A.4 数値の変数はコピーされる
付録B Rustの型を調べる
B.1 コンパイルエラーを利用する
B.2 std::any::type_name を利用する
B.3 いろいろな型を調べる
索引
b_
Amazonで詳しく見る
紹介文
現役シリコンバレーエンジニアが教える「最強のプログラミング」講義!
10万人が選んだ人気No.1オンライン講座が
超わかりやすくパワーアップして書籍化!
海外企業でも通用する
一流のプログラミング技術が学べます!
★基礎から応用、一流コードスタイルまで1冊で学べる★
【応用編】ではニーズの高い実践的テクニックを中心に、
【入門編】では基礎から1歩ずつ、わかりやすく解説。
シリコンバレーのトップIT企業で活躍する著者が
世界標準のPythonスキルを一気に伝えます。
★海外でも通用する
一流のプログラミング技術が身につく★
知っていましたか?
アメリカのエンジニアの年収は日本の5~10倍です。
本書は「いつか海外で活躍したい」、
そんな夢の実現も強力にバックアップしてくれる
「海外進出の道しるべ」ともなる一冊です。
★10万人が選んだ人気No.1講座の書籍化★
本書のもととなったのは、オンライン講座Udemyで人気No.1を獲得したPython講座。
本格的な内容をわかりやすく伝える著者の講座は人気が高く、延べ20万人以上が受講しています(全講座計)。
本書はさらに内容を充実させてパワーアップ! 自分のペースでしっかり学べます。
独学の強い味方、「サンプルコード」の無料ダウンロードサービス付き。
★エンジニアの成功戦略も教えます★
コラムでは、エンジニアのキャリア戦略の立て方、成功するポイント、独学のコツなども紹介。
文系出身、TOEIC300点代からスタートした著者が渾身のエールを送ります。
★用語集、Pointなども充実★
コードを書くときの注意点、知っておきたい豆知識、
開発の現場で必要なことなどは
「Point」としてたっぷり掲載。
巻末には「用語集」も収録し、
徹底して実践的な内容となっています。
オンライン講座Udemyで9万人以上が選んだ人気No.1講座を完全書籍化! 超わかりやすくパワーアップして、基礎から応用、一流コードスタイルまで、世界で通用する「最強のプログラミング」が学べる!
学習を始める前に ~Pythonの環境設定
【入門編】
Lesson 1 Pythonの基本
1 変数の宣言と数値の計算をマスターしよう
2 文字列のさまざまな操作方法
Lesson 2 データ構造
1 複数データを並列にまとめる
2 変更できないリスト? いえ、タプルです
3 キーと値をセットで記憶する辞書型
4 データ同士の演算ができる集合
Lesson 3 制御フロー
1 読みやすいコードを書こう
2 条件に応じて処理を分岐させよう
3 繰り返し処理でデータを一気に処理しよう
Lesson 4 関数と例外処理
1 何度も実行する処理の関数を作ろう
2 関数の応用をマスターしよう
3 内包表記でリストをシンプルに生成しよう
4 変数の有効範囲
5 例外処理
Lesson 5 モジュールとパッケージ
1 作成したパッケージをインポートしよう
2 Pythonのライブラリの使い方
Lesson 6 オブジェクトとクラス
1 クラスとメソッド
2 クラスをもっと活用してみよう
Lesson 7 ファイル操作とシステム
1 ファイルの基本的な操作
2 ファイルの便利な活用方法
3 圧縮ファイルを扱おう
4 さらに高度なファイルに関する操作
【演習編】
Lesson 8 簡単なアプリケーションを作ってみよう
【応用編】
Lesson 9 コードスタイル
1 Pythonのコードスタイル
2 さらにくわしくPythonの書き方を知ろう
Lesson 10 コンフィグとロギング
1 設定ファイルのさまざまな形式
2 ロギングの基本と適切な書き方
3 ログをメールで送信しよう
4 実行環境を切り替えて使う
Lesson 11 Webとネットワーク
1 Webでよく使うファイル形式
2 Pythonで通信してみよう
3 PythonでWeb サーバーを作ろう
4 Webスクレイピングしてみよう
Lesson 12 並列化
1 マルチスレッドで並列化しよう
2 マルチプロセスによる並列化
3 高水準のインターフェースを使って並列化しよう
Lesson 13 データ解析
1 データ解析を始める前に
2 データをまとめて扱うnumpy
3 pandasで表形式のデータを扱う
4 matplotlibでグラフを描画する
5 scikit-learnで機械学習を行う
6 株価のデータ解析と予測
Amazonで詳しく見る
紹介文
初心者でも大丈夫!アプリ開発を体験してみよう!
Pythonで
デスクトップアプリ開発を
体験してみよう!
【初心者でもできる!デスクトップアプリ開発を一緒に体験しよう】
Pythonの基礎知識はあるけど、
「アプリ開発って初心者には難しそう」
「プログラムで何か残るものを作ってみたい」
と思っていませんか?
本書はそうした方に向けて、初心者にも簡単に作れる方法を使ってデスクトップアプリ開発の基本をやさしく解説します。スマホアプリ、Webアプリに比べて、手軽に取り組めますので挫折することなく学習できます。本書を読んだあとは、スマホアプリやWebアプリ開発に挑戦してみてください。
【Python2年生について】
「Python2年生」は、「Python1年生」を読み終えた方を対象とした入門書です。ある程度、技術的なことを盛り込み、本書で扱う技術について身につけてもらいます。
『Python2年生 スクレイピングのしくみ』(ISBN:9784798161914)
『Python2年生 データ分析のしくみ』(ISBN:9784798164960)
も刊行されています。
【対象読者】
デスクトップアプリの作り方を知りたい初心者
【本書のポイント】
ヤギ博士&フタバちゃんと一緒に、デスクトップアプリ開発の考え方から丁寧に解説。デスクトップアプリ開発をする時に必要な前提知識からはじまり、デスクトップアプリ作りの基本、応用的なデスクトップアプリ、そしてゲームアプリ開発まで解説します。
【著者プロフィール】
森 巧尚(もり・よしなお)
アプリの開発や、技術書や電子工作マガジンなどでの執筆活動。関西学院大学非常勤講師、関西学院高等部非常勤講師、成安造形大学非常勤講師、プログラミングスクールコプリ講師など、プログラミングに関する幅広い活動を行っている。近著に、『Python1年生 第2版』、『Python3年生機械学習のしくみ』、『Python2年生 スクレイピングのしくみ』、『Python2年生 データ分析のしくみ』、『Java1年生』、『動かして学ぶ!Vue.js開発入門』(いずれも翔泳社)、『楽しく学ぶ アルゴリズムとプログラミングの図鑑』(マイナビ出版)などがある。
第1章 Pythonでアプリを作ろう
LESSON 01 デスクトップアプリってなに?
LESSON 02 Pythonをインストールしよう
LESSON 03 tkinterでアプリを作ろう
LESSON 04 PySimpleGUIでアプリを作ろう
第2章 アプリ作りの基本
LESSON 05 アプリの作り方を理解しよう
LESSON 06 配色を選べるよ
LESSON 07 レイアウトで画面を作ろう
第3章 計算アプリを作ろう
LESSON 08 変数で文字列を作るなら、f文字列が便利
LESSON 09 割り勘アプリ
LESSON 10 BMI値計算アプリ
LESSON 11 出生の秘密アプリ
LESSON 12 干支調べアプリ
第4章 時計アプリを作ろう
LESSON 13 時間を測ろう
LESSON 14 時計アプリ
LESSON 15 ストップウォッチアプリ
LESSON 16 時間割アプリ
第5章 ファイル操作アプリを作ろう
LESSON 17 ファイルの読み書きをしよう
LESSON 18 テキストエディタアプリ
LESSON 19 画像を表示するアプリ
LESSON 20 画像の加工アプリ
LESSON 21 QRコードメーカーアプリ
第6章 ゲームアプリを作ろう
LESSON 22 おみくじアプリ
LESSON 23 じゃんけんアプリ
LESSON 24 足し算ゲームアプリ
LESSON 25 数当てゲームアプリ
LESSON 26 31ゲームアプリ
LESSON 27 これから先は、どうしたらいいの?
Amazonで詳しく見る
紹介文
データ分析の現場にあって入門書にない「汚いデータ」(ダーティデータ)に対応する、プロのノウハウを解説します。
これがリアルなデータ分析だ!
君は「汚いデータ」を処理できるか?
データ分析の現場にあって入門書にないもの――それは、「汚いデータ」(ダーティデータ)です。本書は、データ分析の現場では①どんなデータに出会い、②どのような問題が生じ、③どう対応すればよいのかというノウハウを解説。
事前の加工(視覚化)から機械学習、最適化問題まで、100本ノックをこなして、ビジネス現場で即戦力になれる「応用力」を身につけよう!
データ分析の現場にあって入門書にない「汚いデータ」(ダーティデータ)に対応する、プロのノウハウを解説します。
朝練 100本ノックに備えて準備運動を行いましょう。
序章 朝練
朝練1:Google Colaboratoryをつかってみよう
朝練2:プログラムを書いて実行してみよう
朝練3:変数を使ってみよう
朝練4:ライブラリを使ってみよう
朝練5:コードセルを分けて効率よくプログラミングをしよう
朝練6:本書のサンプルプログラムをGoogle Colaboratoryで動かしてみよう
朝練7:Google Driveからデータを参照してみよう
朝練8:絶対パスと相対パスについて
第1部 基礎編:データ加工
第1章 ウェブからの注文数を分析する10本ノック
ノック1:データを読み込んでみよう
ノック2:データを結合(ユニオン)してみよう
ノック3:売上データ同士を結合(ジョイン)してみよう
ノック4:マスターデータを結合(ジョイン)してみよう
ノック5:必要なデータ列を作ろう
ノック6:データ検算をしよう
ノック7:各種統計量を把握しよう
ノック8:月別でデータを集計してみよう
ノック9:月別、商品別でデータを集計してみよう
ノック10:商品別の売上推移を可視化してみよう
第2章 小売店のデータでデータ加工を行う10本ノック
ノック11:データを読み込んでみよう
ノック12:データの揺れを見てみよう
ノック13:データに揺れがあるまま集計してみよう
ノック14:商品名の揺れを補正しよう
ノック15:金額欠損値の補完をしよう
ノック16:顧客名の揺れを補正しよう
ノック17:日付の揺れを補正しよう
ノック18:顧客名をキーに2つのデータを結合(ジョイン)しよう
ノック19:クレンジングしたデータをダンプしよう
ノック20:データを集計しよう
第2部 実践編①:機械学習
第3章 顧客の全体像を把握する10本ノック
ノック21:データを読み込んで把握しよう
ノック22:顧客データを整形しよう
ノック23:顧客データの基礎集計をしよう
ノック24:最新顧客データの基礎集計をしてみよう
ノック25:利用履歴データを集計しよう
ノック26:利用履歴データから定期利用フラグを作成しよう
ノック27:顧客データと利用履歴データを結合しよう
ノック28:会員期間を計算しよう
ノック29:顧客行動の各種統計量を把握しよう
ノック30:退会ユーザーと継続ユーザーの違いを把握しよう
第4章 顧客の行動を予測する10本ノック
ノック31:データを読み込んで確認しよう
ノック32:クラスタリングで顧客をグループ化しよう
ノック33:クラスタリング結果を分析しよう
ノック34:クラスタリング結果を可視化してみよう
ノック35:クラスタリング結果をもとに退会顧客の傾向を把握しよう
ノック36:翌月の利用回数予測を行うための準備をしよう
ノック37:特徴となる変数を付与しよう
ノック38:来月の利用回数予測モデルを作成しよう
ノック39:モデルに寄与している変数を確認しよう
ノック40:来月の利用回数を予測しよう
第5章 顧客の退会を予測する10本ノック
ノック41:データを読み込んで利用データを整形しよう
ノック42:退会前月の退会顧客データを作成しよう
ノック43:継続顧客のデータを作成しよう
ノック44:予測する月の在籍期間を作成しよう
ノック45:欠損値を除去しよう
ノック46:文字列型の変数を処理できるように整形しよう
ノック47:決定木を用いて退会予測モデルを作成してみよう
ノック48:予測モデルの評価を行い、モデルのチューニングをしてみよう
ノック49:モデルに寄与している変数を確認しよう
ノック50:顧客の退会を予測しよう
第3部 実践編②:最適化問題
第6章 物流の最適ルートをコンサルティングする10本ノック
ノック51:物流に関するデータを読み込んでみよう
ノック52:現状の輸送量、コストを確認してみよう
ノック53:ネットワークを可視化してみよう
ノック54:ネットワークにノード(頂点)を追加してみよう
ノック55:ルートの重みづけを実施しよう
ノック56:輸送ルート情報を読み込んでみよう
ノック57:輸送ルート情報からネットワークを可視化してみよう
ノック58:輸送コスト関数を作成しよう
ノック59:制約条件を作ってみよう
ノック60:輸送ルートを変更して、輸送コスト関数の変化を確認しよう
第7章 ロジスティクスネットワークの最適設計を行う10本ノック
ノック61:輸送最適化問題を解いてみよう
ノック62:最適輸送ルートをネットワークで確認しよう
ノック63:最適輸送ルートが制約条件内に収まっているかどうかを確認しよう
ノック64:生産計画に関するデータを読み込んでみよう
ノック65:利益を計算する関数を作ってみよう
ノック66:生産最適化問題を解いてみよう
ノック67:最適生産計画が制約条件内に収まっているかどうかを確認しよう
ノック68:ロジスティクスネットワーク設計問題を解いてみよう
ノック69:最適ネットワークにおける輸送コストとその内訳を計算しよう
ノック70:最適ネットワークにおける生産コストとその内訳を計算しよう
第8章 数値シミュレーションで消費者行動を予測する10本ノック
ノック71:人間関係のネットワークを可視化してみよう
ノック72:口コミによる情報伝播の様子を可視化してみよう
ノック73:口コミ数の時系列変化をグラフ化してみよう
ノック74:会員数の時系列変化をシミュレーションしてみよう
ノック75:パラメータの全体像を、「相図」を見ながら把握しよう
ノック76:実データを読み込んでみよう
ノック77:リンク数の分布を可視化しよう
ノック78:シミュレーションのために実データからパラメータを推定しよう
ノック79:実データとシミュレーションを比較しよう
ノック80:シミュレーションによる将来予測を実施しよう
第4部 発展編:画像処理/言語処理
第9章 潜在顧客を把握するための画像認識10本ノック
ノック81:画像データを読み込んでみよう
ノック82:映像データを読み込んでみよう
ノック83:映像を画像に分割し、保存してみよう
ノック84:画像内のどこに人がいるのかを検出してみよう
ノック85:画像内の人の顔を検出してみよう
ノック86:画像内の人がどこに顔を向けているのかを検出してみよう
ノック87:検出した情報を統合し、タイムラプスを作ってみよう
ノック88:全体像をグラフにして可視化してみよう
ノック89:人通りの変化をグラフで確認しよう
ノック90:移動平均を計算することでノイズの影響を除去しよう
第10章 アンケート分析を行うための自然言語処理10本ノック
ノック91:データを読み込んで把握しよう
ノック92:不要な文字を除外してみよう
ノック93:文字数をカウントしてヒストグラムを表示してみよう
ノック94:形態素解析で文章を分割してみよう
ノック95:形態素解析で文章から「動詞・名詞」を抽出してみよう
ノック96:形態素解析で抽出した頻出する名詞を確認してみよう
ノック97:関係のない単語を除去してみよう
ノック98:顧客満足度と頻出単語の関係を見てみよう
ノック99:アンケート毎の特徴を表現してみよう
ノック100:類似アンケートを探してみよう
放課後練 さらなる挑戦
第11章 深層学習に挑戦する10本ノック
放課後ノック101:深層学習に必要なデータを準備しよう
放課後ノック102:深層学習モデルを構築しよう
放課後ノック103:モデルの評価をしてみよう
放課後ノック104:モデルを使った予測をしてみよう
放課後ノック105:物体検出YOLOを使って人の検出を行ってみよう
放課後ノック106:YOLOの学習を行うための準備をしよう
放課後ノック107:新たな学習データを使ってYOLOの学習モデルを生成してみよう
放課後ノック108:新たに学習させたモデルを使って人の検出を行ってみよう
放課後ノック109:YOLOとHOGの人の検出結果を比較して深層学習の精度を体感しよう
放課後ノック110:YOLOでの人以外の物体の検出のようすを確認しよう
第12章 データ加工に挑戦する10本ノック
放課後ノック111:“よくある”エクセルデータに挑戦
放課後ノック112:エクセルの社員マスタ加工に挑戦
放課後ノック113:正規化に挑戦
放課後ノック114:外れ値の加工に挑戦
放課後ノック115:欠損値の補完に挑戦
放課後ノック116:データのスクランブル化に挑戦
放課後ノック117:文字コードの自動判定に挑戦
放課後ノック118:センサーデータの加工に挑戦
放課後ノック119:JSON形式に挑戦
放課後ノック120:SQLiteに挑戦
付録
Appendix① データ結合とデータ正規化
Appendix② 機械学習
Appendix③ 最適化問題
Amazonで詳しく見る
紹介文
こんどはデータ分析に挑戦!「数式一切なし」で理解できちゃう!データ分析のきほんとしくみ
Pythonでデータ分析を体験してみよう!
【データ分析を一緒に体験しよう】
スクレイピングなどで集めた大量のデータ。
どうやって分析してたらよいか、困っていませんか?
「数式があって難しそう」
「プログラムも大変そう」
と思っている方も多いはず。
本書は、そうした方に向けて、サンプルを元にやさしく
データ分析の方法を解説しています。
【Python2年生について】
「Python2年生」は、「Python1年生」を読み終えた方を対象とした入門書です。
ある程度、技術的なことを盛り込み、本書で扱う技術について身に着けてもらいます。
『Python2年生 スクレイピングのしくみ』(ISBN:9784798161914)も刊行されています。
【対象読者】
・データの分析方法を知りたい初心者
【本書のポイント】
ヤギ博士&フタバちゃんと一緒に、データ分析の考え方から丁寧に解説。
データを分析する時に必要な前処理の方法や、データの集まりの見方、
データを見やすいグラフにする方法、データの分布の見方、予測の立て方を
解説する書籍です。
【著者プロフィール】
森 巧尚(もり・よしなお)
アプリの開発や、技術書や電子工作マガジンなどでの執筆活動。関西学院大学非常勤講師、
関西学院高等部非常勤講師、成安造形大学非常勤講師、プログラミングスクールコプリ講師など、
プログラミングに関する幅広い活動を行っている。
近著に『Python1年生』、『Python2年生 スクレイピングのしくみ』、
『Java1年生』、『動かして学ぶ!Vue.js開発入門』(いずれも翔泳社)、
『楽しく学ぶ アルゴリズムとプログラミングの図鑑』(マイナビ出版)などがある。
第1章 データ分析って何?
LESSON 01 データ分析って何
LESSON 02 データ分析の手順:PPDACサイクル
LESSON 03 Jupyter Notebookをインストールしよう
LESSON 04 Jupyter Notebookの使い方
第2章 集めたデータは前処理が必要
LESSON 05 表データを読み込もう
LESSON 06 データをざっくりと眺める
LESSON 07 データのどこを使う?
LESSON 08 データのミスをチェックする
第3章 データの集まりをひとことでいうと?:代表値
LESSON 09 データを平らに均(なら)す
LESSON 10 平均値を代表といっていいの?
LESSON 11 平均値が同じなら、同じといっていいの?
第4章 図で特徴をイメージしよう:グラフ
LESSON 12 データのばらつきがわかる
LESSON 13 基本的なグラフを作ろう
LESSON 14 ばらつきのわかるグラフ
LESSON 15 グラフをわかりやすく調整する
第5章 これって普通なこと?珍しいこと?:正規分布
LESSON 16 データのばらつきを数値で表す
LESSON 17 自然なばらつき
LESSON 18 この値は普通なこと?珍しいこと?
LESSON 19 このデータは自然なばらつき?
LESSON 20 違うばらつきのデータでの比較ができる
第6章 関係から予測しよう:回帰分析
LESSON 21 2種類のデータの関係性の強さ:相関係数
LESSON 22 散布図の上に線を引いて予測
LESSON 23 総当たりで表示させる散布図
LESSON 24 アヤメのデータを見てみよう
Amazonで詳しく見る
紹介文
Scratch3.0対応。15の作例を紹介した入門書。タブレットでの遊び方やmicro:bit連携作品も紹介。
Scratch3.0で、楽しくプログラミングを学ぼう
Scratchは、米国MITによって開発された教育用プログラミング環境です。2019年1月に3.0にバージョンアップされ、見た目の変更や新機能が追加。スマホやタブレット対応、外部サービスとの連携など、ますます楽しく使いやすくなりました。
この本のテーマは「遊べて使えるScratch」です。福笑いやトントン相撲といった昔ながらのゲームから、イマドキの写真加工風アプリまで、Scratchで再現してみました。紹介するのは全15作品。教育用コンピューター・micro:bitとつなげてあそぶ作品も紹介します。「Scratchでこんなこともできるんだ!」というおどろきがいっぱいです。
この本を書いたのは、長年子どもたちとScratchプログラミングに取り組んできた実力者、倉本大資さんと和田沙央里さん。Scratchプログラミングが初めての人でも大丈夫。つくりながら、プログラミングの基本を学んでいきましょう!
〈ここがポイント!〉
●PCだけでなくスマホ・タブレットならではの作例・micro:bit連携など、Scratch3.0の最新機能を遊びつくせる!
●難易度がさまざまな15作例。Scratchコミュニティでよく見る作品もつくれるかも?
●注目の教育用コンピューター・micro:bitに連携してできる遊びを3作品収録。micro:bitを始めてみたい方にも最適
●遊びながら、プログラミング用語や基本操作が学べる
●共有・リミックスOK! ダウンロードして使えるオリジナル素材つき
〈こんな人におススメ〉
●プログラミングをはじめてみたい人
●親子で一緒に学んでみたい人
●子どもにプログラミングを教えてみたい人
●Scratchを少し触ったことがあるけど、もっと楽しんでみたい人
●Scratchとmicro:bitをつなげてあそびたい人
※対象年齢:11歳~
〈推薦のことば〉
●村井 裕実子 氏(マサチューセッツ工科大学(MIT)メディアラボ 博士研究員)「アイデアの幅を広げてくれる、ポップで楽しいあっと驚くようなプロジェクトであふれている本。ここから、あなただけのプロジェクトをはじめましょう」
●阿部 和広 氏(青山学院大学大学院 社会情報学研究科 特任教授)
「この本には、画面の中だけでなく、現実の世界に飛び出したアイデアがのっています。これからの世の中は、中とか外とか気にしなくてよくなるかもしれないですね。そんな新しい世界で暮らすための良いガイドになるでしょう」
■0 Scratchを使う準備をしよう
・Scratchのサイトにアクセスしよう
・Scratchのアカウントを作成しよう
■1 プレゼントを贈ろう
1-1 手づくりメッセージカード
1-2 ケーキシミュレーター
1-3 誕生日ボイスメッセージ
1-4 ラッピング用包装紙
■2 便利なツールをつくろう
2-1 みんなで使える伝言メモ
2-2 お料理レシピブック
2-3 おもしろ写真加工アプリ
2-4 スコアボード
■3 テーブルゲームであそぼう
3-1 Scratch福笑い
3-2 2人でハマる!○×ゲーム
3-3 ハラハラ危機一髪ゲーム
3-4 指のバトル!トントン相撲
■4 micro:bitとつなげよう
4-0 Scratchとmicro:bitをつなげよう
4-1 フリフリおみくじ占い
4-2 ジャンプでキャッチゲーム
4-3 崖っぷち!アクションゲーム
■【学ぼう!コラム】
・Scratchブロックの扱い方
・スプライトとステージ
・メッセージ
・x座標・y座標
・ペイントエディター
・演算ブロック
・コスチュームや背景の追加
・変数・リスト
・関数(ブロック定義)
・クローン
・タブレット・スマホ対応
Amazonで詳しく見る
紹介文
データ収集の基本!スクレイピングを体験してみよう!
Pythonでスクレイピングを体験してみよう!
【スクレイピングとは】
機械学習やデータ分析になくてはならない「データ」。
このようなデータは、インターネット上に膨大にありますが、Pythonを使えば効率よくデータ収集できます。
こうした手法を「スクレイピング」といいます。
サイト自体もオープンデータ化が進んでおり、データを集めやすい環境が整ってきています。
【Python2年生について】
「Python2年生」シリーズは、「Python1年生」を読み終えた方を対象とした入門書です。
ある程度、技術的なことを盛り込み、本書で扱う技術について身に着けてもらいます。
【ターゲット】
・ネット上からデータ収集を行う初心者
・データ分析の手前の初心者
【本書の売り】
ヤギ博士&フタバちゃんと一緒に、インターネットからのファイルのダウンロード方法、
HTML解析の方法、いろいろなデータの読み書き、
APIの使い方といったデータ収集と便利なライブラリを利用した簡単な可視化手法を解説する書籍です。
また最終的にデータ収集を自動化する方法も簡単に解説します。
第1章 Pythonでデータをダウンロード
LESSON 01 スクレイピングってなに?
LESSON 02 Pythonをインストールしてみよう
LESSON 03 requestsでアクセスしてみよう
第2章 HTMLを解析しよう
LESSON 04 HTMLを解析してみよう
LESSON 05 ニュースの最新記事一覧を取得してみよう
LESSON 06 リンク一覧をファイルに書き出そう
LESSON 07 画像を一括ダウンロードしよう
第3章 表データを読み書きしよう
LESSON 08 pandasを使ってみよう
LESSON 09 さまざまなデータの加工
LESSON 10 グラフで表示してみよう
LESSON 11 Excelファイルを読み書きしてみよう
第4章 オープンデータを分析してみよう
LESSON 12 オープンデータってなに?
LESSON 13 郵便局:郵便番号データ
LESSON 14 e-Stat:政府統計の相互窓口
LESSON 15 キッズすたっと:探そう統計データ
LESSON 16 自治体のデータ:データシティ鯖江
第5章 Web APIでデータを収集しよう
LESSON 17 Web APIってなに?
LESSON 18 OpenWeatherMapってなに?
LESSON 19 現在の天気を調べよう
LESSON 20 現在から5日間(3時間ごと)の天気を調べよう
Amazonで詳しく見る
紹介文
2010年の刊行から約100,000部の実績を誇るロングセラーを、ECMAScript 2022に対応した内容で200ページ増の大幅改訂。最新の基本文法から、開発に欠かせない応用トピックまで解説します。JavaScriptらしく書くために大切なオブジェクトの扱い方や、大規模開発でさらに実用的になったオブジェクト指向構文を学び、しっかりと動くプログラムの作り方を本質から理解できます。
Chapter 1 イントロダクション
1.1 JavaScriptとは?
1.1.1 JavaScriptの歴史
1.1.2 復権のきっかけはAjax、そしてHTML5の時代へ
1.1.3 JavaScriptライブラリからフレームワークの時代へ
1.2 標準JavaScript「ECMAScript」とは?
1.2.1 ECMAScriptのバージョン
1.2.2 ECMAScript仕様策定の流れ
1.2.3 ブラウザーの対応状況
1.3 JavaScript実行環境のもう1つの選択肢 Node.js
1.3.1 Node.jsとは?
1.3.2 実行環境によって利用できる機能は異なる
1.4 JavaScriptアプリを開発/実行するための基本環境
1.4.1 準備すべきソフトウェア
1.4.2 Visual Studio Codeのインストール
1.4.3 サンプルファイルの準備
1.5 ブラウザー付属の開発者ツール
1.5.1 開発者ツールを概観する
1.5.2 HTML/CSSのソースを確認する -[要素]タブ
1.5.3 通信状況をトレースする -[ネットワーク]タブ
1.5.4 スクリプトをデバッグする -[ソース]タブ
1.5.5 ストレージ/クッキーの内容を確認する -[アプリケーション]タブ
1.5.6 ログ確認/オブジェクト操作などの万能ツール -[コンソール]タブ
Chapter 2 基本的な書き方を身につける
2.1 JavaScriptの基本的な記法
2.1.1 JavaScriptで「こんにちは、世界!」
2.1.2 文字コードのルール
2.1.3 JavaScriptをHTMLファイルに組み込む - script要素
2.1.4 文(Statement)のルール
2.1.5 コメントを挿入する
2.2 変数
2.2.1 変数を宣言する
2.2.2 識別子の命名規則
2.2.3 よりよい命名のための指針
2.2.4 定数を宣言する
2.3 データ型
2.3.1 データ型の分類
2.3.2 論理リテラル(boolean)
2.3.3 数値リテラル(number)
2.3.4 文字列リテラル(string)
2.3.5 配列リテラル(array)
2.3.6 オブジェクトリテラル(object)
2.3.7 関数リテラル(function)
2.3.8 未定義値(undefined)とヌル値(null)
Chapter 3 値の演算操作を理解する - 演算子
3.1 演算子とは?
3.2 算術演算子
3.2.1 加算演算子(+)
3.2.2 インクリメント演算子(++)とデクリメント演算子(--)
3.2.3 小数点を含む演算には注意
3.3 代入演算子
3.3.1 基本型と参照型による代入の違い -「=」演算子
3.3.2 定数は「再代入できない」
3.3.3 分割代入(配列)
3.3.4 分割代入(オブジェクト)
3.4 比較演算子
3.4.1 等価演算子(==)
3.4.2 厳密な等価演算子(===)
3.4.3 小数点数の比較
3.4.4 条件演算子(?:)
3.5 論理演算子
3.5.1 ショートカット演算(短絡演算)
3.6 ビット演算子
3.6.1 ビット論理演算子
3.6.2 ビットシフト演算子
3.6.3 例:ビットフィールドによるフラグ管理
3.7 その他の演算子
3.7.1 配列要素、プロパティを削除する - delete演算子
3.7.2 値の型を判定する - typeof演算子
3.7.3 補足:型の変換
3.8 演算子の優先順位と結合則
3.8.1 優先順位
3.8.2 結合則
Chapter 4 スクリプトの基本構造を理解する - 制御構文
4.1 制御構文とは?
4.2 条件分岐
4.2.1 条件式の真偽で処理を分岐する - if命令
4.2.2 複数の条件式で多岐分岐を表現する - else if命令
4.2.3 if命令の入れ子
4.2.4 補足:中カッコの省略は要注意
4.2.5 条件式を指定する場合の注意点
4.2.6 式の値によって処理を分岐する - switch命令
4.3 繰り返し処理
4.3.1 条件式によってループを制御する - while/do...while命令
4.3.2 補足:無限ループ
4.3.3 指定回数だけループを処理する - for命令
4.3.4 連想配列の中身を順に処理する - for...in命令
4.3.5 配列の要素を順に処理する - for...of命令
4.3.6 配列を反復処理するための専用メソッド
4.4 ループの制御
4.4.1 ループを途中で終了する - break命令
4.4.2 特定の周回をスキップする - continue命令
4.4.3 入れ子のループをまとめて中断/スキップする - ラベル構文
4.5 制御命令のその他の話題
4.5.1 例外を処理する - try...catch...finally命令
4.5.2 例外をスローする - throw命令
4.5.3 JavaScriptの危険な構文を禁止する - Strictモード
4.5.4 デバッガーを起動する - debugger命令
Chapter 5 基本データを操作する - 組み込みオブジェクト
5.1 オブジェクトとは?
5.1.1 オブジェクト=プロパティ+メソッド
5.1.2 オブジェクトを生成するための準備 - new演算子
5.1.3 メソッド/プロパティの呼び出し - ドット演算子
5.1.4 静的プロパティ/静的メソッド
5.1.5 組み込みオブジェクトとは
5.2 文字列を操作する - Stringオブジェクト
5.2.1 文字列の長さを取得する
5.2.2 文字列を大文字⇔小文字で変換する
5.2.3 部分文字列を取得する
5.2.4 文字列を検索する
5.2.5 文字列に特定の部分文字列が含まれるかを判定する
5.2.6 文字列の前後から空白を除去する
5.2.7 文字列を置き換える
5.2.8 文字列を分割する
5.2.9 文字列が指定長になるように指定文字で補足する
5.2.10 文字列をn回繰り返したものを取得する
5.2.11 文字列をUnicode正規化する
5.3 数値リテラルを操作する - Numberオブジェクト
5.3.1 Numberオブジェクトの定数
5.3.2 数値形式を変換する
5.3.3 文字列を数値に変換する
5.3.4 基本的な数学演算を実行する
5.4 日付/時刻値を操作する - Dateオブジェクト
5.4.1 日付/時刻値を生成する
5.4.2 日付/時刻要素を取得する
5.4.3 日付/時刻要素を設定する
5.4.4 日付/時刻値を加算/減算する
5.4.5 日付/時刻の差を求める
5.4.6 日付/時刻値を文字列に変換したい
5.5 値の集合を管理/操作する - Arrayオブジェクト
5.5.1 配列を生成する
5.5.2 要素を追加/削除する
5.5.3 配列に複数要素を追加/置換/削除する
5.5.4 配列から特定範囲の要素を取得する
5.5.5 配列の内容を検索する
5.5.6 入れ子の配列をフラット化する
5.5.7 配列内の要素を結合する
5.5.8 配列内の要素を移動する
5.5.9 配列ライクなオブジェクトを配列化する
5.5.10 配列を複製する
5.5.11 配列の要素を並べ替える
5.5.12 配列の内容を順に処理する
5.5.13 配列を指定されたルールで加工する
5.5.14 任意の条件式によって配列を検索する
5.5.15 条件式に合致する要素が存在するかを判定する
5.5.16 配列から条件に合致した要素だけを取得する
5.5.17 配列内の要素を順に処理して1つにまとめる
5.6 連想配列を操作する - Mapオブジェクト
5.6.1 マップを初期化する
5.6.2 マップの値を設定/取得する
5.6.3 マップから既存のキーを削除する
5.6.4 マップからすべてのキー/値を取得する
5.6.5 Object⇔Mapを相互変換する
5.6.6 弱い参照キーのマップ
5.7 重複しない値の集合を操作する - Setオブジェクト
5.7.1 セットを初期化する
5.7.2 セットの値を追加/削除する
5.7.3 セットの内容を取得/確認する
5.8 正規表現で文字列を自在に操作する - RegExpオブジェクト
5.8.1 正規表現の基本
5.8.2 RegExpオブジェクトを生成する
5.8.3 文字列が正規表現パターンにマッチしたかを判定する
5.8.4 正規表現パターンにマッチした文字列を取得する
5.8.5 正規表現オプションでマッチングの方法を制御する
5.8.6 正規表現のマッチング結果をまとめて取得する
5.8.7 正規表現で文字列を置き換える
5.8.8 正規表現で文字列を分割する
5.8.9 例:正規表現による検索
5.9 その他のオブジェクト
5.9.1 JavaScriptでよく利用する機能を提供する - Globalオブジェクト
5.9.2 オブジェクト⇔JSON文字列を相互に変換する - JSONオブジェクト
5.9.3 シンボルを作成する - Symbolオブジェクト
Chapter 6 繰り返し利用するコードを1ヵ所にまとめる - 関数
6.1 関数の基本
6.1.1 ユーザー定義関数が必要な理由
6.1.2 ユーザー定義関数の基本
6.1.3 関数名
6.1.4 仮引数と実引数
6.1.5 戻り値
6.2 関数を定義するための3種の記法
6.2.1 Functionコンストラクター経由で定義する
6.2.2 関数リテラルで定義する
6.2.3 アロー関数で定義する
6.2.4 関数定義の際の注意点
6.3 変数はどの場所から参照できるか - スコープ
6.3.1 スコープの基本
6.3.2 仮変数のスコープ
6.3.3 スコープから見たvar/let命令
6.3.4 スコープに関わるその他の注意点
6.4 引数のさまざまな記法
6.4.1 JavaScriptは引数の数をチェックしない
6.4.2 引数の既定値を設定する
6.4.3 可変長引数の関数を定義する
6.4.4 スプレッド構文による引数の展開
6.4.5 名前付き引数でコードを読みやすくする
6.5 関数呼び出しと戻り値
6.5.1 複数の戻り値を返したい
6.5.2 関数自身を再帰的に呼び出す - 再帰関数
6.5.3 関数の引数も関数 - 高階関数
6.5.4 「使い捨ての関数」は匿名関数で
6.6 高度な関数のテーマ
6.6.1 テンプレート文字列をアプリ仕様にカスタマイズする - タグ付きテンプレート文字列
6.6.2 変数はどのような順番で解決されるか - スコープチェーン
6.6.3 その振る舞いオブジェクトの如し - クロージャ
Chapter 7 JavaScriptらしいオブジェクトの用法を理解する - Objectオブジェクト
7.1 オブジェクトを生成する
7.1.1 オブジェクトをリテラルで表現する
7.1.2 コンストラクター経由でオブジェクトを生成する - new演算子
7.1.3 より詳しい設定付きでオブジェクトを生成する
7.2 オブジェクトの雛型「プロトタイプ」を理解する
7.2.1 プロトタイプの基本
7.2.2 プロトタイプチェーンの挙動を確認する
7.2.3 プロパティを追加/更新/削除した場合の挙動
7.3 すべてのオブジェクトの雛型 - Objectオブジェクト
7.3.1 オブジェクトをマージする
7.3.2 オブジェクトを複製する
7.3.3 プロパティを操作する
7.3.4 不変オブジェクトを定義する
Chapter 8 大規模開発でも通用する書き方を身につける - オブジェクト指向構文
8.1 クラスの基本
8.1.1 最もシンプルなクラスを定義する
8.1.2 クラスに属する情報を準備する - プロパティ
8.1.3 クラスに属する処理を準備する - メソッド
8.1.4 クラスを初期化する - コンストラクター
8.1.5 静的プロパティ/静的メソッドを定義する
8.1.6 文脈によって中身が変化する変数 - thisキーワード
8.1.7 既存のクラスにメソッドを追加する
8.2 利用者に見せたくない機能を隠蔽する - カプセル化
8.2.1 カプセル化とは?
8.2.2 プライベートメンバーの実装
8.2.3 ゲッター/セッター
8.2.4 補足:不変クラスを定義する
8.3 既存のクラスを拡張する - 継承
8.3.1 継承の基本
8.3.2 基底クラスのメソッド/コンストラクターを上書きする
8.3.3 基底クラスのメソッドを呼び出す - superキーワード
8.3.4 継承以外のクラス再利用の手段 - 委譲
8.3.5 補足:ミックスイン
8.3.6 オブジェクトの型を判定する
8.4 アプリを機能単位にまとめる - モジュール
8.4.1 モジュールを定義する
8.4.2 モジュールを利用する
8.4.3 import命令のさまざまな記法
8.4.4 export命令のさまざまな記法
8.5 オブジェクト指向構文の高度なテーマ
8.5.1 列挙可能なオブジェクトを定義する - イテレーター
8.5.2 列挙可能なオブジェクトをよりかんたんに実装する - ジェネレーター
8.5.3 オブジェクトを基本型に変換する
8.5.4 オブジェクトの基本的な動作をカスタマイズする - Proxyオブジェクト
Chapter 9 HTMLやXMLの文書を操作する - DOM(Document Object Model)
9.1 DOMの基本を押さえる
9.1.1 マークアップ言語を操作する標準のしくみ「DOM」
9.1.2 文書ツリーとノード
9.2 クライアントサイドJavaScriptの前提知識
9.2.1 要素ノードを取得する
9.2.2 文書ツリー間を行き来する - ノードウォーキング
9.2.3 イベントをトリガーにして処理を実行する - イベントドリブンモデル
9.3 属性値やテキストを取得/設定する
9.3.1 属性値を取得する
9.3.2 属性値を設定する
9.3.3 属性値を削除する
9.3.4 要素のプロパティを取得/設定する
9.3.5 JavaScriptからスタイルを操作する
9.3.6 テキストを取得/設定する
9.4 フォーム要素にアクセスする
9.4.1 入力ボックス/選択ボックスの値を取得する
9.4.2 チェックボックスの値を取得する
9.4.3 ラジオボタンの値を取得する
9.4.4 ラジオボタン/チェックボックスの値を設定する
9.4.5 複数選択できるリストボックスの値を取得する
9.4.6 アップロードされたファイルの情報を取得する
9.5 ノードを追加/置換/削除する
9.5.1 innerHTMLプロパティとどのように使い分けるか
9.5.2 ページに新たなコンテンツを追加する
9.5.3 既存のノードを置換/削除する
9.5.4 HTMLCollection/NodeListを繰り返し処理する場合の注意点
9.6 より高度なイベント処理
9.6.1 イベントリスナーを削除する
9.6.2 イベントに関わる情報を取得する - イベントオブジェクト
9.6.3 イベント処理をキャンセルする
9.6.4 イベントの動作オプションを指定する
9.6.5 イベントリスナーに任意の追加情報を引き渡す
Chapter 10 クライアントサイドJavaScript開発を極める
10.1 ブラウザーオブジェクトで知っておきたい基本機能
10.1.1 ブラウザーオブジェクトの階層構造
10.1.2 ブラウザーオブジェクトにアクセスするには
10.1.3 確認ダイアログを表示する - confirmメソッド
10.1.4 タイマー機能を実装する - setInterval/setTimeoutメソッド
10.1.5 ウィンドウサイズ/位置などの情報を取得する
10.1.6 コンテンツのスクロール位置を設定/取得する - scrollXxxxxメソッド
10.1.7 表示ページのアドレス情報を取得/操作する - locationオブジェクト
10.1.8 履歴に沿ってページを前後に移動する - historyオブジェクト
10.1.9 JavaScriptによる操作をブラウザーの履歴に残す - pushStateメソッド
10.2 デバッグ情報を出力する - consoleオブジェクト
10.2.1 コンソールにログを出力する
10.2.2 知っておくと便利なログメソッド
10.3 ユーザーデータを保存する - Storageオブジェクト
10.3.1 ストレージにデータを保存/取得する
10.3.2 既存のデータを削除する
10.3.3 ストレージからすべてのデータを取り出す
10.3.4 ストレージにオブジェクトを保存/取得する
10.3.5 ストレージの変更を監視する
10.4 非同期通信の基本を理解する - Fetch API
10.4.1 SPAとは?
10.4.2 Fetch APIの基本
10.4.3 リクエスト時にデータを送信する
10.4.4 異なるオリジンにアクセスする
10.4.5 補足:クロスドキュメントメッセージングによるクロスオリジン通信
10.5 非同期処理を手軽に処理する - Promiseオブジェクト
10.5.1 Promiseオブジェクトの基本を押さえる
10.5.2 非同期処理を連結する
10.5.3 複数の非同期処理を並行して実行する
10.5.4 Promiseの処理を同期的に記述する
10.5.5 非同期処理を伴う反復処理を実装する
10.6 バックグラウンドでJavaScriptのコードを実行する - Web Worker
10.6.1 ワーカーを実装する
10.6.2 ワーカーを起動する
Chapter 11 現場で避けて通れない応用知識
11.1 コマンドラインからJavaScriptコードを実行する - Node.js
11.1.1 Node.jsのインストール
11.1.2 JavaScriptファイルの実行
11.1.3 ライブラリをインストールする
11.1.4 ライブラリの復元
11.2 アプリのテストを自動化する - Jest
11.2.1 テストコードの基本
11.2.2 実行コマンドの準備
11.2.3 単体テストの実行
11.2.4 テスト実行時の役立つオプション
11.3 フロントエンドアプリの開発環境をすばやく立ち上げる - Vite
11.3.1 Viteの特徴
11.3.2 Viteの基本
11.3.3 本番環境向けのビルドを実施する
11.3.4 JavaScript以外のリソースにも対応
11.4 JavaScriptの「べからず」なコードを検出する - ESLint
11.4.1 ESLintの基本
11.4.2 リアルタイムに解析結果を確認する
11.4.3 ESLintルールのカスタマイズ
11.5 ドキュメンテーションコメントでコードの内容をわかりやすくする - JSDoc
11.5.1 ドキュメンテーションコメントの記述ルール
11.5.2 ドキュメントの生成
Column
VSCodeの便利な拡張機能(1) - Trailing Spaces
VSCodeの便利な拡張機能(2) - Regex Previewer
本書の読み進め方 - 著者からのメッセージ
ブラウザー環境でJavaScriptのコードを実行する - paiza.IO
VSCodeの便利な拡張機能(3) - JavaScript (ES6) code snippets
VSCodeの便利な拡張機能(4) - IntelliSense for CSS class names in HTML
よく見かけるエラーとその対処法
VSCodeの便利な拡張機能(5) - Code Spell Checker
VSCodeの便利な拡張機能(6) - Todo Tree
知っておきたい!JavaScriptの関連キーワード(1) - altJS
知っておきたい!JavaScriptの関連キーワード(2) - TypeScript
ECMAScript期待の機能
VSCodeの便利な拡張機能(7) - Bookmarks
知っておきたい!JavaScriptの関連キーワード(3) - WebAssembly
知っておきたい!JavaScriptの関連キーワード(4) - コンポーネント指向
VSCodeの便利な拡張機能(8) - SFTP
知っておきたい!JavaScriptの関連キーワード(5) - Web Components
知っておきたい!JavaScriptの関連キーワード(6) - importmaps
script要素の知っておきたい属性(1) - async属性
script要素の知っておきたい属性(2) - integrity属性
VSCodeの便利な拡張機能(9) - 拡張テーマ
script要素の知っておきたい属性(3) - integrity属性の作り方
script要素の知っておきたい属性(4) - crossorigin/referrerpolicy属性
本書を読み終えた後に
Amazonで詳しく見る
紹介文
機械学習やディープラーニング、データ分析などのスキルが求められるビジネスの現場が急増しています。一方で、入門書で得た知識を実際の現場でどうやって活かしていけばいいのか悩んでいる方も多くいます。本書は、Python実践データ分析100本ノックシリーズの第3弾として、様々なデータを扱う上で必須となるデータの加工・可視化から機械学習の前処理まで、実際のビジネスの現場で必要とされるノウハウが身につく実践問題集です。
システムデータの加工・可視化から、機械学習の前処理まで。Excel・時系列・言語・画像・音データ・特殊な加工・可視化。実用的なサンプルから100本で、ビジネス現場で即戦力になれる「基礎力」を身につけよう!
第1部 構造化データ
第1章 システムデータの加工・可視化を行う20本ノック
ノック1: 法人情報データを読み込んでみよう
ノック2: 読み込んだデータを確認しよう
ノック3: ヘッダ用のテキストファイルを読み込もう
ノック4: ヘッダ行を追加しよう
ノック5: 統計量や欠損値を確認しよう
ノック6: 繰り返し処理で新しいデータを追加しよう
ノック7: マスタを読み込んで項目を横に繋げよう
ノック8: テキストの連結や分割をしよう
ノック9: 日付を加工しよう
ノック10: 年度を設定しよう
ノック11: 加工したデータをファイルに出力しよう
ノック12: 不要な項目の削除と並べ替えをしよう
ノック13: まとまった単位で集計しよう
ノック14: 市区町村別の法人数を可視化しよう
ノック15: グラフの縦横と表示順を変えてみよう
ノック16: グラフのタイトルとラベルを設定しよう
ノック17: グラフの見た目をもっと変えてみよう
ノック18: 90日以内に新規登録された法人数を可視化しよう
ノック19: 年度別の推移を可視化しよう
ノック20: グラフとデータを出力しよう
第2章 Excelデータの加工・可視化を行う20本ノック
ノック21: Excelデータを読み込んでみよう
ノック22: カラムを抽出して付与してみよう
ノック23: 全シートのデータを読み込んでみよう
ノック24: データの値を計算で修正しよう
ノック25: 必要なカラムだけに絞り込もう
ノック26: 縦持ちデータを作成しよう
ノック27: 縦持ちデータを整形しよう
ノック28: 発電実績データを加工しよう
ノック29: 可視化用データを仕上げよう
ノック30: データの分布をヒストグラムで可視化してみよう
ノック31: データの分布を箱ひげ図で可視化してみよう
ノック32: 最近の発電量を可視化してみよう
ノック33: 先月の発電量とあわせて可視化してみよう
ノック34: 電力の時系列変化を可視化してみよう
ノック35: 電力の割合を可視化してみよう
ノック36: 電力量の多い都道府県を比較してみよう
ノック37: 都道府県、年月別の電力量を可視化してみよう
ノック38: 変数の関係性を可視化してみよう
ノック39: データを整形してExcel形式で出力しよう
ノック40: シート別にExcelデータを出力しよう
第3章 時系列データの加工・可視化を行う10本ノック
ノック41: 時系列データを読み込んでみよう
ノック42: 日付の範囲を確認しよう
ノック43: 日毎のデータ件数を確認しよう
ノック44: 日付から曜日を算出しよう
ノック45: 特定範囲のデータに絞り込もう
ノック46: 秒単位のデータを作成しよう
ノック47: 秒単位のデータを整形しよう
ノック48: 秒間の欠損データを処理しよう
ノック49: 通った人数を可視化しよう
ノック50: 移動平均を計算して可視化しよう
第2部 非構造化データ
第4章 言語データの加工・可視化を行う10本ノック
ノック51: テキストファイルを読み込もう
ノック52: 本文を抽出して1つに纏めよう
ノック53: 本文以外の項目を取り出そう
ノック54: 形態素解析で単語に分割しよう
ノック55: 分割した単語をデータフレームで保持しよう
ノック56: 名詞と動詞を取り出そう
ノック57: 不要な単語を除外しよう
ノック58: 単語の使用状況をグラフで可視化しよう
ノック59: Word Cloudで可視化してみよう
ノック60: n-gramを作ってみよう
まとめ
第5章 画像データの加工・可視化を行う10本ノック
ノック61: 画像ファイルを読み込んで表示してみよう
ノック62: 画像データの中身を確認しよう
ノック63: 画像データを切り出してみよう
ノック64: カラーヒストグラムを可視化してみよう
ノック65: RGB変換を行って画像を表示してみよう
ノック66: 画像のサイズを変更してみよう
ノック67: 画像を回転させてみよう
ノック68: 画像処理をしてみよう
ノック69: 画像にテキストや線を描画してみよう
ノック70: 画像を保存してみよう
第6章 音データの加工・可視化を行う10本ノック
ノック71: 音データを再生してみよう
ノック72: 音データを読み込んでみよう
ノック73: 音データの一部を取得してみよう
ノック74: 音データのサンプリングレートを変えてみよう
ノック75: 音データを可視化してみよう
ノック76: 音データの大きさを取得してみよう
ノック77: 周波数スペクトルを表示してみよう
ノック78: スペクトログラムを可視化してみよう
ノック79: 音の高さや長さを変えてみよう
ノック80: 音データを保存しよう
第3部 機械学習向けの加工と特殊なデータ加工
第7章 機械学習の前処理を行う10本ノック
ノック81: 機械学習で予測するデータを設定しよう
ノック82: TrainデータとTestデータに分割しよう
ノック83: データを機械学習に適した形式へ変換しよう
ノック84: 外れ値の検出をしよう
ノック85: データの分布をみてスケーリング手法を考えよう
ノック86: 分布に従ってスケーリングをやってみよう
ノック87: スケーラーを保存しよう
ノック88: 欠損値の処理をやってみよう
ノック89: 学習時のサンプル比率を調整しよう
ノック90: Testデータの前処理をしよう
第8章 特殊な加工・可視化を行う10本ノック
ノック91: 大容量CSVデータを扱ってみよう
ノック92: Json形式のファイルを扱ってみよう
ノック93: Webからデータを取得してみよう
ノック94: configファイルを扱ってみよう
ノック95: 動画ファイルを音声ファイルへ変換してみよう
ノック96: 動画ファイルを画像ファイルへ分割してみよう
ノック97: PowerPointやWordファイルを読み込んでみよう
ノック98: PDFデータを読み込んでみよう
ノック99: インタラクティブなグラフを作成してみよう
ノック100: 3次元グラフを作成してみよう
Amazonで詳しく見る
紹介文
コンピュータにものを考えさせる「アルゴリズム」を通じて、プログラミングの世界に第一歩を踏み出そう
プログラミングとアルゴリズムの一番やさしい新定番書!
プログラミング言語を習得しても、実際にコードを書いてみようとすると
「どう書いて良いかわからない」と感じる方は多いと思います。
本書はアルゴリズムとプログラムロジックの基本を通じて、
プログラミング(コードを書く)の実際を学んでいただけます。
アルゴリズムは、与えられたさまざまな課題をプログラムで効率良く
処理するためのテクニックの集合体です。これらを通じて、誰でも効率の良い
効果的なコードを作るための第一歩を踏み出すことができます。
・絵を多用し、短い解説で絵本のようにビジュアルに理解することができます。
・2ページを単位とした説明、基礎に絞り込んだ内容でスピーディに習得。
・説明は基本中の基本から。「C言語の基礎」から学べます。
・プログラミングのために必要な知識を広くフォロー、コードの書き方が身につきます。
・環境構築から内容を最新にアップデートし、実際に試して学ぶことができます。
【「絵本」シリーズは、ラインナップをリニューアル!】
翔泳社の「絵本シリーズ」は、豊富なイラストと簡潔な解説で
コンピュータ技術に入門できる初心者向けのシリーズです。
コンピュータ言語/技術の超初心者や手軽に習得したい方に最適な入門書です。
新しい「絵本シリーズ」では、旧来の分かりやすさ、親しみやすさ、
基礎に徹した内容というコンセプトはそのままに、Web/ネットが全盛となった
現在のコンピュータ技術の潮流に合わせた解説を心掛けます。
『Cの絵本』『Javaの絵本』『Pythonの絵本』などを皮切りにラインナップを順次刷新、
さらに新しい仲間を増やしてラインナップを充実していきます。
アルゴリズムの勉強をはじめる前に
●アルゴリズムとは何か
●プログラムができるまで
●フローチャート
●C言語について
●プログラミングから実行までの流れ
●プログラム記述時の約束
第1章 C言語の基礎
●第1章はここがkey
●Hello World!
●変数と定数
●数値型
●配列
●ポインタ
●文字と文字列
●計算の演算子
●その他の演算子
●ファイルの読み書き
●キーボード入力
●メモリの確保
●構造体
[コラム]~変数名のつけ方~
第2章 基本的な制御
●第2章はここがkey
●制御の種類と構造化
●if文
●for文とwhile文
●その他の制御文
[コラム]~構造化以前のプログラム~
第3章 制御の活用
●第3章はここがkey
●1から5までの和
●配列から値を見つける(1)
●配列から値を見つける(2)
●平均をとる
●棒グラフを描く
●2つの文字列の連結
●逆さに読むと
●ファイルの内容を表示する
●表?裏?コイン投げゲーム
[コラム]~スタックとキュー~
第4章 関数の利用
●第4章はここがkey
●関数とは?
●関数の定義と利用
●main()関数
●関数の特徴
●関数の活用
●再帰処理
[コラム]~関数のポインタ~
第5章 問題への取り組み方
●第5章はここがkey
●問題を整理する
●プログラムの設計
●プログラムの記述(1)
●プログラムの記述(2)
●プログラムを整理する
●テストとデバッグ
●完成プログラム
[コラム]~ボトムアップ的・トップダウン的な考え方~
第6章 実践的プログラミング
●第6章はここがkey
●仕様を分析する
●データ形式を決める(1)
●データ形式を決める(2)
●基本設計の決定(1)
●基本設計の決定(2)
●メイン部分を作る
●機能を作る(1)
●機能を作る(2)
●完成プログラム
[コラム]~時間がかかる処理~
第7章 高度なアルゴリズム
●第7章はここがkey
●素数を求める
●素因数分解
●最大公約数を求める
●リンクリスト(1)
●リンクリスト(2)
●サンプルプログラム
[コラム]~アルゴリズムの工夫~
付録
●プログラムでつまったら
●プログラミングの心得
●Visual Studioのインストール
●Visual Studioを使った開発
●一般的なデバッグ手法
●Visual Studioのデバッガー
Amazonで詳しく見る
紹介文
プログラマーが知っておくべき認知科学のこと。
長年プログラミング教育の研究に取り組んでいる著者が、最新の「認知科学」に基づいて、プログラミングの際のさまざまな作業や技術の取得を効率的に行うための方法を解説しています。
まずは、コードを書いたり読んだりするときに「プログラマーの脳」がどのように働くかという認知プロセスについて説明しています。なぜなら、作業が異なれば、利用する認知プロセスも異なり、使うべきテクニックも変わってくるからです。
認知プロセスの段階や相互作用について理解したところで、「コードを速く、深く読む」「コードを読みやすくする」「新しい言語を短時間で習得する」といったことについて、どの認知プロセスを活用しているのかを考えて、どのような方法を採るべきかなのかを具体例を挙げて説明しています。また、プログラミングそのものではありませんが、新しい開発者を迎え入れる際のオンボーディングプロセスについても、認知科学的な側面から掘り下げています。
本書は、13の章から成り、大きく4つの部に分けられています。各章では、次のような内容を説明しています。
・第1章:プログラミングを行う際に重要な3つの認知プロセスと、それぞれの認知プロセスがどのような混乱と関連するか
・第2章:コードを素早く読み、その仕組みを理解する方法
・第3章:プログラミングの構文や概念をよりよく、より簡単にきちんと学ぶ方法
・第4章:複雑なコードを読み解くためのテクニック
・第5章:見慣れないコードをしっかりと理解するためのテクニック
・第6章:プログラミングにおける問題解決のテクニック
・第7章:コードや思考中のバグを回避するためのテクニック
・第8章:特にコードベース全体において、明確な変数名を選択する方法
・第9章:「コードの臭い」とその背後にある認知科学的背景
・第10章:複雑な問題を解決するための、より高度なテクニック
・第11章:コーディングという行為そのものと、プログラミングにおけるさまざまなタスク
・第12章:大規模なコードベースを改善する方法
・第13章:新しい開発者のオンボーディングプロセスの苦痛を軽減する方法
本書は、脳の働きをより深く理解することで、プログラマーとしてのスキルや習慣を向上させたいと願う、すべてのレベルのプログラマーのために書かれていますが、特に「職業プログラマー」が直面するような状況が取り上げられています。チーム開発、大規模ソフトウェアシステム構築、オンボーディングサポートなどの経験などがあると、本書をより理解し、活用できるでしょう。また、JavaScript、Python、Javaなど(APLやBASICも!)の言語で書かれたコード例が出てきますが、特定の言語の知識や経験は必要ありません。
長年プログラミング教育の研究に取り組んでいる著者が、最新の「認知科学」に基づいて、プログラミングの際のさまざまな作業や技術の取得を効率的に行うための方法を解説しています。
Part 1 コードをよりよく読むために
Chapter 1 コーディング中の混乱を紐解く
Chapter 2 コードを速読する
Chapter 3 プログラミング言語の文法を素早く習得する方法
Chapter 4 複雑なコードの読み方
Part 2 コードについて考える
Chapter 5 コードの深い理解に到達する
Chapter 6 プログラミングに関する問題をよりうまく解決するには
Chapter 7 誤認識:思考に潜むバグ
Part 3 よりよいコードを書くために
Chapter 8 よりよい命名を行う方法
Chapter 9 汚いコードとそれによる認知的負荷を避けるための2つのフレームワーク
Chapter 10 複雑な問題をより上手に解決するために
Part 4 コーディングにおける共同作業
Chapter 11 コードを書くという行為
Chapter 12 より大きなシステムの設計と改善
Chapter 13 新しい開発者のオンボーディング
Amazonで詳しく見る
紹介文
Pythonエキスパートの支持を集めている書籍の改訂版。堅牢でパフォーマンスの高い優れたプログラムを書くノウハウをまとめた。
Pythonプログラマの圧倒的支持を得るロングセラー待望の改訂版!
発刊以来、多くのPythonエキスパートの支持を集め、増刷を重ねている書籍の待望の改訂版。ベストプラクティス、ヒント、落とし穴の避け方や達人プログラマのコード、新機能などを紹介し、堅牢でパフォーマンスの高い優れたプログラムを書くノウハウをまとめています。今回、Pythonのアップデートに合わせて全面改訂。第1版の内容に加えて、データ構造、内包表記とジェネレータ、性能、デバッグについての新たな章を追加し、さらに内容を充実させています。第1版では59項目だったトピックが、第2版では90項目に増えています。Python 3.8対応。
Amazonで詳しく見る
紹介文
プログラミングを学びの中に取り入れることのよさや、 探究的な授業のつくり方、実践例等をまとめた一冊です。
子供たちがわくわくするようなプログラミング授業を!!
学校や家庭でコンピュータを活用した教えは進んできている一方で、
プログラミングを活用した授業のデザイン、教え方に悩みを抱えている先生や保護者が多いのが実情です。
本書では学校で、家庭で、ワークショップで使える学びのノウハウを現役小学校教諭が実践例でわかりやすく解説します。
コンピュータやプログラミングを学びの中に取り入れることで、子供主体の課題発見・解決の幅をより一層広げてあげましょう。
【本書まえがきより】
最近はコンピュータやプログラミングを学びの中に取り入れることで、社会とのつながりを容易に感じさせたり、子供主体の課題発見・解決の幅を一層広げたりできると感じています。
また、探究的な学びが子供を夢中にさせ、深く学ぶことにつながっていることも感じています。
私自身、コンピューターやプログラミング、電子工作を学ぶことで、身のまわりの物の見方や考え方が変化したり、視野が広がったりしました。
この視点から物事を捉えることで、これまでの自分に無かった方向から問いを見い出したり、解決方法を発想したりすることもできるようになりました。
授業をしていると、子供たちにもこのような思考が生まれてきているのではないかと感じています。
今の子供たちは日常的にスマートフォンやタブレットを使っていることに加え、プログラミングも学び始めています。
このような子供たちは、私たちが想像しない視点から物事を捉えて学んでいるかもしれません。
これからの時代を生きる子供たちはコンピュータやプログラミングを理解して、それらとうまく付き合ったり、 問題を解決するツールとして適切に活用したりする資質・能力が必要になると思います。
それは、Society5.0 の時代やVUCA(未来が見通せない状況)といわれる先行きが不透明で予測困難な時代でも幸せに生きるための方策の一つになるでしょう。
「プログラミングってどう取り入れればいいの」
「プログラミングはどの教科でできるの」
といったお困りの声がしばしば聞かれます。
学校ではコンピュータを活用した授業は進んできている一方で、 プログラミングを活用した授業のデザインに悩みを抱えている先生は多いのではないかと思います。
本書ではプログラミングを学びの中に取り入れることのよさや、プログラミングを活用した探究的な授業のつくり方、実践例等をまとめました。
小学校での事例が中心ですが、その他、家庭、ワークショップでも参考にできることがあるかと思います。
本書が「子供たちがわくわくする学び」をつくり出す一助になれば幸いです。
宮城県登米市立佐沼小学校教諭 金 洋太
本書ではプログラミングを学びの中に取り入れることのよさや、 micro:bitを使いプログラミングを活用した探究的な授業のつくり方、実践例等をまとめた一冊です。
第1章 プログラミングを生かした新しい授業デザイン 7
なぜ新しい教育が必要になったのか 8
プログラミングを生かした授業デザイン 14
家庭やワークショップでプログラミングを教えるには… 26
第2章 授業再録 29
授業1. ミッション micro:bit で仲良くなろう 30
授業2. ミッション 自動で止まるモーターカーをつくろう 38
授業3. ミッション 音楽プレーヤーを手づくりしよう 46
授業4. ミッション 困っている人をものづくりで助けよう 56
第3章 テーマ別授業展開事例 71
テーマ1. 健康のためにウォーキングしよう 72
テーマ2. 安全で、渋滞のない社会をつくろう 76
テーマ3. リズムダンスの発表会を盛り上げよう 80
テーマ4. 外の気温を室内で測ろう 84
テーマ5. 土壌を管理して農作物を育て、食糧危機を救おう 90
テーマ6. 絶滅が危ぶまれる野生動物を救おう 94
テーマ7. 簡易カイロと瞬間冷却剤を手づくりしよう 98
テーマ8. 家庭の困りごとを解決しよう 104
テーマ9. 自分の身を守ろう 108
テーマ10. AI(人工知能)を体験しよう 112
第4章 資料編 127
Ⅰ . micro:bit とは… 128
Ⅱ . プログラミングの基本 135
Ⅲ . OPPA とは… 136
Ⅳ . QFT とは… 137
Ⅴ . ルーブリック評価とは… 138
Ⅵ . AI(人工知能)について 139
Ⅶ . サンプルプログラム 142
Ⅷ . 参考WEB サイト ほか 144
Amazonで詳しく見る
紹介文
プロのソフトウェアエンジニアとして、堅牢で信頼性が⾼く、保守しやすいコードを書くための概念と実用的な⼿法を解説
「よいコード」と「悪いコード」の違いは、どこにあるのでしょうか。もちろん、どんな立場で、何を作るのかなどによって、その定義は変わってきます。
本書では、プロの「ソフトウェアエンジニア」として、堅牢で信頼性が⾼く、保守しやすく、チームメンバーが理解や適応しやすいコードを作成するための概念と実用的な⼿法を、Googleでテックリードを務める著者が解説しています。
本書では、まず「高品質なコードを書く」ために、次の4つのゴールを設定しています。
1. 正しく動くこと
2. 正しく動作し続けること
3. 要件の変更に対応しやすいこと
4. 車輪の再発明をしないこと
そして、これを達成するための戦略として、「コード品質の6つの柱」を次のように示しています。
1. コードを読みやすくする
2. 想定外の事態をなくす
3. 誤用しにくいコードを書く
4. コードをモジュール化する
5. コードを再利用、汎用化しやすくする
6. テストしやすいコードを書き、適切にテストする
本書では、この6つの柱に沿って、ソフトウェアエンジニアとしてコードを書く際のアドバイスが述べられています。著者の知識と経験が、具体的かつ実用的に言語化されています。
本書は、経験が3年以内のソフトウェアエンジニアをターゲットとして執筆されていますが、チームで開発を行う際のリファレンスとしても利用できるでしょう。あるいは、経験のあるエンジニアであっても、自分の経験を整理し、言語化するための便覧としても使えるはずです。そして、チーム開発で、他のエンジニアをメンタリングするための便利なリソースとしても活用できます。
Googleのテックリードを務める著者が、プロのソフトウェアエンジニアとして、堅牢で信頼性が⾼く、保守しやすく、チームメンバーが理解や適応しやすいコードを書くための概念と実用的な⼿法を解説。
Part 1 理論編
Chapter 1 コードの品質
Chapter 2 抽象化レイヤー
Chapter 3 コードでの契約
Chapter 4 エラー
Part 2 実践編
Chapter 5 コードを読みやすくする
Chapter 6 想定外の事態をなくす
Chapter 7 誤用しにくいコードを書く
Chapter 8 コードをモジュール化する
Chapter 9 コードを再利用、汎用化しやすくする
Part 3 ユニットテスト編
Chapter 10 ユニットテストの原則
Chapter 11 ユニットテストの実践
Appendix 付録
A チョコレートブラウニーのレシピ
B null安全とオプション
C 追加のコード例
Amazonで詳しく見る
紹介文
"競プロ" で必要なテクニックを1冊に凝縮!
競技プログラミング(競プロ)は、問題を解くことでプログラミング能力を競う大会です。本書では、競プロで必要なアルゴリズム・データ構造・考察テクニックを丁寧に解説します。さらに、知識を定着させるための例題・演習問題が150問以上掲載されています。
本書は、競プロのコンテストで勝ちたい、アルゴリズムを本格的に学びたい、技術力向上に繋げたいなど、様々な目的で利用できるものとなっています。
[本書の特徴]
・競プロで必要な77個のテクニックを網羅
・320点超のフルカラーの図でわかりやすく解説
・知識を身に付ける演習問題153問
・全問題が「自動採点システム」に対応
・新傾向の「ヒューリスティック・最適化」も解説
[本書の構成]
序章 競技プログラミング入門
第1章 アルゴリズムと計算量
第2章 累積和
第3章 二分探索
第4章 動的計画法
第5章 数学的問題
第6章 考察テクニック
第7章 ヒューリスティック
第8章 データ構造とクエリ処理
第9章 グラフアルゴリズム
第10章 総合問題
終章 さらに上達するには
[本書で扱うトピック(抜粋)]
全探索/2進法/一次元の累積和/二次元の累積和/配列の二分探索/答えで二分探索/しゃくとり法/半分全列挙/部分和問題/ナップザック問題/ビットDP/最長増加部分列問題/素数判定法/ユークリッドの互除法/繰り返し二乗法/包除原理/ゲーム問題/偶奇を考える/一手先を考える/後ろから考える/山登り法/焼きなまし法/ビームサーチ/スタック/キュー/優先度付きキュー/連想配列/文字列のハッシュ/ダブリング/セグメント木/深さ優先探索/幅優先探索/ダイクストラ法/Union-Find/最小全域木問題/最大フロー問題/二部マッチング問題/ほか多数
序章 競技プログラミング入門
第1章 アルゴリズムと計算量
第2章 累積和
第3章 二分探索
第4章 動的計画法
第5章 数学的問題
第6章 考察テクニック
第7章 ヒューリスティック
第8章 データ構造とクエリ処理
第9章 グラフアルゴリズム
第10章 総合問題
終章 さらに上達するには
Amazonで詳しく見る
紹介文
RustとCを使い、処理速度を飛躍的に向上させる「並行プログラミング」の理論的な背景から実装までを網羅的に解説する。
並行プログラミングの基礎的なアルゴリズムと実装方法について解説!
複数のプログラムを並列に実行する「並行プログラミング」は、処理速度を飛躍的に向上させる昔からある手法ですが、タスク管理、プロセス管理、スレッド管理をはじめ、複雑なしくみについての幅広い知識とテクニックが必要となります。本書はRustとCを使い、CPUのアトミック命令、グリーンスレッド、アクターモデル、ソフトウェア・トランザクショナルメモリ、async/awaitなど、並行プログラミングに関する理論的な背景から実装までを網羅的に扱います。ソースコードはGithub上で公開、実際に動作するソースコードを参考にしながら読み進められます。
RustとCを使い、処理速度を飛躍的に向上させる「並行プログラミング」の理論的な背景から実装までを網羅的に解説する。
Amazonで詳しく見る
紹介文
Pythonの作者自らが書き下ろした手引書。入門者がおさえておくべき機能やコンセプトを解説し、さらに特徴的な機能を多く紹介。
Python初心者必読のチュートリアルが3.9対応で登場!
Pythonの作者Guido氏自らが書き下ろした、Python入門者のための手引書です。Pythonの言語と、入門者がおさえておくべきシステムの基本的な機能やコンセプトを解説し、さらにPythonの特徴的な機能を数多く取り上げて紹介することで、この言語の雰囲気とスタイルをわかりやすくつかめるよう配慮しています。5年ぶりの改訂版で、Python3.9.0に対応しました。入門者必読の書です。
Pythonの作者自らが書き下ろした手引書。入門者がおさえておくべき機能やコンセプトを解説し、さらに特徴的な機能を多く紹介。
Amazonで詳しく見る
紹介文
「Rust」をWin11とmaxOSにインストールし、Visual Studio Codeで動かす方法を丁寧に解説。
プログラム言語「Rust」は、「速くて安全」を目指した言語で、①実行環境を必要としないコンパイル言語、②使用メモリの管理、③破綻しない並行処理……の3つがキモになります。
「Rust」はコンパイル言語ではあっても、その方法を簡単にしてあります。また、「メモリ管理」もルールを整理し、とても分かりやすい仕組みにしています。
「Rust」を学べば、「C言語」の「ポインタ」や「メモリ割り当て」が理解しやすくなるでしょう。
さらに、「並行処理の管理」も、「Rust」では「チャンネルとメッセージ」で行なう方法を備えています。
全体的に、スクリプト言語を理解している人向けの解説になりますが、初心者でも挑戦できるように、第1章では「Windowws11」と「maxOS」に「Rust」をインストールし、「Visual Studio Code」で動かす方法を丁寧に説明しています。
「Rust」をWin11とmaxOSにインストールし、Visual Studio Codeで動かす方法を丁寧に解説。Rustの面白さRustでわかることを紹介。
■「Rust」の紹介とインストール
・Rustのインストール/Visual Studio Codeのインストールと動作設定/Rustのプロジェクト作成とプログラム実行/Rustのプログラムの構造
■文字列でわかるRustの特徴
・マクロ「println!」/プレースホルダ「{}」/書き換えの可不可/「スライス」で間接操作/参照とその中身/文字列の「長さ」
■「オーナーシップ」によるメモリ管理
・型と必要メモリ/オーナーシップの取得と破棄/参照を上手に使う
■Rust独特のデータ記述法
・Rustの構造体/Rustの列挙型/Rustのトレイト/Rustのエラー処理
■破綻しない並行処理
・スレッドの記述/チャンネルとメッセージ
■プログラムファイルを整理する
・ファイルからテキストを読み込む/別のファイルのプログラムを呼び出す/モジュールの作成と利用
Amazonで詳しく見る
紹介文
情報セキュリティ技術者の必携書がPython3対応で改訂。Pythonを使ったサイバー攻撃手法を解説。独自の巻末付録も収録。
情報セキュリティ技術者必須のテクニックをマスターする!
情報セキュリティ技術者の必携書がPython 3に対応して大幅改訂。本書ではPythonを使ったサイバー攻撃手法について解説します。基本的な通信プログラムからProxyやRawデータ、Webアプリケーションへの攻撃やトロイの木馬の動作、そしてフォレンジック手法やOSINTまで、攻撃者の実践手法から防御方法を学びます。日本語版オリジナルの巻末付録として「Slackボットを通じた命令の送受信」「OpenDirのダンプツール」「Twitter IoCクローラー」を追加収録しました。
情報セキュリティ技術者の必携書がPython3対応で改訂。Pythonを使ったサイバー攻撃手法を解説。独自の巻末付録も収録。
Amazonで詳しく見る
紹介文
2020年より小・中学校でプログラミング教育が本格化――人気の言語「パイソン」を習得するための最高の入門書です。
2020年より小・中学校でプログラミング教育が本格化――プログラミングの手順を1ステップずつやさしく解説。カラフルなイラストや興味をひくプロジェクトを通して、Pythonの基本が楽しく学べます。絵を描いたり、動きのあるグラフィックを作ったり、かんたんなプログラムで動くおもしろいゲームを作ったり、この本一冊で基礎の習得から実践までカバー。【プロジェクトの例】動物クイズ:3回答えるあいだに正解を出そう!スパイラル:ふくざつな模様がかんたんに描けるぞ!星空:カラフルな星がつぎつぎ夜空に出現するよ!ペットをかおう:お世話をすると喜んだり、放っておくと悲しんだりするぞ!はらぺこイモムシ:葉っぱを食べるとどんどん成長していくぞ!
キャロル・ヴォーダマンほか著/山崎正浩訳;0401;03;2020年より小・中学校でプログラミング教育が本格化――人気の言語「パイソン」を習得するための最高の入門書です。;20180901
1 パイソンを始めよう
プログラミングってなんだろう?
パイソンはどんな言語かな?
パイソンのインストール
IDLEを使ってみる
2 最初のステップ
最初のプログラム
変数
判断する
くり返し
動物クイズ
関数
デバッグ(バグとり)
パスワード生成機
モジュール
文字当てゲーム
3 タートル・グラフィックス
ロボットを作ろう
スパイラル
星空
レインボー・カラー
4 パイソンで遊んでみよう
カウントダウン・カレンダー
エキスパートシステム
ひみつのメッセージ
ペットをかおう
5 ゲームを作ってみよう
はらぺこイモムシ
スナップ
神経すい弱
エッグ・キャッチャー
6 リファレンス
ソースコード
用語集
索引
Amazonで詳しく見る
紹介文
サウンドプログラミングの入門書。基本からはじめ、コンピュータでの音の考え方、信号処理の基礎、シンセサイザの音作りなどを解説。
Pythonで音作りをはじめよう!
・音のプログラミングが音響楽の基本からわかる!
・音の信号処理もていねいに解説!
・打楽器・管楽器・弦楽器・鍵盤楽器の音が手もとで作れる!
・ソースコードはWebからダウンロード可能!
本書は、コンピュータで音作りをしてみたい方に向けた、サウンドプログラミングの入門書です。音作りに興味があるけど何からはじめたらという初心者のために音響の基本から解説をはじめ、コンピュータでの音の考え方、音を加工するディジタル信号処理の基礎をていねいに説明し、シンセサイザ、エフェクタの音作りなどを解説します。さらに、さまざまな音響合成のテクニックとともに、その具体例として、ゼロから楽器音をつくり出すフルスクラッチ合成のレシピを紹介します。サウンドプログラミングの言語には、音データの読み書きはもちろん、波形、周波数特性、そしてスペクトログラムの描画も簡単に行える、Pythonを採用しています。
Pythonを使ってサウンドプログラミングの第一歩を踏み出しましょう!
サウンドプログラミングの入門書。基本からはじめ、コンピュータでの音の考え方、信号処理の基礎、シンセサイザの音作りなどを解説。
第1章 音響学
第2章 サウンドプログラミング
第3章 コンピュータミュージック
第4章 MIDI
第5章 ディジタル信号処理
第6章 シンセサイザ
第7章 エフェクタ
第8章 ミキシング
第9章 打楽器の音をつくる
第10章 管楽器の音をつくる
第11章 弦楽器の音をつくる
第12章 鍵盤楽器の音をつくる
索引
Amazonで詳しく見る
紹介文
Java資格対策書で人気の徹底攻略シリーズから、2020年開始のJava Bronze SE[1Z0-818]試験に対応した問題集が登場。解き進めるだけで自然と体系的な知識が身に付くよう問題を構成しています。教科書を超えるやさしく丁寧な解説で、初心者でもつまずくことなくJavaの基本、オブジェクト指向がよくわかります。巻末には実際の試験を体験できる模擬試験1回分を収録しているほか、さらにもう1回分をダウンロード提供。本書一冊で、一発合格に必要な「知識」と「問題を解く力」がしっかりと身に付きます。
Amazonで詳しく見る
紹介文
この本では、「コード」を書いてゲームを作りながら、プログラミングを楽しく学んでいきます。パソコン上でProcessingを使いますので、Javaベースのプログラムを、面倒な設定なしで直感的にどんどん書きながら理解することができます。PythonやJavaScriptは難しくて手が出せなかったという人でも、この本なら大丈夫。小学校高学年以上のどなたでも読むことができます。Scratchではちょっともの足りない人も、ぜひ試してみましょう。
イントロダクション
●第1章 Processingでプログラミングを始めよう!
1-1 なぜプログラミングをするの?
プログラミングは「道具」
本書の目的
1-2 「Processingがオススメ!」の理由
プログラミング言語とは?
なぜProcessingがオススメなの?
1-3 Processingを始めよう!
Processingの実行環境
Processingをダウンロードしよう
Processingをインストールしよう
Processingを起動しよう
●第2章 Processingで図形を描こう
2-1 「 こんにちは、世界」~ Processingの世界にようこそ
Hello Worldとは?
プログラムのコードを入力しよう
「Hello World」プログラムを実行しよう
2-2 画面のサイズと座標を理解しよう
画面のサイズを指定する
画面の座標を理解しよう
2-3 いろいろな図形を描こう
線を描こう
四角形を描こう
円を描こう
三角形を描こう
2-4 図形に色をつけよう
図形を黒く塗りつぶしてみよう
光の三原色を使って色をつけよう
カラーコードを使って色をつけよう
画面の背景の色を指定しよう
2-5 課題図形を組み合わせてクマを描いてみよう
図形を組み合わせてクマを描く
クマの顔の輪郭を描く
クマの耳を描く
クマの手を描く
クマの目を描く
クマの口周りを描く
クマの鼻を描く
●第3章 Processingプログラミングの基本―関数、変数、画像表示、乱数
3-1 絵を動かすために必要なsetup関数とdraw 関数を作ろう
まず関数とは何かを理解しよう
マウスの位置に四角形を表示するプログラムを作ろう
setup 関数とdraw関数の役割を知ろう
setup 関数とdraw関数を書いてみよう
setup 関数とdraw関数を書くときの注意点
3-2 「変数」とは何かを理解しよう
変数=名前付きの箱
自動で右に移動する四角形を表示するプログラムを作ろう
変数の宣言方法を理解しよう
1つの四角形が自動で右に移動するプログラムを作ろう
マウスの位置に四角形がついてくるプログラムを作ろう
draw関数の実行回数をカウントしよう
算術演算子を利用しよう
3-3 画像を画面に表示しよう
まずは画像を準備しよう
耳の長いネコの画像を表示しよう
耳の長いネコの画像がマウスについてくるプログラムを作ろう
3-4 「乱数」を使って画面の表示を変化させよう
なぜ乱数を利用するのか
実行のたびに色が変わる円を表示するプログラムを作ろう
値を返す関数と値を返さない関数
実行のたびに色がカラフルに変わる円を表示するプログラムを作ろう
クリックするたびに円の色がランダムに変化するプログラムを作ろう
初心者あるある問題~変数のスコープ
3-5 課題マウスにクマの絵がついてくるプログラムを作ろう
クマの絵を動かすためのヒント
setup 関数とdraw関数を使う
変数を使って座標を指定する
クマの絵の表示位置を調整する
●第4章 Processingプログラミングの基本―条件分岐、繰り返し
4-1 条件分岐を理解しよう
if ~もし○○なら□□をする
比較演算子を使って条件式を書く
左右に動く円を描くプログラムを作ろう
キーボードで円を動かすプログラムを作ろう
4-2 画像のアニメーションを作ろう
アニメーションの基本と画像の準備
ネコが歩くアニメーションを作ろう
ネコが自然に歩くようにアニメーションを修正しよう
4-3 条件分岐を使って「当たり判定」を行おう
「画面がクリックされたら」~当たり判定
マウスを四角形の上に置いたら色が変わるプログラムを作ろう
4-4 繰り返し処理を理解しよう
四角形を60 個並べるプログラムを作ろう
for ~条件を満たす間処理を繰り返す
複数の四角形がいっせいに動くプログラムを作ろう
4-5 関数を自分で定義しよう
関数について今まで学んできたこと
オリジナルの関数を作ろう
4-6 まとめチュートリアル間違い探しゲームを作ろう
間違い探しゲームを作ろう
① setup 関数とdraw関数を書こう
②まずは黒い四角形を1つ描こう
③黒い四角形を横に5 個並べよう
④繰り返し処理を使って黒い四角形を横に5 個並べよう
⑤今度は黒い四角形を縦に5 個並べよう
⑥横5×縦5=25 個の四角形を描こう~その1
⑦横5×縦5=25 個の四角形を描こう~その2
⑧四角形の色をランダムに変更しよう
⑨1個目の四角形だけ色を変えよう
⑩色が変わる四角形をランダムに変更する
⑪ クリックされるたびに色が違う四角形が変わるようにしよう
⑫関数を作って同じ処理を1つにまとめよう
⑬正解の四角形をクリックできるようにしよう
⑭スコアを表示しよう
⑮間違い探しゲームの完成!
⑯カスタマイズしてみよう
●第5章 配列と繰り返し処理でさまざまな表現を作ろう
5-1 配列とは何かを理解しよう
まずは配列を体験してみよう
配列の宣言方法を理解しよう
配列の要素を個別に操作しよう
初心者あるある問題~配列の添字
5-2 配列を使ってさまざまな表現を作ろう
雨を降らせるプログラムを作ろう
雪を降らせるプログラムを作ろう
宇宙を表現するプログラムを作ろう
5-3 配列を使ってアクションゲームを作ろう
アクションゲームを作ろう
① setup 関数とdraw関数を書こう
②プレイヤーとなる白の球体を動かそう
③敵となる球体を表示しよう
④敵の球体を1体ずつ出現させてみよう
⑤敵のスピード、サイズ、色をランダムにしよう
⑥当たり判定を作ろう
⑦敵が自動で出現するようにしよう
⑧敵とぶつかったときの処理を修正しよう
⑨ゲームオーバーの処理を作ろう
⑩スタート画面を作成しよう
●第6章 クラスとオブジェクトを活用しよう
6-1 クラスを理解しよう
「モノ」を表すオブジェクトに値をまとめよう
クラスを定義しよう
オブジェクトを生成して利用しよう
6-2 配列と一緒にクラスとオブジェクトを使ってみよう
風船が上昇するプログラムを作ろう
配列と一緒に使って風船をたくさん表示するプログラムを作ろう
6-3 クラスとオブジェクトを使ってシューティングゲームを
作ろう
シューティングゲームを作ろう
① setup 関数とdraw関数を書こう
②自機となるプレイヤーを仮表示しよう
③プレイヤーを動かそう
④プレイヤーの動きをスムーズにしよう
⑤敵機を作ろう
⑥自機と敵機に共通するクラスを作ろう
⑦自機を戦闘機の画像にしよう
⑧自機の戦闘機をアニメーションにしよう
⑨敵機の戦闘機をアニメーションにしよう
⑩配列でアニメーションを管理しよう
⑪戦闘機が弾丸を発射できるようにしよう
⑫戦闘機がたくさんの弾丸を発射できるようにしよう
⑬当たり判定を作ろう
⑭ isHit関数を使って弾丸が敵に衝突したかを判定しよう
⑮弾丸を遮る壁を作ろう
⑯弾丸が壁に跳ね返るようにしよう
⑰弾丸とプレイヤーが当たるようにしよう
⑱敵機が動くようにしよう
⑲壁にしかけを加えよう
⑳ゲームクリアとゲームオーバーを作ろう
?ゲームの演出を強化しよう
●第7章 総まとめドローンを操作するアクションゲームを作ろう
7-1 プレイヤーが操作するドローンの画像を表示しよう
アクションゲームを作ろう
① setup 関数とdraw関数を書こう
②ドローンの画像を表示しよう
7-2 キーを押してドローンを動かしてみよう
③プレイヤーを表すクラスを作ろう
④ Playerクラスを使ってドローンを表示しよう
⑤ドローンが上昇、下降、横に移動するようにしよう
7-3 安全ブロック、危険ブロック、ゴールブロックを作ろう
⑥ブロックを表すクラスを作ろう
⑦ Blockクラスを使って安全ブロックを表示しよう
⑧衝突を判定するisHit関数を作ろう
⑨ドローンがブロックの上に着地するようにしよう
⑩危険ブロックとゴールブロックを作ろう
7-4 縦と横に画面をスクロールする「カメラ」を作ろう
⑪カメラを表すクラスを作ろう
⑫カメラからの位置を計算して座標に変換する関数を作ろう
⑬カメラの移動範囲を制御しよう
7-5 ゲームクリアを作ってゲームを完成させよう
⑭ゲームクリアを作ろう
⑮自分だけのオリジナルステージを作ろう
⑯見た目を整えて完成させよう
おわりに
付録:関数一覧
索引
Amazonで詳しく見る
紹介文
本書は「Pythonだけ」を学ぶ本ではありません。Pythonを使ってプログラミングを紹介していますが、伝えたい内容はPythonに限らない「プログラミング全般」の知識です。
本書の著者、コーリー・アルソフ(Cory Althoff)は、「独学プログラマー」です。本書は、彼が独学で、ゼロからプログラミングを学んだ体験に基づいて書かれました。
プログラミングを独学で身に付けるために、著者がPythonを通して学んだエッセンスが書かれています。彼の独学プログラマーとしての学び方は、Amazon.comでの本書の評価を見るとわかるように、多くの人に支持されています。
――訳者あとがきより
第1部(Part1)
第1章 イントロダクション
第2章 さあ、はじめよう!
第3章 プログラミング入門
第4章 関数
第5章 コンテナ
第6章 文字列操作
第7章 ループ
第8章 モジュール
第9章 ファイル
第10章 知識を1つにまとめる
第11章 ハマったときの助け
第2部(Part2)
第12章 プログラミングパラダイム
第13章 オブジェクト指向プログラミングの4大要素
第14章 もっとオブジェクト指向プログラミング
第15章 知識を1つにまとめる
第3部(Part3)
第16章 Bash
第17章 正規表現
第18章 パッケージ管理
第19章 バージョン管理
第20章 知識を1つにまとめる
第4部(Part4)
第21章 データ構造
第22章 アルゴリズム
第5部(Part5)
第23章 プログラミングのベストプラクティス
第24章 プログラマーとしての最初の仕事
第25章 チームで働く
第26章 さらに学ぼう
第27章 次のステップ
第6部(Part6)
補章 より良いコードにするために
補章 継続して学ぶために
謝辞
訳者あとがき
索引
第1部(Part1)
第1章 イントロダクション
第2章 さあ、はじめよう!
第3章 プログラミング入門
第4章 関数
第5章 コンテナ
第6章 文字列操作
第7章 ループ
第8章 モジュール
第9章 ファイル
第10章 知識を1つにまとめる
第11章 ハマったときの助け
第2部(Part2)
第12章 プログラミングパラダイム
第13章 オブジェクト指向プログラミングの4大要素
第14章 もっとオブジェクト指向プログラミング
第15章 知識を1つにまとめる
第3部(Part3)
第16章 Bash
第17章 正規表現
第18章 パッケージ管理
第19章 バージョン管理
第20章 知識を1つにまとめる
第4部(Part4)
第21章 データ構造
第22章 アルゴリズム
第5部(Part5)
第23章 プログラミングのベストプラクティス
第24章 プログラマーとしての最初の仕事
第25章 チームで働く
第26章 さらに学ぼう
第27章 次のステップ
第6部(Part6)
補章 より良いコードにするために
補章 継続して学ぶために
謝辞
訳者あとがき
索引
Amazonで詳しく見る
紹介文
リファクタリングのガイドブックであり、ソフトウェア開発者にとって非常に役立つ一冊。
ソフトウェア開発の名著、第2版登場!
リファクタリングは、ソフトウェアの外部的な振る舞いを保ったままで、内部の構造を改善する作業を指します。本書はリファクタリングのガイドブックであり、リファクタリングとは何か、なぜリファクタリングをすべきか、どこを改善すべきか、実際の事例で構成され、ソフトウェア開発者にとって非常に役立つものとなっています。
本第2版では、約20年前のオリジナル原稿の構成は変わらないものの、大幅に書き換えられているほか、サンプルコードがJavaからJava Scriptになるなど、現代的にアレンジされています。
Amazonで詳しく見る
紹介文
とんでもなく、わかりやすい。学び直すならこの一冊! 全世界700万人が感動した「伝説の学習参考書」シリーズ日本上陸!!
とんでもなく、わかりやすい。学び直すならこの一冊! 全世界700万人が感動した「伝説の学習参考書」シリーズ日本上陸!!
Amazonで詳しく見る
紹介文
やさしく学べる、入門書の決定版!
3万部突破のベストセラーが充実のアップデート!
JavaScriptをこれから始める人にも、前に挫折したことのある人にも。
手を動かしてサンプルをひとつずつ作っていくことで、知識だけでなく、
現場で活きる、応用・実践につながる基礎力が「この一冊で」身につきます。
ポイント1「サンプルが楽しい。」
よくある“勉強のためのサンプル”を可能な限り排除し、「こういうの見たことある!」「こういうのが作ってみたかった!」というような、実際に仕事に使えそうなサンプルを集めました。なので、最初の「やるぞ!」というモチベーションを維持したまま、最後のページまで読み進めることができます。
ポイント2「つまずきポイントを徹底カバー。」
初学者がつまずきやすい・挫折しやすいポイントを丁寧に拾って「これはどういうこと?」に対処する解説を用意しています。
共感しながら読み進められる文章で「絶対に挫折しない・させない」内容に仕上げました。
【第2版の主な改訂内容】
・ECMA Scriptの新規格に対応。新しい機能・文法のうち、入門者でも取り組みやすく便利なものを紹介
・書籍内の情報を2019年の状況にあわせて全面的にアップデート
・3~6章のサンプルを更新。解説内容をより丁寧にわかりやすくブラッシュアップ
・7章は全面刷新し、より現代的・実践的なテクニックを学べる内容に
【こんな方におすすめ!】
・HTMLとCSSは何となくわかっていて、JavaScriptもやらないと…と思いつつなかなか手がつけられない方
・「フロントエンドエンジニア」という言葉に惹かれる方
・Web業界に入りたい方、または入りたての方
・「他のWebデザイナーに差をつけたい!」というWebデザイナーの方
・「フロントエンドエンジニアやWebデザイナーとまともにコードの話をしたい!」というWebディレクターの方
やさしく学べる、入門書の決定版!
Chapter1 イントロダクション
1-1 これからJavaScriptを始める皆さんへ
1-2 JavaScriptってどういうもの?
1-3 JavaScriptの「プログラミング」と動作の仕組み
1-4 各章の概要
1-5 用意するツール
1-6 サンプルデータのダウンロード
1-7 テンプレートを準備して、いざ出発!
Chapter2 アウトプットの基本
2-1 コンソールにアウトプット ~開発ツールを使ってみよう
2-2 JavaScriptはどこに書く? ~タグとJavaScriptの記述場所
2-3 ダイアログボックスを表示する ~window.alert()
2-4 HTMLを書き換える ~要素を取得する・コンテンツを書き換える
Chapter3 JavaScriptの文法と基本的な機能
3-1 確認ダイアログボックスを表示する ~条件分岐(if)
3-2 入力内容に応じて動作を変更する ~変数、定数
3-3 動作のバリエーションを増やす ~条件分岐(else if)
3-4 数当てゲーム ~比較演算子、データ型
3-5 時間で異なるメッセージを表示する ~論理演算子
3-6 1枚、2枚、3枚…と出力する ~回数が決まっている基本の繰り返し
3-7 コンソールでモンスターを倒せ! ~回数が決まっていない繰り返し
3-8 税込価格を計算する ~ファンクション
3-9 FizzBuzz ~算術演算子
3-10 項目をリスト表示する ~配列
3-11 アイテムの価格と在庫を表示する ~オブジェクト
Chapter4 インプットとデータの加工
4-1 フォームの入力内容を取得する ~入力内容の取得とイベント
4-2 わかりやすく日時を表示する ~Dateオブジェクト
4-3 小数第◯位で切り捨てる ~Mathオブジェクト
Chapter5 一歩進んだテクニック
5-1 カウントダウンタイマー ~時間の計算とタイマー
5-2 プルダウンメニューで指定ページへ ~URLの操作、ブール属性の設定
5-3 プライバシーポリシー承認パネルを作る ~クッキー(cookie)
5-4 イメージの切り替え ~サムネイルのクリックによる画像の切り替え
5-5 スライドショー ~ここまでの知識を総動員
Chapter6 jQuery入門
6-1 開閉するナビゲーションメニュー ~要素の取得とclass属性の追加・削除
6-2 ドロワーを作ってみよう ~CSSと組み合わせてアニメーションを実現
6-3 空き席状況をチェック ~AjaxとJSON
Chapter7 外部データを活用したアプリケーションに挑戦!
7-1 あなたはいまどこ? ~位置情報(navigator.geolocation)
7-2 Web APIを使ってみよう ~OpenWeatherMap APIで天気予報
Amazonで詳しく見る
紹介文
絶対に挫折しない最高の1冊!
Reactをイチから学びたい方にオススメの1冊です!
【本書のポイント】
UdemyのReactコースで最高評価獲得の著者がモダンJavaScriptの基礎からTypeScriptの実践的な内容までしっかり解説!
著者が2年以上勉強会を主催し初学者と話す中で分かった、多くの人が感じるReactの挫折ポイントを解決する構成!
現場のシチュエーションベースのストーリーで技術解説をしているので、実務で必要となる知識を意識しながら学習を進められる!
「#挫折しないReact本」で学習した感想をシェア!!
Chapter1 React を始める前に知っておきたいモダンJavaScript の基礎
1-1 モダンJavaScript 概説
1-2 DOM、仮想DOM
1-3 パッケージマネージャー(npm/yarn)
1-4 ECMAScript
1-5 モジュールバンドラー、トランスパイラ
1-6 SPA と従来のWeb システムの違い .. .
Chapter1 まとめ
Chapter2 モダンJavaScript の機能に触れる
2-1 const、let での変数宣言
2-2 テンプレート文字列
2-3 アロー関数 ( ) => { }
2-4 分割代入 { } [ ]
2-5 デフォルト値 =
2-6 スプレッド構文
2-7 オブジェクトの省略記法
2-8 map、filter
Chapter2 まとめ
Chapter3 JavaScript でのDOM 操作
3-1 JavaScript によるDOM アクセス
3-2 DOM の作成、追加、削除
3-3 JavaScript によるDOM 操作実践
Chapter3 まとめ
Chapter4 React の基本
4-1 React 開発の始め方
4-2 JSX 記法
4-3 コンポーネントの使い方
4-4 イベントやスタイルの扱い方
4-5 Props
4-6 State(useState)
4-7 再レンダリングと副作用(useEffect)
4-8 export の種類
Chapter4 まとめ
Chapter5 React とCSS
5-1 Inline Styles
5-2 CSS Modules
5-3 Styled JSX
5-4 styled components
5-5 Emotion
5-6 Tailwind CSS
Chapter5 まとめ
Chapter6 再レンダリングの仕組みと最適化
6-1 再レンダリングが起きる条件
6-2 レンダリング最適化1(memo)
6-3 レンダリング最適化2(useCallback)
6-4 変数のmemo 化(useMemo)
Chapter6 まとめ
Chapter7 グローバルなState 管理
7-1 グローバルなState 管理が必要な理由
7-2 Context でのState 管理
7-3 その他のグローバルstate を扱う方法
Chapter7 まとめ
Chapter8 React とTypeScript
8-1 TypeScript の基本
8-2 API で取得するデータへの型定義
8-3 Props への型定義
8-4 型定義の管理方法
8-5 コンポーネントの型定義
8-6 省略可能な型の定義
8-7 オプショナルチェイニング(Optional chaining)
8-8 ライブラリの型定義
Chapter8 まとめ
Chapter9 カスタムフック
9-1 カスタムフックとは
9-2 カスタムフックの雛形を作成
9-3 カスタムフックの実装
Chapter9 まとめ
付録 React × TypeScript 実践演習
Amazonで詳しく見る
紹介文
【シリーズ累計35万部!】
【全国の書店員がオススメする本 第1位受賞を連発!】
【ここまで丁寧に解説している入門書はないと話題沸騰!】
とことん丁寧なJavaScriptの入門書
ついに登場!
・最初の一歩が踏み出せる! 初心者に寄り添うやさしい解説
・最新の技術が身につく! 今のJavaScriptの書き方・使い方
・絶対に知っておきたい! アニメーションとイベントの知識
・プログラミングの基本から実装方法まですべて学べる
Webクリエイターボックスの
Manaが教えるプログラミング&Webサイトの動かし方
この1冊で必要なことがすべて学べる!
プログラムもアニメーションも全部学べる!
サンプルデータはWebサイトよりダウンロードできます。
●本書の対象読者
・これからJavaScriptを学びはじめたい人
・以前にJavaScriptの学習を試みたが挫折してしまった人
・Webサイトに動きやイベントをつけてみたい人
・HTMLとCSSの基礎を終え、次の目標を探している人
・jQueryを卒業し、最新のJavaScriptを学び直したい人
●CONTENTS
CHAPTER 1 最初に知っておこう! JavaScriptでできること
CHAPTER 2 JavaScriptに触れてみよう!
CHAPTER 3 JavaScriptの基本を学ぼう!
CHAPTER 4 イベントで操作しよう!
CHAPTER 5 複数のデータを使ってみよう!
CHAPTER 6 アニメーションを加えよう!
CHAPTER 7 Webページを作ってみよう!
CHAPTER 8 エラーと解決方法
Amazonで詳しく見る
紹介文
プログラミング初学者に向けた独習シリーズに『独習Python』が新登場。山田祥寛氏によるPython入門書の決定版。
手を動かしておぼえるPythonプログラミング
――独学に最適な“標準教科書”
プログラミングの初学者に向けた独習シリーズに『独習Python』が新登場。
プログラミング言語入門書の執筆で定評のある山田祥寛氏による、
Python入門書の決定版です。
独習シリーズの強みである、手を動かしておぼえる(書いて実行して結果を確認する)
特長を生かし、Pythonの基本的な言語仕様から、標準ライブラリ、ユーザー定義関数、
オブジェクト指向構文、モジュールまで、サンプルプログラムを例示しながら
詳細かつ丁寧に解説します。
プログラミングの基礎知識がない方でも、解説→例題(サンプル)→理解度チェック
という3つのステップで、Pythonでプログラミングを行う際に必要な知識・概念・機能を
体系的に習得できます。
プログラミングの入門者、これからPythonで開発を始めたい初学者から、再入門者、
学生・ホビープログラマまで、「一からPython言語を学びたい」「Pythonプログラミング
の基本をしっかり身につけたい」という方におすすめの一冊です。
第1章 イントロダクション
1.1 Pythonとは?
1.2 Pythonの歴史と現状
1.3 Pythonアプリを開発/実行するための基本環境
1.4 Pythonプログラミングの基本
1.5 Pythonの基本ルール
1.6 開発/学習の前に押さえておきたいテーマ
第2章 Pythonの基本
2.1 変数
2.2 データ型
第3章 演算子
3.1 算術演算子
3.2 代入演算子
3.3 比較演算子
3.4 論理演算子
3.5 ビット演算子
3.6 演算子の優先順位と結合則
第4章 制御構文
4.1 条件分岐
4.2 繰り返し処理
4.3 ループの制御
4.4 例外処理
第5章 標準ライブラリ[基本]
5.1 ライブラリの分類
5.2 文字列の操作
5.3 日付/時刻の操作
第6章 標準ライブラリ[コレクション]
6.1 シーケンス型
6.2 セット(集合)型
6.3 辞書(dict)型
第7章 標準ライブラリ[その他]
7.1 正規表現
7.2 ファイル操作
7.3 ファイルシステムの操作
7.4 HTTP経由でコンテンツを取得する
7.5 その他の機能
第8章 ユーザー定義関数
8.1 ユーザー定義関数の基本
8.2 変数の有効範囲(スコープ)
8.3 引数のさまざまな記法
8.4 関数呼び出しと戻り値
第9章 ユーザー定義関数[応用]
9.1 デコレーター
9.2 ジェネレーター
9.3 関数のモジュール化
9.4 非同期処理
9.5 ドキュメンテーション
第10章 オブジェクト指向構文
10.1 クラスの定義
10.2 カプセル化
10.3 継承
10.4 ポリモーフィズム
第11章 オブジェクト指向構文[応用]
11.1 例外処理
11.2 特殊メソッド
11.3 データクラス
11.4 イテレーター
11.5 メタクラス
付録A 「練習問題」「このの理解度チェック」解答
Amazonで詳しく見る
紹介文
Node.jsの入門書です。Node.jsは今やWebアプリケーション開発には欠かせない存在です。
本書には、Node.jsで実際にアプリケーション開発をはじめるための知識がまとまっています。
基礎知識、環境構築、重要文法、非同期、CLIツール開発、Expressを用いたサーバーサイドの開発やフロントエンド(React)との連携などNode.jsの全体像が学べます。
現場で活躍する第一人者が、Node.jsのアプリケーション開発の指針やノウハウを教えます。
1 はじめてのNode.js
1.1 Node.jsの言語としての特徴
1.2 フロントエンド/バックエンドの両方に必要となったNode.js
Column TypeScript
Column Node.jsとブラウザで動作するJavaScriptの違い
2 JavaScript/Node.jsの文法
2.1 開発環境の導入
Column Node.jsの導入方法
2.2 JavaScript基礎
Column ObjectとJSON
2.3 JavaScriptと継承
Column classとどう向き合うべきか
2.4 JavaScriptとthis
2.5 ES2015以降の重要文法
Column Strictモード
3 Node.jsとモジュール
3.1 CommonJS modules
Column requireと分割代入
3.2 ECMAScript modules
3.3 モジュールの使い分け
3.4 標準モジュール(Core API)
Column モジュール内の特殊な変数
3.5 npmと外部モジュールの読み込み
Column yarnやpnpmとNode.js
4 Node.jsにおける非同期処理(フロー制御)
4.1 同期処理と非同期処理
4.2 Callback
4.3 Promise
4.4 async/await
Column Promiseと並行実行
4.5 ストリーム処理
4.6 AsyncIterator
4.7 エラーハンドリングのまとめ
4.8 Top-Level Await
Column Node.jsとio.js
Column async.jsを利用したフロー制御
5 CLIツールの開発
5.1 Node.jsの開発フロー
5.2 引数の処理
5.3 ライブラリ導入とCLIへの落とし込み
Column process.cwd()
Column shebang
5.4 Node.jsのLint
5.5 Node.jsのテスト
6 ExpressによるREST APIサーバー/Webサーバー
6.1 Expressの基礎と導入
6.2 Expressの必須機能
6.3 包括的エラーハンドリング
6.4 データベース連携
Column EventEmitter内のエラーハンドリング
6.5 ビューテンプレート
6.6 静的ファイル配信
Column script async/defer
6.7 ルーティングとファイル分割の考え方
6.8 ファイル分割の実践
6.9 ハンドラーのテスト
6.10 AsyncIteratorのテスト
6.11 失敗時のテスト
6.12 ハンドラー単位の分割とテストしやすさ
6.13 Node.jsアプリケーションのデプロイ
6.14 Node.jsとDocker
6.15 Clusterによるパフォーマンス向上
Column Node.jsとデータベース
7 フロントエンド/バックエンドの開発
7.1 フロントエンドとバックエンドをまとめて開発する
7.2 モノレポ(Monorepo)
7.3 アプリケーションの構成
7.4 フロントエンド開発の考え方
7.5 Reactの基本機能
7.6 ブラウザイベントの処理
Column Reactにおけるイベントとハンドラーの紐づけ
7.7 コンポーネントの分割
Column コンポーネントとフレームワーク
7.8 API から取得した値を表示する
Column ホットリロード
Column XMLHttpRequestからfetchへ
Column ProxyサーバーでAPIを集約する
7.9 APIをコールして値を更新する
7.10 Client Side Routing(クライアントサイドのルーティング)
7.11 フロントエンドアプリケーションのデプロイ
Column nginxでProxyサーバーを建てる場合
Column ReactのSSR
Column Next.js
7.12 フロントエンドのテスト
Column テストとmock
Column E2Eテスト
Column フレームワークの利用
Column Access-Control-Allow-Originヘッダーを付与する(CORS)
Column Node.js とモジュールの選び方
Column フロントエンドとバックエンドのJavaScriptの違い
Column ブラウザー操作自動化―Puppeteer
8 アプリケーションの運用と改善
8.1 パッケージのバージョンアップ
8.2 モノレポで共通のライブラリを管理する
8.3 アプリケーションの実運用における注意点
8.4 パフォーマンス計測とチューニング
Column SIGUSR2を使う理由
Amazonで詳しく見る
紹介文
待望の「機械学習のしくみ」が登場!ヤギ博士&フタバちゃんと一緒に機械学習の世界を体験してみよう!
ヤギ博士・フタバちゃんと一緒に
機械学習のしくみを学ぼう!
【機械学習をいちから学んでみよう!】
「最近よく耳にする人工知能と機械学習について知りたい」
「機械学習ってどのようなことをするの?」
と思っている方は多いと思います。
本書はそうした方に向けて「機械学習」について
いちからやさしく解説します。
【Python3年生について】
「Python1年生」「Python2年生」を読み終えた方を対象とした入門書です。
(※「Python3年生」から初めて学ぶ方でもわかるように工夫しています)
【読者対象】
機械学習の初心者
【本書のポイント】
ヤギ博士&フタバちゃんと一緒に、
機械学習のしくみについて、
サンプルを動かしながら、
楽しく学ぶことができます。
【著者プロフィール】
森 巧尚(もり・よしなお)
アプリの開発や、技術書や電子工作マガジンなどでの執筆活動。
関西学院大学非常勤講師、関西学院高等部非常勤講師、
成安造形大学非常勤講師、大阪芸術大学非常勤講師、プログラミングスクールコプリ講師など、
プログラミングに関する幅広い活動を行っている。
近著に『Python1年生』、『Python2年生 スクレイピングのしくみ』、『Python2年生 データ分析のしくみ』、
『Java1年生』、『動かして学ぶ! Vue.js開発入門』(いずれも翔泳社)、
『楽しく学ぶ アルゴリズムとプログラミングの図鑑』(マイナビ出版)などがある。
第1章 機械学習の準備
01 機械学習ってなんだろう?
02 分けることは、わかること
03 機械学習の準備をしよう
第2章 サンプルデータを見てみよう
04 scikit-learn のサンプルデータセット
05 サンプルデータセットを自動生成しよう
第3章 機械学習の手順を理解しよう
06 データを用意する
07 データを学習用とテスト用に分ける
08 モデルを選んで、学習する
09 モデルをテストする
10 新しい値を渡して、予測する
11 分類の状態を可視化しよう
第4章 機械学習のいろいろなアルゴリズム
12 回帰:線形回帰
13 分類:ロジスティック回帰
14 分類:SVM(サポートベクターマシン)
15 分類:決定木
16 分類:ランダムフォレスト
17 分類:k-NN(k 近傍法)
18 クラスタリング:k-means(k 平均法)
第5章 チノふたたび! 画像から数字を予測しよう
19 データを準備する
20 学習データを準備する
21 学習させる
22 予測させる
23 教師なし学習を利用して、データをイメージしよう
24 さらに先へ進もう
Amazonで詳しく見る
紹介文
アルゴリズム取引にPythonを利用する方法を解説。自動取引戦略をシステマチックに構築、デプロイするための選択肢を学ぶ。
Pythonを使ってトレードを始めたい人に最適!
『Pythonによるファイナンス 第2版』の著者が、アルゴリズムトレードにPythonを利用する方法を解説する書籍です。具体的には、アルゴリズムトレード用の適切なPython環境の設定、データの取得、NumPy/pandasを使ったデータ分析、取引戦略のバックテスト、市場予測、ストリーミングのリアルタイム処理等、アルゴリズム取引のさまざまな側面にPythonを適用するさまざまな手法を紹介することにより、自動取引戦略をシステマチックに構築、デプロイするために、どんな選択肢があるのかを学ぶことができます。
アルゴリズム取引にPythonを利用する方法を解説。自動取引戦略をシステマチックに構築、デプロイするための選択肢を学ぶ。
Amazonで詳しく見る
紹介文
RAPソフトに頼らなくても、業務は自動化できる!
「これ、毎日同じ作業をしているけど、自動化できないかな?」
「この作業、手でやってたらとても終わらない…どうにかできないかな?」
そんな声にお答えするのが本書です。
本書では、Pythonを使って、ビジネス上よく起きるさまざまな作業を自動化します。
サンプルが用意されているので、実際にプログラムを動かして試してみることができます。
Pythonの文法も要点を押さえて説明してあるので、自分の作業に合わせてカスタマイズしやすくなっています。
1章では、Pythonをインストールして自動化を行うための環境を整えます。簡単なプログラムを通して、プログラムを実行するコツをつかみます。
2章、3章では、Excelへのデータ入力、データ抽出、書式設定、請求書などテンプレートがあるファイルへのデータ流し込み、Wordのテンプレートへのデータ流し込み、PDF化など、一般的なオフィス文書の自動化を扱います。基本的にはopenpyxlモジュールを使い、後半ではpython-docxやpywin32も使います。
4章では、Webブラウザからのデータ取り込み、一括ダウンロード、パスワードがかかっているサイトへのログインなど、Webブラウザの操作自動化について説明します。「Beautiful Soup」モジュールやSeleniumを使います。
5章では、メールの送信、LINEやTwitterなどのSNSの操作を扱います。また、即時に実行するのではなく、日々の決まった時間や先の日付けで実行したいスケジューリングの設定について説明します。
6章では、ダイアログを出してユーザーから言葉やファイルの入力を得る方法や、正規表現の使い方、プログラムをデスクトップアプリにする方法、他の人が実行しやすい形でプログラムを渡す方法、マウスやキーボードの操作を自動化する方法など、便利な情報を詰め込んでいます。TkinterやPyInstallerを使います。
Pythonの知識の浅い方でも使いやすいように、インストール方法から、実行方法までを丁寧に説明しています。また、巻末には文法をまとめたAppendixを入れています。
実行環境としては、Windows、macOS、Linuxに対応していますが、項目によっては一部OSにしか対応していないものもありますのでご注意ください。
Python3.x対応。
※他の人が実行しやすい形でプログラムを渡す目的で使うPyInstallerは、Python3.5~3.7対応です。
Chapter1 Pythonで仕事を自動化しよう
Chapter2 Excel作業を自動化しよう
Chapter3 Excelの高度な作業も自動化しよう
Chapter4 Webブラウザの自動化/スクレイピング
Chapter5 メールやLINE/SNSを自動化しよう
Chapter6 そのほかの便利な自動化テクニック
Appendix Pythonの基本文法の紹介
Amazonで詳しく見る
紹介文
新学習指導要領で小学校に導入されるプログラミング。パソコンを使わず、すみっコぐらしのキャラと問題を解いて基礎を身につける。
新学習指導要領で小学校に導入されるプログラミング。パソコンを使わず、すみっコぐらしのキャラと問題を解いて基礎を身につける。