Tumgik
asciidwango · 3 months
Text
関数型ドメインモデリング
Tumblr media
ドメイン駆動設計と関数型プログラミングを組み合わせることで、顧客満足度の向上、開発サイクルの短縮、無駄な作業の削減を実現できます。
Scott Wlaschin 著 猪股 健太郎 訳 定価:3,740円(本体:3,400円) 発売日:2024年6月28日 形態:B5変型版(308ページ) ISBN:978-4-04-893116-8
Amazonで購入する
達人出版会で電子書籍を購入する
サポート/追加情報
◆ドメイン駆動設計と関数型プログラミングを組み合わせることで、顧客満足度の向上、開発サイクルの短縮、無駄な作業の削減を実現できます。本書では、ビジネスドメインの例とF#のコードで、ビジネスに焦点を当てた、柔軟で高品質なソフトウェアを構築する方法を紹介します。たとえば、F#の型システムを使って複雑なドメインをモデル化し、読みやすいドキュメントにもなるコードを作成します。また、ビジネスルールをエンコードして「コンパイル時ユニットテスト」を作成することで、不正な状態を表現できないようにして潜在的なバグを排除します。関数型プログラミングの核となる原則を適用することで、実世界の要求をエレガントかつ簡潔にモデル化したソフトウェア設計を実現できます。
◆著者/訳者紹介
■Scott Wlaschin(スコット・ヴラシン)F#のエキスパートであり、F#の人気サイトfsharpforfunandprofit.comの著者であり、F# Software Foundationのボードメンバーでもあります。実践的でわかりやすいアプローチで関数型プログラミングの魅力を伝えることに定評があります。スコットは講演者としても人気があり、NDC、F# Exchange、DDD Europe、その他世界中のカンファレンスで講演を行っています。
■猪股 健太郎(イノマタ ケンタロウ)システムエンジニア、ソフトウェア開発者。BIPROGY株式会社勤務。 各種業務システムに関する開発支援や開発標準策定等に従事後、数年間の米国駐在を経て帰国。近年はアジャイルソフトウェア開発を含む開発スタイル変革に携わる。 『速攻入門C#プログラミング すぐに現場で使える知識』(技術評論社、共著)、『プログラミングXamarin』(日経BP、監訳)、『.NETのクラスライブラリ設計』(日経BP、監訳)
◆目次
推薦のことば 日本語版へ寄せて 訳者まえがき はじめに
第1部 ドメインの理解 第1章 ドメイン駆動設計の紹介  1.1 モデルを共有することの重要性  1.2 ビジネスイベントによるドメインの理解  1.3 ドメインをサブドメインに分割する  1.4 境界づけられたコンテキストを利用した解決手段の作成  1.5 ユビキタス言語の創造  1.6 ドメイン駆動設計の概念の要約  1.7 まとめ 第2章 ドメインの理解  2.1 ドメインエキスパートへのインタビュー  2.2 データベース駆動設計をしたいという衝動との戦い  2.3 クラス駆動設計をしたいという衝動との戦い  2.4 ドメインの文書化  2.5 受注のワークフローを深堀りする  2.6 複雑さをドメインモデルで表現する  2.7 まとめ 第3章 関数型アーキテクチャ  3.1 自律的なソフトウェアコンポーネントとしての境界づけられたコンテキスト  3.2 境界づけられたコンテキストのコミュニケーション  3.3 境界づけられたコンテキスト間の契約  3.4 境界づけられたコンテキストでのワークフロー  3.5 境界づけられたコンテキストの中のコード構造  3.6 まとめ  3.7 次にやること
第2部 ドメインのモデリング 第4章 型の理解  4.1 関数の理解  4.2 型と関数  4.3 型の合成  4.4 F#の型を扱う  4.5 型の合成によるドメインモデルの構築  4.6 省略可能な値、エラー、およびコレクションのモデリング  4.7 ファイルやプロジェクトでの型の整理  4.8 まとめ 第5章 型によるドメインモデリング  5.1 ドメインモデルの見直し  5.2 ドメインモデルのパターンを見る  5.3 単純な値のモデリング  5.4 複雑なデータのモデリング  5.5 関数によるワークフローのモデリング  5.6 アイデンティティの考察:値オブジェクト  5.7 アイデンティティの考察:エンティティ  5.8 集約  5.9 すべてを組み合わせる  5.10 まとめ 第6章 ドメインの完全性と整合性  6.1 単純な値の完全性  6.2 測定単位  6.3 型システムによる不変条件の強制  6.4 ビジネスルールを型システムで表現する  6.5 整合性  6.6 まとめ 第7章 パイプラインによるワークフローのモデリング  7.1 ワークフローの入力  7.2 状態の集合による注文のモデリング  7.3 ステートマシン  7.4 型を使ったワークフローの各ステップのモデリング  7.5 エフェクトの文書化  7.6 ステップからワークフローを合成する  7.7 依存関係は設計の一部ですか?  7.8 パイプラインの完成形  7.9 長時間稼働するワークフロー  7.10 まとめ  7.11 次にやること
第3部 モデルの実装 第8章 関数の理解  8.1 関数、関数、どこにでも  8.2 「もの」としての関数  8.3 全域関数  8.4 関数合成  8.5 まとめ 第9章 実装:パイプラインの合成  9.1 単純型を扱う  9.2 関数の型から実装を導く  9.3 検証ステップの実装  9.4 残りのステップの実装  9.5 パイプラインのステップを1つに合成する  9.6 依存関係の注入  9.7 依存関係のテスト  9.8 組み立てられたパイプライン  9.9 まとめ 第10章 実装:エラーの扱い  10.1 Result型を使ってエラーを明示する  10.2 ドメインエラーを扱う  10.3 Resultを生成する関数の連鎖  10.4 パイプラインでのbindとmapの使用  10.5 他の種類の関数を2トラックモデルに適合させる  10.6 コンピュテーション式で暮らしを楽にする  10.7 モナドなど  10.8 非同期エフェクトの追加  10.9 まとめ 第11章 シリアライズ  11.1 永続化とシリアライズ  11.2 シリアライズのための設計  11.3 シリアライズコードとワークフローの連携  11.4 シリアライズの全体例  11.5 ドメイン型をDTOに変換する方法  11.6 まとめ 第12章 永続化  12.1 永続化を端に追いやる  12.2 コマンドとクエリの分離  12.3 境界づけられたコンテキストはデータストレージを所有しなければならない  12.4 ドキュメントデータベースを扱う  12.5 リレーショナルデータベースを扱う  12.6 トランザクション  12.7 まとめ 第13章 設計を進化させ、きれいに保つ  13.1 変更点1:送料の追加  13.2 変更点2:VIP顧客への対応の追加  13.3 変更点3:プロモーションコードのサポートの追加  13.4 変更点4:営業時間制約の追加  13.5 さらなる要件変更への対応  13.6 まとめ  13.7 本書のまとめ 著者紹介 訳者紹介
0 notes
asciidwango · 3 months
Text
関数型デザイン
Tumblr media
本書の目的は、関数型プログラミングとオブジェクト指向プログラミングの利点を学ぶことで、より優れたプログラマーになることを読者に促すというものだ。
Robert C. Martin 著 角 征典 訳 定価:4,180円(本体:3,800円) 発売日:2024年5月31日 形態:B5変型版(328ページ) ISBN:978-4-04-893115-1
Amazonで購入する
達人出版会で電子書籍を購入する
サポート/追加情報
◆関数型とオブジェクト指向の対立を解消する!
本書では、関数型言語のClojureとオブジェクト指向言語のJavaを比較しながら、ソフトウェア設計の原則や手法の違いを解説している。また、これまでオブジェクト指向特有のものと思われてきたUML、SOLID原則、デザインパターンなどを関数型言語に適用することで、両者は必ずしも対立する概念ではなく、共通点がいくつもあり、補完し合える関係にあることを明らかにしようとしている。最終的には、両者を融合したものが「ソフトウェアの本来あるべき姿」だと主張するに至っている。
◆著者/訳者紹介
■Robert C. Martin(アンクル・ボブ)は1970年からプログラマーである。Uncle Bob Consulting, LLCの創業者であり、息子のミカ・マーティンと共同でThe Clean Coders, LLCを創業した。さまざまな業界誌に寄稿し、国際的なカンファレンスや展示会でも頻繁に講演している。数多くの書籍の執筆・編集を担当しており、主な書籍には『Clean Architecture(邦訳:Clean Architecture―達人に学ぶソフトウェアの構造と設計)』などがある。
■角 征典(カド マサノリ)ワイクル株式会社 代表取締役。東京工業大学 環境・社会理工学院 特任講師。アジャイル開発やリーンスタートアップに関する書籍の翻訳を数多く担当し、それらの手法のコンサルティングに従事。主な訳書に『リーダブルコード』(オライリー・ジャパン)、『エクストリームプログラミング』(オーム社)、『Clean Craftsmanship』(アスキードワンゴ)、『プロダクトリサーチ・ルールズ』(BNN)、共著書に『エンジニアのためのデザイン思考入門』(翔泳社)がある。
◆目次
まえがき 序文  関数型プログラミングと手続き型プログラミングの簡単な歴史  Clojureについて  アーキテクチャと設計について  オブジェクト指向について  「関数型」について 謝辞 著者について
第I部 関数型の基礎 第1章 不変性  関数型プログラミングとは何か?  代入の問題点  なぜ関数型と呼ぶのか?  状態が変わらない?  不変性 第2章 永続的データ  チートについて  コピーを作成する  構造の共有 第3章 再帰と反復  反復  再帰 第4章 遅延  遅延の累積  でも、どうして遅延させるの?  終わりに 第5章 ステートフル  変更が必要なとき  STM  人生は難しい、ソフトウェアはさらに難しい
第II部 比較分析 第6章 素因数分解  Javaのバージョン  Clojureのバージョン  結論 第7章 ボウリングゲーム  Javaのバージョン  Clojureのバージョン  結論 第8章 ゴシップ好きなバスの運転手  Javaのバージョン  Clojureのバージョン  結論 第9章 オブジェクト指向プログラミング  関数型の給与計算  名前空間とソースファイル  結論 第10章 型  結論
第III部 関数型デザイン 第11章 データフロー 第12章 SOLID  単一責任の原則(SRP)  オープン・クローズドの原則(OCP)  リスコフの置換原則(LSP)  インターフェイス分離の原則(ISP)  依存関係逆転の原則(DIP)
第IV部 関数型の実践 第13章 テスト  だが、REPLはどうか?  モックはどうか?  プロパティベーステスト  診断のテクニック  関数型 第14章 GUI  Quilのタートルグラフィックス 第15章 並行性  結論
第V部 デザインパターン 第16章 デザインパターンの評価  関数型プログラミングのパターン  Abstract Server  Adapter  Command  Composite  Decorator  Visitor  Abstract Factory  結論  追記:オブジェクト指向の毒?
第VI部 ケーススタディ 第17章 Wa-Tor  かゆいところに手を届かせる  シャワーが問題を解決する  繁殖の時期  サメは?  結論
あとがき
0 notes
asciidwango · 3 months
Text
Leading Quality
Tumblr media
「品質とは何か」「品質をどう測るか」を説明した書籍は山積しているのに「品質の大切さをいかに組織に広め、品質文化を醸成するか」を解説したものは皆無である。本書は、それらを解説した画期的な書籍である。
Ronald Cummings-John, Owais Peer 著 河原田政典 訳 定価:2,860円(本体:2,600円) 発売日:2023年11月13日 形態:A5版(168ページ) ISBN:978-4-04-893112-0
Amazonで購入する
達人出版会で電子書籍を購入する
サポート/追加情報
◆リーダーはいかにして高品質のソフトウェアを提供し、成長を加速させるか
◆著者/訳者紹介
■Ronald Cummings-John(ロナルド・カミングス=ジョン)は、Global App Testing 社(www.globalapptesting.co_m)の共同設立者であり、テスト分野における革新的な取り組みで世界的な評価を得ています。
■Owais Peer(オワイス・ピア)は、Global App Testing 社(www.globalapptesting.com)の共同設立者であり、テスト分野における革新的な取り組みで世界的な評価を得ています。
■河原田政典(カワラダ マサノリ)株式会社グロービス QAブレイン・品質戦略室長、株式会社マネーフォワード QAスペシャリスト。複数の企業でソフトウェア開発および品質保証に従事したのち、上記企業に参画。品質界隈では英名のMark Wardの名で通っており、勉強会「Markin' Quality」を定期的に主宰。共訳書に、カトリーナ・クロッキー[著]風間裕也ほか[訳](2021)『A Practical Guide to Testing in DevOps Japanese Edition』(LeanPub)がある。
◆目次
セクションI 品質リーダーになるには 第1章 品質と価値 第2章 3つの品質ナラティブ 第3章 品質文化醸成 セクションII 戦略的に品質の意思決定を下す 第4章 手動テストと自動テスト 第5章 プロダクトの成熟度と品質 第6章 継続的テストとフィードバックループ 第7章 テストインフラへの投資 セクションIII 成長を加速させるチームにする 第8章 チームと会社の成長指標 第9章 ローカルペルソナ 第10章 品質戦略のリード
0 notes
asciidwango · 10 months
Text
The Art of Computer Programming Volume 4B Combinatorial Algorithms Part 2 日本語版
Tumblr media
Knuth先生によるアルゴリズムのバイブルの5冊目。
Knuth先生の名著『The Art of Computer Programming』でバックトラックアルゴリズムを理解しよう!
DONALD E. KNUTH 著 和田 英一 監訳 岩崎 英哉/田村 直之/寺田 実/和田 英一 訳 定価:6,380円(本体:5,800円) 発売日:2023年12月18日 形態:B5版(728ページ) ISBN:978-4-04-893114-4
Amazonで購入
達人出版会で購入
サポート/追加情報
「組合せアルゴリズムは,私たちを多数の場合を含む問題に対処させる方法である.そういう技術の知識の爆発的な増加は,その記述に数巻の書を必要とする.… 本書はそのシリーズの2番手であり,第4A 巻の後継である.」(本書「序」より)。
この巻では,組合せアルゴリズムの重要な部分となる「バックトラック」を解説します。バックトラックの概論に続いて,厳密被覆問題などの解決に有効な手法となる「ダンシングリンク」を取り上げます。後半では、計算機科学の全分野で基本的な問題の1つとなる「充足可能性(Satisfiability:SAT)」について詳解します。バックトラックアルゴリズムを理解するために必要となる確率論の概論について,「数学的準備拾遺」が特別に用意されています。 この巻には1,000問を超える演習問題があり,アルゴリズムの本格的な理解に役立てることができるでしょう。
◆著者プロフィール Donal E. Knuth(ドナルド・E・クヌース) スタンフォード大学名誉教授。アルゴリズムとプログラミング技術における先駆的な業績、コンピュータの組版に向けたTEXとMETAFONTシステムの発明、影響力のある執筆活動によって世界中で知られている。ACMチューリング賞、AMSスティール賞などを受賞している。
◆監訳者プロフィール 和田英一(わだえいいち) 1955年東京大学理学部物理学科卒業。東京大学工学部、富士通研究所を経てIIJ技術研究所。プログラム言語,操作システムなどソフトウェアシステムやインターフェースに関心があり,Happy Hacking Keyboard,和田研フォントの開発に関与,WIDEプロジェクトメンバー。
◆訳者プロフィール 岩崎英哉(いわさきひでや) 1983年東京大学工学部計数工学科卒業。1988年東京大学大学院工学系研究科情報工学専攻博士課程修了。工学博士。東京大学,東京農工大学,電気通信大学を経て,現在明治大学理工学部専任教授。専門分野は,プログラミング言語,システムソフトウェア。
田村直之(たむらなおゆき) 1980年神戸大学理学部物理学科卒業。1985 年同大学大学院自然科学研究科修了(学術博士)。日本IBMを経て1988年より神戸大学に所属。論理プログラミング,制約プログラミング,SATソルバー,パズルなどに興味がある。
寺田実(てらだみのる) 1981年東京大学工学部計数工学科卒業。工学博士。東京大学工学部を経て電気通信大学准教授。プログラミング支援,インターフェースなどに興味がある。
◆目次
数学的準備拾遺 第7章 組合せ探索 7.2. すべての可能性の生成  7.2.2. BacktrackProgramming 7.2.2.1. ダンシングリンクス 7.2.2.2. 充足可能性(Satisfiability) 演習問題の解答 付録A 数表 付録B 表記法索引 付録C アルゴリズムと定理の索引 付録D 組合せ問題の索引 付録E 解答のパズルの解
0 notes
asciidwango · 1 year
Text
エキスパートPythonプログラミング 改訂4版
Tumblr media
本書は、ベストセラーとなった『エキスパートPythonプログラミング 改訂3版』の内容を全面的に書き直した改訂版になります。本書を読むことで、先進的なPythonプログラマの開発ノウハウと最新のPythonプログラミング環境について学べます。
Michał Jaworski, Tarek Ziadé 著 新井正貴、稲田直哉、渋川よしき、清水川貴之、福田隼也 訳 定価:4,290円(本体:3,900円) 発売日:2023年7月21日 形態:B5変型版(584ページ) ISBN:978-4-04-893111-3
Amazonで購入する
達人出版会で電子書籍を購入する
サポート/追加情報
サンプルソースコードのダウンロード
◆Pythonプログラミングにおけるデザイン、コーディング、ディストリビューションのベストプラクティスを伝授します。
Pythonプログラマ必読と言われるベストセラーが、最新のPython環境に合わせて全面改訂されました。今回の改訂では本書の構成を一から見直し、現代のPythonプログラマが身につけるべき技術・ノウハウを学びやすく、より身につけやすくしています。本書は、Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。本書を読むことで、先進的なPythonプログラマが日常的に使用している開発ノウハウを学ぶことができます。
◆著者/監訳者紹介
■Michał Jaworski(ミハウ・ヤヲルスキ) Michał Jaworskiは、さまざまなプログラミング言語を使用したソフトウェアの開発に、10 年以上の専門的な経験を持っています。Michał はキャリアの大部分で、Web アプリケーション用の高性能な分散型バックエンドサービスを開発してきました。複数の企業で、普通のソフトウェアエンジニアからリードソフトウェアアーキテクトまで、さまざまな役割を担ってきました。彼の最愛の言語は、常にPython であり続けます。
■Tarek Ziadé(タレク・ジアデ) Tarek Ziadéは、フランスのブルゴーニュ地方に住むソフトウェアエンジニアです。Elastic 社で開発者向けツールの開発に携わっています。Elastic 以前はMozilla に10 年勤務し、AFPy というフランスのPython ユーザーグループを設立しました。また、Python に関する記事をさまざまな雑誌に寄稿しており、フランス語と英語の書籍も数冊執筆しています。
■新井正貴(あらい まさたか)東京大学文学部���業、アライドアーキテクツ株式会社にて勤務。2016 年4 月、株式会社SQUEEZE に入社。コミュニティ活動として、PyCon JP 2015~2019 スタッフ、DjangoCongress JP 2018~2019スタッフ、Python もくもく会の主催など。Site はhttps://massa142.github.io/。Twitter アカウントは@massa142
■稲田直哉(いなだ なおき) KLab株式会社所属のOSS開発者。Python 3.6でdictの新実装を開発し、Pythonコア開発者になった。ブログはhttps://methane.hatenablog.jp。Twitterアカウントは@methane
■渋川よしき(しぶかわ よしき) 三女の父。ホンダ→ DeNA →フューチャー。本書の翻訳でも活躍した、ドキュメントツールSphinxの普及と発展のためにSphinx-Users.jp の設立。『Real World HTTP 第2 版(2020 オライリー・ジャパン)』『実用Go 言語(2022 オライリー・ジャパン)』『ソフトウェア設計のトレードオフと誤り(2023オライリー・ジャパン)』、『Go ならわかるシステムプログラミング第2 版(2022 ラムダノート)』を出版。Go/TypeScript などを扱う時間も多いが、Python が実家。ブログはhttp://blog.shibu.jp。Twitter アカウントは@shibu_jp
■清水川貴之(しみずかわ たかゆき) 株式会社ビープラウド所属。一般社団法人PyCon JP Association 会計理事。2003 年にZope2 をきっかけにPython を使い始め、それがオープンソースなどのコミュニティ活動を始めるきっかけとなった。Python mini Hack-a-thon やSphinx-users.jp などPython 関連イベント運営のかたわら、カンファレンスや書籍、OSS 開発を通じてPython 技術情報を発信している。著書/訳書:『独学コンピューターサイエンティスト(2022 年日経BP 社)』『Sphinx をはじめよう第3版(2022 オライリー・ジャパン)』『自走プログラマー(2020 年技術評論社)』『独学プログラマー(2018 日経BP 社)』サイトはhttp://清水川.jp/、Twitter アカウントは@shimizukawa
■福田隼也(ふくだ じゅんや)長野県の株式会社日本システム技研にてPython を中心としたWeb システム開発にフルスタックエンジニアとして従事。現職では、GROOVE X 株式会社にて愛する力をはぐくむ家族型ロボット「Lovot(らぼっと)」の開発を行う。PyCon JP、DjangoCongress JP、EuroPython などにて登壇。コミュニティ活動として、ギークラボ長野の運営に参加。共著書に『Python 実践レシピ(2022 技術評論社)』。ビールとキャンプが好き。ブログはhttp://blog.jrfk.dev。Twitter アカウントは@JunyaFff
◆目次
はじめに 本書はだれのために書かれたのか? 本書でカバーしている内容 本書を最大限に活かすために サンプルソースコードのダウンロード 本書の表記法
第1章 現在のPythonのステータス  1.1 今どこにいて、どこに向かおうとしているのか?  1.2 Python 2の扱い方  1.3 最新情報への追従    1.3.1 PEP文書    1.3.2 活動しているコミュニティ    1.3.3 その他のリソース  1.4 まとめ
第2章 現代的なPythonの開発環境  2.1 事前準備  2.2 Pythonのパッケージングエコシステム    2.2.1 pipコマンドを利用したPythonパッケージのインストール  2.3 実行環境の分離    2.3.1 アプリケーションレベルの分離とシステムレベルの分離  2.4 アプリケーションレベルの環境分離    2.4.1 Poetryによる依存パッケージ管理  2.5 システムレベルの環境分離    2.5.1 コンテナ化と仮想化    2.5.2 Dockerを使った仮想環境    2.5.3 Vagrantを使った仮想的な開発環境  2.6 人気のある生産性向上ツール    2.6.1 拡張インタラクティブセッション    2.6.2 IPythonを使う    2.6.3 スクリプトやプログラムにシェルを組み込む    2.6.4 インタラクティブ・デバッガ    2.6.5 その他の生産性向上ツール  2.7 まとめ
第3章 Pythonの新しい要素  3.1 事前準備  3.2 最近追加された言語機能    3.2.1 辞書のマージと更新の演算子  3.3 代入式    3.3.1 構造的パターンマッチ    3.3.2 型ヒントのジェネリック型    3.3.3 Union型と | 演算子    3.3.4 位置専用引数    3.3.5 zoneinfo モジュール    3.3.6 graphlib モジュール  3.4 新機能ではないが、依然として輝いている機能    3.4.1 breakpoint() 関数    3.4.2 開発モード    3.4.3 モジュールレベルの __getattr__() と __dir__() 関数    3.4.4 f-stringを使った文字列のフォーマット    3.4.5 数値リテラルのアンダースコア    3.4.6 secretsモジュール  3.5 まとめ
第4章 Pythonと他の言語の比較  4.1 事前準備  4.2 クラスモデルとオブジェクト指向プログラミング    4.2.1 スーパークラスへのアクセス    4.2.2 多重継承とメソッド解決順序    4.2.3 クラスインスタンスの初期化    4.2.4 属性アクセスのパターン    4.2.5 ディスクリプタ    4.2.6 プロパティ  4.3 動的ポリモーフィズム    4.3.1 演算子のオーバーロード    4.3.2 関数とメソッドのオーバーロード  4.4 データクラス  4.5 関数型プログラミング    4.5.1 ラムダ関数    4.5.2 map()、filter()、reduce()関数    4.5.3 部分オブジェクトとpartial()関数    4.5.4 ジェネレータ    4.5.5 ジェネレータ式    4.5.6 デコレータ  4.6 列挙型  4.7 まとめ
第5章 インターフェイス、パターン、モジュール化  5.1 事前準備    5.1.1 インターフェイス    5.1.2 簡単な歴史: zope.interface    5.1.3 関数アノテーションや抽象基底クラスを使用する    5.1.4 型アノテーションを使ったインターフェイス  5.2 制御の反転と依存性注入    5.2.1 アプリケーションにおける制御の反転    5.2.2 依存性注入フレームワークの利用  5.3 まとめ
第6章 並行処理  6.1 事前準備  6.2 並行性とは何か?  6.3 マルチスレッド    6.3.1 マルチスレッドとは?    6.3.2 Pythonはどのようにスレッドを扱うのか?    6.3.3 いつマルチスレッドを使うべきか?    6.3.4 マルチスレッドを使用したアプリケーション例  6.4 マルチプロセス    6.4.1 multiprocessing    6.4.2 プロセスプールを使う    6.4.3 マルチスレッドのためのmultiprocessing.dummy  6.5 非同期プログラミング    6.5.1 協調的マルチタスクと非同期I/O    6.5.2 Pythonにおける async と await    6.5.3 非同期プログラミングの実践例    6.5.4 Future を利用して同期コードを結合する  6.6 まとめ
第7章 イベント駆動プログラミング  7.1 事前準備  7.2 イベント駆動型プログラミングとは何か    7.2.1 イベント駆動 != 非同期    7.2.2 GUIにおけるイベント駆動プログラミング    7.2.3 イベント駆動通信  7.3 イベント駆動プログラミングのスタイル    7.3.1 Callback-basedスタイル    7.3.2 Subject-based スタイル    7.3.3 Topic-based スタイル  7.4 イベント駆動アーキテクチャ    7.4.1 イベントとメッセージキュー  7.5 まとめ
第8章 メタプログラミングの要素  8.1 事前準備  8.2 メタプログラミングとは何か?  8.3 デコレータを使って実行前の関数を変更する    8.3.1 さらなる深みへ: クラスデコレータ  8.4 クラスインスタンスの生成処理への割り込み  8.5 メタクラス    8.5.1 メタクラスの構文    8.5.2 メタクラスの使用例    8.5.3 メタクラスの落とし穴    8.5.4 メタクラスの代わりに __init_subclass__() メソッドを利用する  8.6 コード生成    8.6.1 exec, eval と compile    8.6.2 抽象構文木    8.6.3 importフック    8.6.4 Pythonによるコード生成の注目すべき例  8.7 まとめ
第9章 PythonとC/C++をつなぐ  9.1 事前準備  9.2 拡張モジュールの中心となるC/C++  9.3 拡張モジュールのコンパイルとロード  9.4 拡張モジュールを使う理由    9.4.1 コードのクリティカルな部分の性能を向上する    9.4.2 別の言語で書かれたコードを利用する    9.4.3 サードパーティーの動的ライブラリを利用する    9.4.4 効率の良い独自のデータ構造を作る  9.5 拡張モジュールを書く    9.5.1 ピュアC拡張モジュール    9.5.2 Cythonを使って拡張モジュールを書く  9.6 拡張モジュールのデメリット    9.6.1 増加する複雑さ    9.6.2 デバッグの難しさ  9.7 拡張モジュールを使わずに動的ライブラリを利用する    9.7.1 ctypesモジュール    9.7.2 CFFI  9.8 まとめ
第10章 テストと品質保証の自動化  10.1 事前準備  10.2 テスト駆動開発の原則  10.3 pytestを使ったテストの書き方    10.3.1 パラメータ化テスト    10.3.2 pytestのフィクスチャ    10.3.3 スタブの利用    10.3.4 モックとunittest.mockモジュール  10.4 品質保証の自動化    10.4.1 テストカバレッジ    10.4.2 スタイルフィクサーとコードリンター    10.4.3 静的型解析  10.5 ミューテーションテスト  10.6 便利なテストユーティリティ    10.6.1 リアルなデータのフェイク    10.6.2 時間のフェイク  10.7 まとめ
第11章 Pythonパッケージの作成と配布  11.1 事前準備  11.2 ライブラリのパッケージ作成と配布    11.2.1 Pythonパッケージの構造    11.2.2 パッケージ配布物の種類    11.2.3 パッケージの登録と公開    11.2.4 パッケージのバージョンと依存の管理    11.2.5 自分のパッケージをインストールする    11.2.6 名前空間パッケージ    11.2.7 パッケージスクリプトとエントリーポイント  11.3 Webアプリケーションのためのパッケージ作成    11.3.1 Twelve-Factor App 宣言    11.3.2 Dockerの有効性    11.3.3 環境変数の扱い    11.3.4 アプリケーションフレームワークにおける環境変数の役割  11.4 スタンドアローン実行形式の作成    11.4.1 スタンドアローン実行形式が便利なシーン    11.4.2 人気のあるツール    11.4.3 実行可能形式のパッケージにおけるPythonコードの難読化  11.5 まとめ
第12章 アプリケーションの挙動とパフォーマンスの監視  12.1 事前準備  12.2 エラーとログ情報の取得    12.2.1 Pythonのログの要点    12.2.2 良いログのプラクティス    12.2.3 分散ログ    12.2.4 あとで確認するためにエラーを取得する  12.3 カスタムメトリクス取得のためにコードに計装する    12.3.1 Prometheusを利用する  12.4 分散アプリケーションのトレーシング    12.4.1 Jaegerによる分散トレーシング  12.5 まとめ
第13章 最適化  13.1 事前準備  13.2 パフォーマンスの問題の原因    13.2.1 コードの複雑さ    13.2.2 過度なリソース確保とリーク    13.2.3 過剰なI/Oとブロッキング処理  13.3 コードのプロファイリング    13.3.1 CPU使用量のプロファイル    13.3.2 メモリ使用量のプロファイリング  13.4 正しいデータ構造を選び計算量を減らす    13.4.1 リストからの探索    13.4.2 setを使う    13.4.3 collectionsモジュールを使う  13.5 トレードオフを利用する    13.5.1 ヒューリスティックアルゴリズムや近似アルゴリズムを使う    13.5.2 タスクキューを使って遅延処理を行う    13.5.3 確率的データ構造を利用する    13.5.4 キャッシュ  13.6 まとめ 索引
2 notes · View notes
asciidwango · 1 year
Text
JavaScript Primer 改訂2版
Tumblr media
迷わないための入門書 最新のES2022に対応! 変化に対応できる基礎を身につけよう!
azu、Suguru Inatomi 著 定価:4,290円(本体:3,900円) 発売日:2023年7月21日 形態:B5変型版(508ページ) ISBN:978-4-04-893110-6
Amazonで購入する
達人出版会で購入する
サポート/追加情報
◆本書の「第1部 基本文法」では、JavaScriptの文法と機能について、実際の利用方法を示しながら解説しています。また「第2部 ユースケース」では、小さなアプリケーションを例にあげながら、JavaScriptの現実の開発での使い方にも言及しています。
本書は、プログラミング言語のリファレンスのようにJavaScriptのすべての機能を解説してはいません。ECMAScript 2015以降の新しい書き方を中心に、既存のコードに頻出する古い書き方を含めて解説しています。 JavaScriptは激しく変化している言語です。このような変化に対応できる基礎を身に付けられるよう、単に書き方を解説するのではなく、プログラミングの現場で直面する問題を自分自身で解決するのに必要な調査方法についても焦点を当てています。 初版からの変更点を次に示します。 ・ ECMAScriptの新しいバージョンであるES2020、ES2021、ES2022に対応した ・ 新しいECMAScriptの機能によって、使う必要がなくなった機能は非推奨へと変更した ・ 文字では想像しにくいビット演算、非同期処理などに図を追加した ・ PromiseとAsync Functionを非同期の処理の中心として書き直した ・ 一方で、エラーファーストコールバックは非同期処理としてはメインではなくなった ・ Array#includesという表記は、Private Classs Fields(#field)と記号が被るため廃止した ・ Node.jsでもECMAScript Modulesを使うようになり、CommonJSはメインではなくなった ・ Node.jsが12から18までアップデートし、npmは6から8までアップデート、各種ライブラリも最新にアップデートした ・ 読者からのフィードバックを受けて、全体をよりわかりやすく読みやすくなるように書き直した
◆著者紹介
■azu(あず) ISO/IEC JTC 1/SC 22/ECMAScript Ad Hoc 委員会エキスパートでECMAScript、JSON の仕様に関わる。2011 年にJSer.info を立ち上げ、継続的にJavaScript の情報を発信している。ライフワークとしてオープンソースへのコントリビューションをしている。
■Suguru Inatomi(すぐる いなとみ) 長崎生まれ福岡育ち。2016 年よりAngular 日本ユーザー会の代表を務める。2018 年に��本で一人目のGoogle Developers Expert for Angular に認定される。日々の仕事の傍ら、Angular をはじめとするOSS へのコントリビューションや翻訳、登壇、イベントの主催などの活動を続けている。
◆目次
はじめに 著者紹介 第1部 基本文法 第1章 JavaScriptとは  1.1 JavaScriptとECMAScript  1.2 JavaScriptってどのような言語? 第2章 コメント  2.1 一行コメント  2.2 複数行コメント  2.3 HTML-likeコメント  2.4 まとめ 第3章 変数と宣言  3.1 const  3.2 let  3.3 var  3.4 変数名に使える名前のルール  3.5 まとめ 第4章 値の評価と表示  4.1 この書籍で利用するブラウザ  4.2 ブラウザでJavaScriptを実行する  4.3 Console API  4.4 ウェブ版の書籍でコードを実行する  4.5 コードの評価とエラー  4.6 まとめ 第5章 データ型とリテラル  5.1 データ型  5.2 リテラル  5.3 プリミティブ型とオブジェクト  5.4 まとめ 第6章 演算子  6.1 二項演算子  6.2 単項演算子(算術)  6.3 比較演算子  6.4 ビット演算子  6.5 代入演算子(=)  6.6 論理演算子  6.7 Nullish coalescing演算子(??)  6.8 条件(三項)演算子(?と:)  6.9 カンマ演算子(,)  6.10 まとめ 第7章 暗黙的な型変換  7.1 暗黙的な型変換とは  7.2 明示的な型変換  7.3 明示的な変換でも解決しないこと  7.4 まとめ 第8章 関数と宣言  8.1 関数宣言  8.2 関数の引数  8.3 可変長引数  8.4 関数の引数と分割代入  8.5 関数はオブジェクト  8.6 コールバック関数  8.7 メソッド  8.8 まとめ 第9章 文と式  9.1 式  9.2 文  9.3 関数宣言(文)と関数式  9.4 まとめ 第10章 条件分岐  10.1 if文  10.2 switch文  10.3 まとめ 第11章 ループと反復処理  11.1 while文  11.2 do-while文  11.3 for文  11.4 配列のforEachメソッド  11.5 break文  11.6 continue文  11.7 for…in文  11.8 for…of文  11.9 まとめ 第12章 オブジェクト  12.1 オブジェクトを作成する  12.2 プロパティへのアクセス  12.3 オブジェクトと分割代入  12.4 プロパティの追加  12.5 プロパティの存在を確認する  12.6 Optional chaining演算子(?.)  12.7 toStringメソッド  12.8 オブジェクトの静的メソッド  12.9 まとめ 第13章 プロトタイプオブジェクト  13.1 Objectはすべての元  13.2 プロトタイプメソッドとインスタンスメソッドの優先順位  13.3 とObject.hasOwn静的メソッドとin演算子との違い  13.4 オブジェクトの継承元を明示するObject.createメソッド  13.5 ArrayもObjectを継承している  13.6 Object.prototypeを継承しないオブジェクト  13.7 まとめ 第14章 配列  14.1 配列の作成とアクセス  14.2 オブジェクトが配列かどうかを判定する  14.3 配列と分割代入  14.4 配列から要素を検索  14.5 追加と削除  14.6 配列同士を結合  14.7 配列の展開  14.8 配列をフラット化  14.9 配列から要素を削除  14.10 破壊的なメソッドと非破壊的なメソッド  14.11 配列を反復処理するメソッド  14.12 メソッドチェーンと高階関数  14.13 まとめ 第15章 文字列  15.1 文字列を作成する  15.2 エスケープシーケンス  15.3 文字列を結合する  15.4 文字へのアクセス  15.5 文字列とは  15.6 文字列の分解と結合  15.7 文字列の長さ  15.8 文字列の比較  15.9 文字列の一部を取得  15.10 文字列の検索  15.11 正規表現オブジェクト  15.12 文字列の置換/削除  15.13 文字列の組み立て  15.14 まとめ 第16章 文字列とUnicode  16.1 Code Point  16.2 Code PointとCode Unitの違い  16.3 サロゲートペア  16.4 Code Pointを扱う  16.5 まとめ 第17章 ラッパーオブジェクト  17.1 プリミティブ型とラッパーオブジェクト  17.2 プリミティブ型の値からラッパーオブジェクトへの自動変換  17.3 まとめ 第18章 関数とスコープ  18.1 スコープとは  18.2 ブロックスコープ  18.3 スコープチェーン  18.4 グローバルスコープ  18.5 関数スコープとvarの巻き上げ  18.6 関数宣言と巻き上げ  18.7 クロージャー  18.8 メモリ管理の仕組み  18.9 まとめ 第19章 関数とthis  19.1 実行コンテキストとthis  19.2 関数とメソッドにおけるthis  19.3 Arrow Function以外の関数におけるthis  19.4 thisが問題となるパターン  19.5 Arrow Functionとthis  19.6 まとめ 第20章 クラス  20.1 クラスの定義  20.2 クラスのインスタンス化  20.3 クラスのプロトタイプメソッドの定義  20.4 クラスのアクセッサプロパティの定義  20.5 Publicクラスフィールド  20.6 Privateクラスフィールド  20.7 静的メソッド  20.8 プロトタイプに定義したメソッドとインスタンスに定義したメソッドの違い  20.9 プロトタイプオブジェクト  20.10 プロトタイプチェーン  20.11 継承  20.11 ビルトインオブジェクトの継承  20.13 まとめ 第21章 例外処理  21.1 try…catch構文  21.2 throw文  21.3 エラーオブジェクト  21.4 エラーとデバッグ  21.5 console.errorとスタックトレース  21.6 まとめ 第22章 非同期処理: Promise/Async Function  22.1 同期処理  22.2 非同期処理  22.3 非同期処理はメインスレッドで実行される  22.4 非同期処理と例外処理  22.5 Promise  22.6 Async Function  22.7 Async Functionと組み合わせ  22.8 まとめ 第23章 Map/Set  23.1 Map  23.2 Set  23.3 まとめ 第24章 JSON  24.1 JSONとは  24.2 JSONオブジェクト  24.3 JSONにシリアライズできないオブジェクト  24.4 toJSONメソッドを使ったシリアライズ  24.5 まとめ 第25章 Date  25.1 Dateオブジェクト  25.2 現実のユースケースとDate  25.3 まとめ 第26章 Math  26.1 Mathオブジェクト  26.2 乱数を生成する  26.3 数値の大小を比較する  26.4 数値を整数にする  26.5 まとめ 第27章 ECMAScriptモジュール  27.1 ECMAScriptモジュールの構文  27.2 ECMAScriptモジュールを実行する 第28章 ECMAScript  28.1 ECMAScriptのバージョンの歴史  28.2 Living StandardとなるECMAScript  28.3 仕様策定のプロセス  28.4 プロポーザルの機能を試す  28.5 仕様や策定プロセスを知る意味  28.6 まとめ 第1部のおわりに 第2部 ユースケース 第29章 アプリケーション開発の準備  29.1 Node.jsのインストール  29.2 npxコマンドによるnpmパッケージの実行  29.3 ローカルサーバーのセットアップ  29.4 まとめ 第30章 ユースケース: Ajax通信  30.1 エントリーポイント  30.2 HTTP通信  30.3 データを表示する  30.4 Promiseを活用する 第31章 ユースケース: Node.jsでCLIアプリケーション  31.1 Node.jsでHello World  31.2 コマンドライン引数を処理する  31.3 ファイルを読み込む  31.4 MarkdownをHTMLに変換する  31.5 ユニットテストを記述する  31.6 まとめ 第32章 ユースケース: Todoアプリケーション  32.1 エントリーポイント  32.2 アプリの構成要素  32.3 Todoアイテムの追加を実装する  32.4 イベントとモデル  32.5 Todoアイテムの更新と削除を実装する  32.6 Todoアプリのリファクタリング  32.7 Todoアプリのまとめ 付録A 参考リンク集  A.1 開発を補助するツール  A.2 JavaScriptの実行プラットフォーム 索引
5 notes · View notes
asciidwango · 2 years
Text
Clean Craftsmanship
Tumblr media
規律、基準、倫理 より良く働き、生産性を高め、自分が書いたものに誇りを持つ!
Robert C. Martin 著 角 征典 訳 定価:3,520円(本体:3,200円) 発売日:2022年8月31日 形態:B5変型版(336ページ) ISBN:978-4-04-893107-6
Amazonで購入する 達人出版会で購入する サポート/追加情報
◆現代社会では、ソフトウェアが社会のインフラとしてあらゆる場面で活用されている。これらのソフトウェアの不具合や、ソフトウェアを用いた不正行為などが起こると、人々の生活に大きな悪影響を与えることになる。社会に影響を与える技術には、規律と制御が必要とされる。本書の目的は、ソフトウェア開発者とそのマネージャーたちに、規律の必要性を印象づけ、堅牢で対障害性のあるソフトウェアを構築するために最も効果的な「規律、基準、倫理」を教えることにある。
◆著者/訳者紹介
Robert C. Martin(アンクル・ボブ)は、1970年からプログラマーとして働いている。cleancoders.comの共同創業者であり、ソフトウェア開発者向けの学習用ビデオをオンラインで提供している。また、Uncle Bob Consulting LLC.を設立し、世界中の大企業を対象としたソフトウェアコンサルティング、トレーニング、スキル開発を行っている。シカゴに本拠地を置くコンサルティングファーム8th Light, Inc.では、Master Craftsmanを務めていた。
■角 征典(かどまさのり) ワイクル株式会社代表取締役。東京工業大学環境・社会理工学院特任講師。アジャイル開発やリーンスタートアップに関する書籍の翻訳を数多く担当し、それらの手法のコンサルティングに従事。主な訳書に『リーダブルコード』『Running Lean』『Team Geek』(オライリー・ジャパン)、『エクストリームプログラミング』『アジャイルレトロスペクティブズ』(オーム社)、共著書に『エンジニアのためのデザイン思考入門』(翔泳社)がある。
◆目次
推薦の言葉 序文 はじめに  「クラフトマンシップ」という言葉について  たったひとつの道 謝辞 著者について 第1章 クラフトマンシップ 第I部 規律  エクストリームプログラミング  テスト駆動開発  リファクタリング  シンプルな設計  協力的プログラミング  受け入れテスト 第2章 テスト駆動開発  概要  基本  結論 第3章 テスト駆動開発応用  ソート1  ソート2  行き詰まり  AAA(準備、実行、アサート)  テストダブル  アーキテクチャ  結論 第4章 テスト設計  データベースのテスト  GUIのテスト  テストパターン  テスト設計  変換の優先順位説  結論 第5章 リファクタリング  リファクタリングとは?  基本的なツールキット  規律  結論 第6章 シンプルな設計  YAGNI  テストでカバーする  表現の最大化  重複の最小化  サイズの最小化 第7章 協力的プログラミング 第8章 受け入れテスト  規律  継続的ビルド 第II部 基準  あなたの新しいCTO 第9章 生産性  絶対にS**Tを出荷しない  安価な適応力  常に準備万端  安定した生産性 第10章 品質  継続的改善  恐れを知らない能力  エクストリームな品質  QAを軽視しない  QAは何も発見しない  テストの自動化  自動テストとユーザーインターフェイス  ユーザーインターフェイスのテスト 第11章 勇気  お互いをカバーする  正直な見積り  「ノー」と言う  継続的挑戦的学習  メンタリング 第III部 倫理  最初のプログラマー  75年  オタクから救世主へ  ロールモデルと悪役  我々が世界を支配する  大惨事  プログラマーの誓い 第12章 有害  第一に、害を与えてはならない  最高傑作  再現可能な証拠 第13章 誠実  小さなサイクル  容赦ない改善  高い生産性を維持する 第14章 チームワーク  チームとして働く  正直に公正に見積もる  尊重  学習をやめない
3 notes · View notes
asciidwango · 3 years
Text
実践 バイナリ解析
Tumblr media
基礎知識から高度な手法までを実践的に学ぶバイナリ解析入門の決定版!
セキュリティエンジニアやマルウェアアナリスト、学生など、バイナリ解析に興味をもつ人必読の解説書。コンピュータサイエンスにおいて最も魅力的で最も手ごわいテーマであるバイナリ解析を基本から理解しよう。
Dennis Andriesse  著 株式会社クイープ/遠藤美代子 訳 定価:5,060円(本体:4,600円) 発売日:2022年1月29日 形態:B5変形版(480ページ) ISBN:978-4-04-893100-7
Amazonで購入
達人出版会で購入
サポート/追加情報
バイナリ解析とは、バイナリプログラムとそれに含まれているマシンコードやデータの性質を解析する科学と技術のことだ。セキュリティの脆弱性を狙う攻撃やマルウェアなど、悪意をもつソフトウェアに対処するには、バイナリプログラムの本当の性質を突き止める、そのプログラムが実際に実行することを突き止める必要がある。 本書は、バイナリプログラムの基礎知識、静的解析や動的解析といったバイナリ解析の基本から、ソースプログラムがなくてもバイナリプログラムの内容を書き換えるバイナリ計装といった高度な手法まで、リバースエンジニアリングの範囲を超えて実践的に解説する。 セキュリティエンジニアやセキュリティ研究者、ハッカーやペネトレーションテストの担当者、リバースエンジニア、マルウェアアナリスト、そしてコンピュータサイエンスの学生など、バイナリ解析に興味をもつすべての人を対象として、最も魅力的で最も手ごわいテーマであるバイナリ解析入門の決定版である。
◆著者プロフィール Dennis Andriesse(デニース・アンドリーセ)
システム/ネットワークセキュリティの博士号を取得しており、日々研究でバイナリ解析を使っている。ROPなどの制御フローハイジャック攻撃を阻止する制御フロー整合性システムPathArmorのメインコントリビュータの1人。また、GameOver Zeus P2Pボットネットの撲滅に協力した攻撃開発者の1人でもある。
◆訳者プロフィール 株式会社クイープ 1995年、米国サンフランシスコに設立。コンピュータシステムの開発、ローカライズ、コンサルティングを手がけている。2001年に日本法人を設立。主な訳書に『Python機械学習プログラミング 第3版』(インプレス)、『初めてのSQL 第3版』(オライリー・ジャパン)、『Rによる機械学習 第3版』『なっとく! AIアルゴリズム』(翔泳社)、『More Effective Agile』(日経BP)、『Pythonハッカーガイドブック』(マイナビ出版)などがある。ホームページはhttp://www.quipunet.com/。
◆目次
第I部 バイナリフォーマット 第1章 バイナリを解剖する 第2章 ELFフォーマット 第3章 入門:PEフォーマット 第4章 libbfdを使ってバイナリローダーを作成する
第II部 バイナリ解析の基礎 第5章 Linuxでの基本的なバイナリ解析 第6章 逆アセンブリとバイナリ解析の基礎 第7章 ELFにコードを注入する
第III部 高度なバイナリ解析 第8章 逆アセンブリのカスタマイズ 第9章 バイナリ計装 第10章 動的テイント解析 第11章 libdftを使った実用的な動的テイント解析 第12章 シンボリック実行 第13章 Tritonを使ったシンボリック実行
第IV部 付録 付録A 速習:x86アセンブリ 付録B libelfを使ってPT_NOTEを上書きする 付録C バイナリ解析ツール 付録D 参考文献
​#タグ閉じる
11 notes · View notes
asciidwango · 3 years
Text
ネットワークプロトコル ハッカーズガイド
Tumblr media
セキュリティの脆弱性を見つけ出す高度なテクニックを基本から理解しよう!
ネットワークプロトコルのキャプチャ、解析、エクスプロイトの基礎理論から高度な実践方法までを徹底的に解説する。Linux,Windows,macOSで具体例を確認しながら概念や内部構造を理解していこう。
James Forshaw  著 株式会社クイープ/遠藤美代子 訳 定価:3,740円(本体:3,400円) 発売日:2021年8月31日 形態:B5変形版(344ページ) ISBN:978-4-04-893091-8
Amazonで購入
達人出版会で購入
サポート/追加情報
セキュリティの脆弱性を見つけ出すには、攻撃者と同じように考える必要がある。本書は、著名なバグハンターである著者が自身のテクニックを駆使しながら、ネットワークプロトコルのキャプチャ、解析、エクスプロイトの基礎理論から高度な実践方法までを徹底的に解説する。Linux,Windows,macOSで動作する多数のツールに加えて、著者の提供するネットワーキングライブラリ、およびチャットプロトコルを実装したシンプルなサンプルアプリケーションを活用しながら、具体的に概念や内部構造を理解できる。 ネットワーキング、暗号化、脆弱性のさまざまな根本原因など、セキュリティの脆弱性の報告を目的とする人から、最新のIoT(Internet of Things)デバイスの通信方法を知りたい人まで、幅広い人に役立つ構成となっている。
◆著者プロフィール James Forshaw(ジェームス・フォーショウ) Google Project Zeroに所属している著名なコンピュータセキュリティリサーチャー。アプリケーションネットワークプロトコルの解析とエクスプロイトにおいて10年以上の経験を持つ。世界的なセキュリティカンファレンスでセキュリティに関する新たな研究について招待講演を行っている。
◆目次 第1章 ネットワーキングの基礎 第2章 アプリケーショントラフィックのキャプチャ 第3章 ネットワープロトコルの構造 第4章 アプリケーショントラフィックの高度なキャプチャ 第5章 ネットワークからのプロトコルの解析 第6章 アプリケーションのリバースエンジニアリング 第7章 ネットワークプロトコルのセキュリティ 第8章 ネットワークプロトコルの実装 第9章 脆弱性の根本原因 第10章 セキュリティの脆弱性の検知とエクスプロイト
付録 ネットワークプロトコル解析ツールキット
7 notes · View notes
asciidwango · 3 years
Text
エキスパートPythonプログラミング 改訂3版
Tumblr media
本書は、ベストセラーとなった『エキスパートPythonプログラミング 改訂2版』の内容を最新の状況・ツールに合わせて書き直した改訂版になります。本書を読むことで、先進的なPythonプログラマが日常的に使用している開発ノウハウを学ぶことができます。
Michał Jaworski, Tarek Ziadé 著 稲田直哉、芝田将、渋川よしき、清水川貴之、森本哲也 訳 定価:4,180円(本体:3,800円) 発売日:2021年7月30日 形態:B5変型版(616ページ) ISBN:978-4-04-893084-0
Amazonで購入する
達人出版会で電子書籍を購入する
サポート/追加情報
サンプルソースコードのダウンロード
◆Pythonプログラミングにおけるデザイン、コーディング、ディストリビューションのベストプラクティスを伝授します。
Pythonプログラマ必読と言われるベストセラーが、最新のPython環境に合わせて改訂されました。本書は、Pythonを使って仕事をしている開発者が普段どのようなツールやテクニックを用いて仕事をしているのか、また開発者が実際に現場で用いているベストプラクティスについて解説した書籍です。今回の改訂によって、新たにメタプログラミング、イベント駆動型プログラミング、型ヒントについての章が追加されました。
◆著者/監訳者紹介
■Michał Jaworski(ミハウ・ヤヲルスキ) Michał Jaworskiには10年におよぶPythonの経験があり、これまで複数の会社でさまざまな役割を経験してきました。その経験は、普通のフルスタック開発者からソフトウェアアーキテクトを経て、スタートアップにおけるエンジニアリングの統括責任者までに至ります。現在はShowpad社のシニアバックエンドエンジニアを務めています。彼は高性能な分散サービスの設計について、豊富な経験を持っています。さらに多くのPythonのオープンソースプロジェクトに対しても積極的にコントリビューターとして活動しています。
■Tarek Ziadé(タレク・ジアデ) Tarek ZiadéはフランスのDijon近郊に住んでいるPython開発者です。Mozillaのサービスチームで10年働いた後、2021年1月からElasticで働いています。彼はフランスのPythonユーザーグループであるAfpyを創設し、Pythonに関する複数の書籍をフランス語と英語で執筆しています。コンピューターを使ってハッキングしたり家族とともに過ごす他にも、ジョギングとトランペットの演奏に情熱を注いでいます。
■稲田直哉(いなだ なおき) KLab株式会社所属のOSS開発者。Python 3.6でdictの新実装を開発し、Pythonコア開発者になった。ブログはhttps://methane.hatenablog.jp。Twitterアカウントは@methane
■芝田将(しばた まさし) 株式会社サイバーエージェントAI Lab所属。自動ハイパーパラメータ最適化ライブラリOptunaコミッター、Kubeflow/Katibレビューア。著書:『実践Django Pythonによる本格Webアプリケーション開発(2021年翔泳社)』GitHubアカウントは@c-bata、Twitter アカウントは@c_bata_
■渋川よしき(しぶかわ よしき) 三女の父。ホンダ→ DeNA→フューチャー。本章の11章でも紹介され、本書の翻訳でも活躍した、ドキュメントツールSphinxの普及と発展のためにSphinx-Users.jpの設立をするかたわら、拡張プラグインの開発、本体の機能拡張にも取り組んでいる。オライリージャパンから『Real World HTTP』、ラムダノートから『Goならわかるシステムプログラミング』を出版。ブログはhttp://blog.shibu.jp。Twitter アカウントは@shibu_jp
■清水川貴之(しみずかわ たかゆき) 株式会社ビープラウド所属。一般社団法人PyCon JP Association会計理事。2003年にZope2をきっかけにPythonを使い始め、それがオープンソース等のコミュニティ活動を始めるきっかけとなった。Python mini Hack-a-thonやSphinx-users.jpなどPython関連イベント運営のかたわら、カンファレンスや書籍、OSS開発を通じてPython技術情報を発信している。著書/訳書:『自走プログラマー(2020年技術評論社刊)』『Pythonプロフェッショナルプログラミング第3版(2018秀和システム刊)』『独学プログラマー(2018日経BP社刊)』『Sphinxをはじめよう第2版(2017 オライリージャパン刊)』サイトはhttp://清水川.jp/、Twitter アカウントは@shimizukawa
■森本哲也(もりもと てつや) カザモリ合同会社所属。業務アプリケーションのサーバーサイド開発を経てインフラエンジニアに携わった後、独立して仕事をしていく方法を模索している。Pythonは普段使いのツールとして使いつつも業務ではJavaやGo言語といった他言語で開発することもある。OSSやそのコミュニティの文化が好き。
◆目次
献辞 著者について レビューアについて 日本語翻訳出版によせて(改訂3版) 日本語版まえがき  翻訳にあたって  謝辞 翻訳者紹介 はじめに  本書はだれのために書かれたのか?  本書でカバーしている内容  本書を最大限に活かすために 第1部 始める前に  第1章 現在のPythonのステータス    1.1 事前準備    1.2 今どこにいて、どこに向かおうとしているのか?    1.3 Pythonはなぜ/どのように変化するのか?    1.4 PEP文書から最新の変更情報を得る    1.5 本書執筆時点でのPython 3の普及状況    1.6 Python 3とPython 2の主な違い      1.6.1 なぜそれを気にする必要があるのか?      1.6.2 主な構文上の違いと、よくある落とし穴      1.6.3 バージョン間の互換性を保つときによく利用されるツールやテクニック    1.7 CPython以外の世界      1.7.1 なぜCPython以外も考慮すべきなのか      1.7.2 Stackless Python      1.7.3 Jython      1.7.4 IronPython      1.7.5 PyPy      1.7.6 MicroPython      1.7.7 Graal.Python    1.8 役に立つリソース    1.9 まとめ  第2章 現代的なPythonの開発環境    2.1 事前準備    2.2 pipコマンドを利用したPythonの追加パッケージのインストール    2.3 実行環境の分離      2.3.1 アプリケーションレベルの分離とシステムレベルの分離    2.4 Pythonのvenv      2.4.1 venvとvirtualenvの違い    2.5 システムレベルでの環境の分離      2.5.1 Vagrantを使った仮想的な開発環境      2.5.2 Dockerを使った仮想環境    2.6 人気のある生産性向上ツール      2.6.1 拡張インタラクティブセッション —— IPython, bpython, ptpythonなど      2.6.2 スクリプトやプログラムにシェルを組み込む      2.6.3 インタラクティブデバッガ    2.7 まとめ 第2部 Python職人の技  第3章 構文ベストプラクティス —— クラス以外    3.1 事前準備    3.2 Pythonの組み込み型      3.2.1 文字列とバイト列      3.2.2 コンテナ    3.3 その他のデータ型とコンテナ      3.3.1 collectionsモジュールの特別なデータコンテナ      3.3.2 enumモジュールのシンボル列挙型    3.4 高度な文法      3.4.1 イテレータ      3.4.2 ジェネレータとyield文      3.4.3 デコレータ      3.4.4 コンテキストマネージャ —— with文    3.5 Pythonの関数型スタイルの機能      3.5.1 関数型プログラミングとは何か?      3.5.2 ラムダ関数      3.5.3 map()、filter()、reduce()      3.5.4 部分オブジェクトとpartial()関数      3.5.5 ジェネレータ式    3.6 関数と変数のアノテーション      3.6.1 一般的な使用方法      3.6.2 mypyによる静的型チェック      3.6.3 型ヒントの現在と未来    3.7 知っておくべきその他の文法      3.7.1 for … else節      3.7.2 キーワードのみの引数      3.7.3 セイウチ(walrus)演算子による代入式    3.8 まとめ  第4章 構文ベストプラクティス —— クラスの世界    4.1 事前準備    4.2 Python言語のプロトコル —— dunderメソッドと属性    4.3 データクラスを利用したボイラープレートの削除    4.4 組み込みクラスのサブクラス化    4.5 MROとスーパークラスからメソッドへのアクセス      4.5.1 Pythonのメソッド解決順序(MRO)を理解する      4.5.2 superの落とし穴      4.5.3 ベストプラクティス    4.6 高度な属性アクセスのパターン      4.6.1 ディスクリプタ      4.6.2 プロパティ      4.6.3 スロット    4.7 まとめ  第5章 メタプログラミングの要素    5.1 事前準備    5.2 メタプログラミングとは何か?      5.2.1 デコレータ —— メタプログラミングの手法      5.2.2 クラスデコレータ      5.2.3 __new__()を使ってインスタンス生成処理をオーバーライドする      5.2.4 メタクラス      5.2.5 コード生成    5.3 まとめ  第6章 良い名前を選ぶ    6.1 事前準備    6.2 PEP 8と命名規則のベストプラクティス      6.2.1 どうして、いつPEP 8に従うのか      6.2.2 PEP 8のその先へ —— チーム固有のスタイルガイドライン    6.3 命名規則のスタイル      6.3.1 変数    6.4 名前付けガイド      6.4.1 ブール値の名前の前にhasかisをつける      6.4.2 コレクションの変数名は複数形にする      6.4.3 辞書型に明示的な名前をつける      6.4.4 汎用性の高い名前や冗長な名前を避ける      6.4.5 既存の名前を避ける    6.5 引数のベストプラクティス      6.5.1 反復型設計を行いながら引数を作成する      6.5.2 引数とテストを信頼する      6.5.3 魔法の引数である*argsと**kwargsは注意して使用する    6.6 クラス名    6.7 モジュール名とパッケージ名    6.8 役に立つツール      6.8.1 Pylint      6.8.2 pycodestyleとflake8    6.9 まとめ  第7章 パッケージを作る    7.1 事前準備    7.2 パッケージ作成      7.2.1 混乱するPythonパッケージングツールの状態      7.2.2 プロジェクトの設定      7.2.3 カスタムセットアップコマンド      7.2.4 開発時にパッケージを利用する    7.3 名前空間パッケージ      7.3.1 なぜこれが便利なのか?    7.4 パッケージのアップロード      7.4.1 PyPI —— Python Package Index      7.4.2 ソースパッケージとビルド済みパッケージ    7.5 スタンドアローン実行形式      7.5.1 スタンドアローンの実行形式が便利な場面      7.5.2 人気のあるツール      7.5.3 実行可能形式のパッケージにおけるPythonコードの難読化    7.6 まとめ  第8章 コードをデプロイする    8.1 事前準備    8.2 The Twelve-Factor App    8.3 デプロイを自動化するいくつかのアプローチ      8.3.1 Fabricを用いたデプロイの自動化    8.4 専用のパッケージインデックスやミラーを用意する      8.4.1 PyPIをミラーリングする      8.4.2 Pythonパッケージに追加リソースをバンドルする    8.5 一般的な慣習とプラクティス      8.5.1 ファイルシステムの階層      8.5.2 環境の分離      8.5.3 プロセス監視ツールを使う      8.5.4 アプリケーションコードはユーザー空間で実行しよう      8.5.5 リバースHTTPプロキシを使う      8.5.6 プロセスのgracefulリロード    8.6 動作の追跡とモニタリング      8.6.1 エラーログ収集 —— Sentry      8.6.2 モニタリングシステムとアプリケーションメトリクス      8.6.3 アプリケーションログの処理      8.6.4 ログを処理するツール    8.7 まとめ  第9章 他言語によるPythonの拡張    9.1 事前準備    9.2 他言語 ≒ C/C++      9.2.1 拡張モジュールをインポートする    9.3 拡張を使う理由      9.3.1 コードのクリティカルな部分の性能を向上する      9.3.2 別の言語で書かれたコードを利用する      9.3.3 サードパーティーの動的ライブラリを利用する      9.3.4 カスタムのデータ構造を作る    9.4 拡張を書く      9.4.1 ピュアC拡張      9.4.2 Cythonを使って拡張を書く    9.5 拡張のデメリット      9.5.1 増加する複雑さ      9.5.2 デバッグ    9.6 拡張を使わずに動的ライブラリを利用する      9.6.1 ctypes      9.6.2 CFFI    9.7 まとめ 第3部 量より質  第10章 コードの管理    10.1 事前準備    10.2 バージョン管理システムを使う      10.2.1 中央集中型システム      10.2.2 分散型システム      10.2.3 中央集中か、分散か?      10.2.4 できればGitを使う      10.2.5 Git FlowとGitHub Flow    10.3 継続的開発プロセスの設定      10.3.1 継続的インテグレーション      10.3.2 継続的デリバリー      10.3.3 継続的デプロイメント      10.3.4 継続的インテグレーションを行うのに人気のあるツール      10.3.5 適切なツール選択とよくある落とし穴    10.4 まとめ  第11章 プロジェクトのドキュメント作成    11.1 事前準備    11.2 技術文書を書くための7つのルール      11.2.1 2つのステップで書く      11.2.2 対象読者を明確にする      11.2.3 シンプルなスタイルを使用する      11.2.4 情報のスコープを絞る      11.2.5 実在するようなコードのサンプルを使用する      11.2.6 なるべく少なく、かつ十分なドキュメント      11.2.7 テンプレートの使用    11.3 ドキュメントをコードのように扱う      11.3.1 Pythonのdocstringを使う      11.3.2 人気のマークアップ言語とドキュメントスタイル    11.4 ドキュメントを自動生成する有名なPythonライブラリ      11.4.1 Sphinx      11.4.2 MkDocs      11.4.3 ドキュメントをCIでビルドする    11.5 Web APIドキュメント      11.5.1 Swagger/OpenAPIによるAPIドキュメントの自動生成    11.6 整理されたドキュメントシステムの構築      11.6.1 ドキュメントポートフォリオの構築    11.7 自分自身のドキュメントポートフォリオを構築する      11.7.1 ドキュメントランドスケープの構築    11.8 まとめ  第12章 テスト駆動開発    12.1 事前準備    12.2 テストをしていない人へ      12.2.1 テスト駆動開発のシンプルな3つのステップ      12.2.2 どのような種類のテストがあるのか?      12.2.3 Pythonの標準テストツール    12.3 テストをしている人へ      12.3.1 ユニットテストの落とし穴      12.3.2 代替のユニットテストフレームワーク      12.3.3 テストカバレッジ      12.3.4 スタブとモック      12.3.5 テスト環境と依存関係の互換性      12.3.6 ドキュメント駆動開発    12.4 まとめ 第4部 最適化  第13章 最適化 —— 一般原則とプロファイリング    13.1 事前準備    13.2 3つのルール      13.2.1 まず、動かす      13.2.2 ユーザー視点で考える      13.2.3 可読性とメンテナンス性を保つ    13.3 最適化戦略      13.3.1 外部の原因を探す      13.3.2 ハードウェアを拡張する      13.3.3 スピードテストを書く    13.4 ボトルネックを見つける      13.4.1 CPU使用量のプロファイル      13.4.2 メモリ使用量のプロファイル      13.4.3 ネットワーク使用量のプロファイル    13.5 まとめ  第14章 最適化 —— テクニック集    14.1 事前準備    14.2 複雑度の定義      14.2.1 循環的複雑度      14.2.2 ビッグオー記法    14.3 正しいデータ構造を選び計算量を減らす      14.3.1 リストからの探索    14.4 collectionsモジュールを使う      14.4.1 deque      14.4.2 namedtuple    14.5 トレードオフを利用する      14.5.1 ヒューリスティックアルゴリズムや近似アルゴリズムを使う      14.5.2 タスクキューを使って遅延処理を行う      14.5.3 確率的デー��構造を利用する    14.6 キャッシュ      14.6.1 決定的キャッシュ      14.6.2 非決定的キャッシュ      14.6.3 キャッシュサーバー    14.7 まとめ  第15章 並行処理    15.1 事前準備    15.2 なぜ並行処理が必要なのか?    15.3 マルチスレッド      15.3.1 マルチスレッドとは?      15.3.2 Pythonはどのようにスレッドを扱うのか?      15.3.3 いつスレッドを使うべきか?    15.4 マルチプロセス      15.4.1 組み込みのmultiprocessingモジュール    15.5 非同期プログラミング      15.5.1 協調的マルチタスクと非同期I/O      15.5.2 Pythonにおけるasyncとawait      15.5.3 非同期プログラミングの実践例      15.5.4 Futureを利用して同期コードを結合する    15.6 まとめ 第5部 技術的アーキテクチャ  第16章 イベント駆動型プログラミング    16.1 事前準備    16.2 イベント駆動型プログラミングとは何か      16.2.1 イベント駆動 != 非同期      16.2.2 GUIにおけるイベント駆動プログラミング      16.2.3 イベント駆動通信    16.3 イベント駆動プログラミングのスタイル      16.3.1 Callback-basedスタイル      16.3.2 Subject-based スタイル      16.3.3 Topic-basedスタイル    16.4 イベント駆動アーキテクチャ      16.4.1 イベントとメッセージキュー    16.5 まとめ  第17章 Pythonのためのデザインパターン    17.1 事前準備    17.2 生成に関するパターン      17.2.1 Singletonパターン    17.3 構造に関するパターン      17.3.1 Adapterパターン      17.3.2 Proxyパターン      17.3.3 Facadeパターン    17.4 振る舞いに関するパターン      17.4.1 Observerパターン      17.4.2 Visitorパターン      17.4.3 Templateパターン    17.5 まとめ 付録A reStructuredText入門  A.1 reStructuredText    A.1.1 セクション構造    A.1.2 箇条書き    A.1.3 インラインマークアップ    A.1.4 リテラルブロック    A.1.5 リンク 付録B 型ヒントの書き方  B.1 変数の型付け  B.2 関数やメソッドの型付け  B.3 ユーザー定義クラスの型付け  B.4 型よりも厳しく、特定の文字列や数値のリテラルのみを許可する  B.5 ジェネリクス    B.5.1 コレクションの種類の使い分け    B.5.2 タプルと他のシーケンスの違い  B.6 合併型(Union Type)/オプショナル  B.7 あらゆる型を受け付けるAny  B.8 キャスト  B.9 関数のオーバーロード 索引
3 notes · View notes
asciidwango · 3 years
Text
A/Bテスト実践ガイド
Tumblr media
経営層からデータサイエンティスト、エンジニアまで全関係者必読の教科書!
Google, Amazon, Microsoft, LinkedInでも実践された信用性の高いコントロール実験の詳細を解説する。優れたA/Bテストによってデータ駆動型の文化を確立し、科学的な意思決定を促進できるようになる。
Ron Kohavi,Diane Tang,Ya Xu  著 大杉直也 訳 定価:3,300円(本体:3,000円) 発売日:2021年3月23日 形態:A5版(304ページ) ISBN:978-4-04-893079-6
Amazonで購入
達人出版会で購入
サポート/追加情報
経営層やリーダー、データサイエンティスト、エンジニア、アナリスト、プロダクトマネージャーなど、企業の全関係者を対象として、その概念から実験を実施するためのプロセス、よくある落とし穴、オンライン実験をスケールさせるために必要なことまで、A/Bテスト、コントロール実験の詳細を解説する。Google, Amazon, Microsoft, LinkedInなどで実際に実践された経験から得られた教訓や落とし穴などがふんだんに盛り込まれており、データ駆動型の文化の確立、科学的な意思決定に必要なスキルを獲得できる。
◆著者プロフィール Ron Kohavi(ロン・コハヴィ) Airbnbのヴァイスプレジデント兼技術フェローである。本書は、Microsoftでコーポレートヴァイスプレジデント兼技術フェローをしていた時期に執筆された。それ以前はAmazonでデータマイニングとパーソナライゼーションのディレクターであった。スタンフォード大学でコンピューターサイエンスの博士号を取得。彼の論文は40,000件以上引用され、そのうち3つはコンピューターサイエンスで最も引用された論文のトップ1,000に入っている。 Diane Tang(ダイアン・タング) 大規模データ分析、インフラストラクチャ、オンラインでのコントロール実験と広告システムの専門知識をもつGoogleのフェローである。彼女はハーバード大学で学士号、スタンフォード大学で修士号と博士号を取得しており、モバイルネットワーキング、情報の可視化、実験方法論、データインフラストラクチャ、データマイニング、大規模データの分野で特許や出版物を保有している。 Ya Xu(ヤ・シュウ) LinkedInでデータサイエンスと実験を担当している。彼女は実験に関する論文をいくつか発表しており、トップカンファレンスや大学で頻繁に講演を行なっている。以前はMicrosoftに勤務し、スタンフォード大学で統計学の博士号を取得している。
◆訳者プロフィール 大杉 直也(おおすぎ なおや) 2005年、千葉大学文学部に飛び入学(高校は中退)。2009年、同大学卒業(文学学士)。同年、奈良先端科学技術大学院大学情報科学科に入学(博士前期課程)。2011年、同大学院修了(理学修士)。同年、東京大学大学院総合文化研究科に入学(博士後期課程)ならびに理化学研究所脳科学総合研究センターで大学院リサーチ・アソシエイトに採用。2014年、同大学院単位取得満期退学ならびに理化学研究所退職。研究テーマは、ニホンザルの脳波のデータマイニング。同年、(株)リクルートホールディングスに入社。2017年、N高等学校に3年次編入(社会人高校生)。2留を経て2020年、同高校卒業。現在は、(株)リクルートで情報検索をテーマにしたエンジニア・データサイエンス組織のマネージャー兼と、HRサーベイGプロダクト『Geppo』(https://www.geppo.jp/)の開発マネージャーを兼任。
◆目次 第I部 すべての人向けの導入的トピック 第1章 導入と動機付け 第2章 実験の実行と分析 ~一連の流れの例~ 第3章 トワイマンの法則と実験の信用性 第4章 実験のプラットフォームと文化 第II部 すべての人を対象にした選択的トピック 第5章 スピードの重要さを示すケーススタディ 第6章 組織を運用するためのメトリクス 第7章 実験のためのメトリクスとOEC 第8章 インスティチューショナルメモリとメタアナリシス 第9章 コントロール実験の倫理 第III部 コントロール実験の補完または代替となる手法 第10章 オンラインでのコントロール実験の補完手法 第11章 観察的因果関係研究 第IV部 【発展的内容】実験のプラットフォームの開発 第12章 クライアントサイドの実験 第13章 計測装置 第14章 ランダム化単位の選択 第15章 実験対象の拡大 ~スピードと品質とリスクのトレードオフ~ 第16章 実験の分析のスケール 第V部 【発展的内容】実験の分析のより深い理解に向けて 第17章 コントロール実験を支える統計学 第18章 分散の推定と分析感度の向上 ~その落とし穴と解決方法~ 第19章 A/Aテスト 第20章 分析感度を向上させるトリガー 第21章 サンプル比率のミスマッチと信用性に関連するガードレールメトリクス 第22章 実験群の間での情報のリークと干渉 第23章 介入効果の長期影響の測定
0 notes
asciidwango · 4 years
Text
UniRx/UniTask完全理解
Tumblr media
UniEx/UniTaskライブラリを学んで、つよつよプログラマになろう!
リアクティブプログラミング、非同期プログラミングをUnityで実現するUniRx/UniTaskライブラリの使い方を徹底的に解説する。Unity C#で高度な開発を行える知識を習得して一歩先を行くプログラマをめざそう。
打田 恭平著 定価:4,320円(本体:4,000円) 発売日:2020年11月6日 形態:B5変型版(496ページ) ISBN:978-4-04-893075-8
Amazonで購入
達人出版会で購入
サポート/追加情報
サンプルコード
UnityにおけるC#プログラミングをある程度習得している人を対象として、UniRx/UniTaskを活用方法を徹底的に解説する。UniRx,UniTaskはともにUnityによる高度な開発を行う場合に必須となるものだ。リアクティブプログラミングの概念をUnityで利用できるようにするライブラリがUniRx、C#の標準機能であるTaskおよびasync/awaitをUnity向けに最適化したライブラリがUniTaskである。本書は、UniRx/UniTaskに関する基礎的な用語、動作原理、各オブジェクトの振る舞いなどをきめ細かく紹介していく。それぞれの特徴を体系的に理解することで、一歩先をいくプログラマとしてのスキルを身につけることができるようになる。
◆著者プロフィール 打田 恭平 幼いころからゲーム開発者を夢見てC#を学習し、「とりすーぷ」名義で同人ゲーム制作活動を行う。Unityにおける効率的なプログラムの設計手法やライブラリの活用方法を研究中。ゲーム制作の経験を活かしてブログ執筆や勉強会主催・登壇を行い、その積極的なコミュニティ活動が評価され2018年にMicrosoft MVP for Developer Technologiesを受賞。以降、継続して受賞中。現在株式会社バーチャルキャスト所属。
◆目次
第I部 UniRx
第1章 概説 1.1 はじめに 1.2 UniRxとは 1.3 UniRxの導入方法 1.4 UniRxの用途 1.5 第1章まとめ
第2章 UniRxの動作原理 2.1 Observableとは何か 2.2 Observableの扱い方 2.3 Observableの性質 2.4 Scheduler
第3章 Observableの作り方 3.1 Subject系 3.2 ReactiveProperty系 3.3 ファクトリメソッド 3.4 Unityイベント関数からの変換 3.5 uGUI のイベントから変換 3.6 コルーチンからの変換 3.7 StateMachineBehaviourから変換 3.8 Taskから変換
第4章 Operator 4.1 マーブルダイアグラムについて 4.2 フィルタリング系Operator 4.3 メッセージ変換系Operator 4.4 メッセージやストリームの合成系Operator 4.5 ストリームの性質自体の変換系Operator 4.6 エラーハンドリング系Operator 4.7 Hot変換用Operator 4.8 Schedulerを切り替えるOperator 4.9 その他のOperator
第5章 その他UniRxの便利な機能 5.1 ObservableLogger 5.2 MessageBroker 5.3 AsyncMessageBroker 5.4 ReactiveCommand 5.5 AsyncReactiveCommand<T> 5.6 ObjectPool 5.7 Model-View-(Reactive)Presenterパターン
第6章 非同期処理とUniRx 6.1 はじめに 6.2 async/awaitとTask 6.3 Observable,async/await,Task 6.4 UniRxが提供するAwaiter 6.5 まとめ
第II部 UniTask
第7章 UniTaskの機能紹介 7.1 UniTaskの導入方法 7.2 UniTaskの機能一覧 7.3 さまざまなオブジェクトのasync/await対応 7.4 UniTaskを生成する方法 7.5 UniTaskTracker 7.6 UniTaskの用途 7.7 非同期処理のキャンセル
第8章 UniTaskライブラリのファクトリメソッド/拡張メソッド紹介 8.1 ファクトリメソッド 8.2 UniTaskで利用可能なメソッド/拡張メソッド紹介
第9章 UniTaskAsyncEnumerable 9.1 UniTaskAsyncEnumerableを利用するためには 9.2 UniTaskAsyncEnumerableの使い方 9.3 UniTaskAsyncEnumerableの生成方法 9.4 LINQ メソッド 9.5 Channel 9.6 AsyncReactiveProperty
第10章 UniRx/UniTaskまとめ
0 notes
asciidwango · 4 years
Text
Clean Agile
Tumblr media
基本に立ち戻れ 小さなことをする、小さなソフトウェアチームが、うまくやっていくために!
Robert C. Martin 著 角 征典、角谷信太郎 訳 定価:2,640円(本体:2,400円) 発売日:2020年10月5日 形態:B5変型版(192ページ) ISBN:978-4-04-893074-1
Amazonで購入する
達人出版会で購入する
サポート/追加情報
◆アジャイルとは、小さなことをしている小さなプログラミングチームの小さな問題を扱う小さなアイデアである。アジャイルとは、大きなことをしている大きなプログラミングチームの大きな問題を扱う大きなアイデアではない。大きなことは大きなチームなんかじゃできない。小さなことをする小さなチームがいくつも集まり、コラボレーションしながら大きなことを成し遂げるのだ。このことを、我々はあらためて認識する必要がある。
◆著者/訳者紹介
■Robert C. Martin(アンクル・ボブ)は、1970 年からプログラマーである。cleancoders.comの共同創業者であり、ソフトウェア開発者向けの学習用動画をオンラインで提供している。また、Uncle Bob Consulting LLC. を設立し、世界中の大企業を対象としたソフトウェアコンサルティング、トレーニング、スキル開発を行っている。シカゴに本拠地を置くコンサルティングファーム8th Light, Inc. では、Master Craftsman を務めていた。さまざまな業界誌に寄稿し、国際的なカンファレンスや展示会でも頻繁に講演している。また、評価の高い教育ビデオシリーズ(cleancoders.com)の作者でもある。以下に挙げる書籍の執筆や編集も手掛けている。● 『Designing Object Oriented C++ Applications Using the Booch Method』● 『Pattern Languages of Program Design 3』● 『More C++ Gems』● 『Extreme Programming in Practice(邦訳:XP エクストリーム・プログラミング実践記――開発現場からのレポート)』● 『Agile Software Development(邦訳:アジャイルソフトウェア開発の奥義)』● 『UML for Java Programmers(邦訳:Java プログラマのためのUML)』● 『Clean Code(邦訳:Clean Code――アジャイルソフトウェア達人の技)』● 『The Clean Coder(邦訳:Clean Coder――プロフェッショナルプログラマへの道)』● 『Clean Architecture(邦訳:Clean Architecture――達人に学ぶソフトウェアの構造と設計)』 ソフトウェア開発の業界のリーダーとして、「C++ Report」の編集長を3 年間務め、AgileAlliance の初代委員長でもあった。
■角 征典(かどまさのり) ワイクル株式会社代表取締役。東京工業大学環境・社会理工学院特任講師。アジャイル開発やリーンスタートアップに関する書籍の翻訳を数多く担当し、それらの手法のコンサルティングに従事。主な訳書に『リーダブルコード』『Running Lean』『Team Geek』(オライリー・ジャパン)、『エクストリームプログラミング』『アジャイルレトロスペクティブズ』(オーム社)、『CleanCoder』『Clean Architecture』(アスキードワンゴ)、共著書に『エンジニアのためのデザイン思考入門』(翔泳社)がある。
■角谷信太郎(かくたにしんたろう)個人事業主。一般社団法人日本Ruby の会理事。エクストリームプログラミングの理念である「新たな社会構造」のために自分がやれることをやっている。主な共訳・監訳書に『なるほどUnix プロセス』(達人出版会)、『Ruby のしくみ』『アジャイルサムライ』(オーム社)、『アジャイルな見積りと計画づくり』(マイナビ出版)がある。
◆目次
推薦の言葉 序文 はじめに 謝辞 著者について 第1章 アジャイル入門  アジャイルの歴史  スノーバード  アジャイルの概要  サークルオブライフ  結論 第2章 アジャイルにする理由  プロフェッショナリズム  まっとうな期待  権利章典  結論 第3章 ビジネスプラクティス  計画ゲーム  小さなリリース  受け入れテスト  チーム全体  結論 第4章 チームプラクティス  メタファー  持続可能なペース  共同所有  継続的インテグレーション  スタンドアップミーティング  結論 第5章 テクニカルプラクティス  テスト駆動開発  リファクタリング  シンプルな設計  ペアプログラミング  結論 第6章 アジャイルになる  アジャイルの価値基準  動物のサーカス  トランスフォーメーション  コーチング  認定資格  大規模アジャイル  アジャイルのツール  コーチング(もうひとつの視点)  結論(再びボブから) 第7章 クラフトマンシップ  アジャイルの二日酔い  期待の不一致  開発者のアジャイル離れ  ソフトウェアクラフトマンシップ  イデオロギーとメソドロジー  ソフトウェアクラフトマンシップにプラクティスはあるか?  プラクティスではなく価値にフォーカスする  プラクティスの議論  クラフトマンシップが個人にもたらすインパクト  クラフトマンシップが業界にもたらすインパクト  クラフトマンシップが企業にもたらすインパクト  クラフトマンシップとアジャイル  結論 結論 あとがき 訳者あとがき  アジャイルが死んだ時代  基本に立ち戻る  幼年期の終わり 訳者について 索引
2 notes · View notes
asciidwango · 4 years
Text
JavaScript Primer
Tumblr media
迷わないための入門書 変化に対応できる基礎を身につけよう!
azu、Suguru Inatomi 著 定価:4,180円(本体:3,800円) 発売日:2020年4月27日 形態:B5変型版(472ページ) ISBN:978-4-04-893073-4
Amazonで購入する
達人出版会で購入する
サポート/追加情報
◆本書の「第1部 基本文法」では、JavaScriptの文法と機能について、実際の利用方法を示しながら解説しています。また「第2部 ユースケース」では、小さなアプリケーションを例にあげながら、JavaScriptの現実の開発での使い方にも言及しています。 本書は、プログラミング言語のリファレンスのようにJavaScriptのすべての機能を解説してはいません。ECMAScript 2015以降の新しい書き方を中心に、既存のコードに頻出する古い書き方を含めて解説しています。 JavaScriptは激しく変化している言語です。このような変化に対応できる基礎を身に付けられるよう、単に書き方を解説するのではなく、プログラミングの現場で直面する問題を自分自身で解決するのに必要な調査方法についても焦点を当てています。
◆著者紹介
■azu(あず) ISO/IEC JTC 1/SC 22/ECMAScript Ad Hoc 委員会エキスパートでECMAScript、JSON の仕様に関わる。2011 年にJSer.info を立ち上げ、継続的にJavaScript の情報を発信している。ライフワークとしてOSS へのコントリビューションをしている。
■Suguru Inatomi(すぐる いなとみ) 長崎生まれ福岡育ち。2016 年よりAngular 日本ユーザー会の代表を務める。2018 年に日本で一人目のGoogle Developers Expert for Angular に認定される。日々の仕事の傍ら、Angular をはじめとするOSS へのコントリビューションや翻訳、登壇、イベントの主催などの活動を続けている。
◆目次
はじめに 著者紹介 第1部 基本文法 第1章 JavaScriptとは  1.1 JavaScriptとECMAScript  1.2 JavaScriptってどのような言語? 第2章 コメント  2.1 一行コメント  2.2 複数行コメント  2.3 HTML-likeコメント  2.4 まとめ 第3章 変数と宣言  3.1 const  3.2 let  3.3 var  3.4 変数名に使える名前のルール  3.5 まとめ 第4章 値の評価と表示  4.1 この書籍で利用するブラウザ  4.2 ブラウザでJavaScriptを実行する  4.3 Console API  4.4 ウェブ版の書籍でコードを実行する  4.5 コードの評価とエラー  4.6 まとめ 第5章 データ型とリテラル  5.1 データ型  5.2 リテラル  5.3 プリミティブ型とオブジェクト  5.4 まとめ 第6章 演算子  6.1 二項演算子  6.2 単項演算子(算術)  6.3 比較演算子  6.4 ビット演算子  6.5 代入演算子(=)  6.6 条件(三項)演算子(?と:)  6.7 論理演算子  6.8 カンマ演算子(,)  6.9 まとめ 第7章 暗黙的な型変換  7.1 暗黙的な型変換とは  7.2 明示的な型変換  7.3 明示的な変換でも解決しないこと  7.4 まとめ 第8章 関数と宣言  8.1 関数宣言  8.2 関数の引数  8.3 可変長引数  8.4 関数の引数と分割代入  8.5 関数はオブジェクト  8.6 メソッド  8.7 まとめ 第9章 文と式  9.1 式  9.2 文  9.3 function宣言(文)とfunction式  9.4 まとめ 第10章 条件分岐  10.1 if文  10.2 switch文  10.3 まとめ 第11章 ループと反復処理  11.1 while文  11.2 do-while文  11.3 for文  11.4 配列のforEachメソッド  11.5 break文  11.6 continue文  11.7 for...in文  11.8 for...of文  11.9 まとめ 第12章 オブジェクト  12.1 オブジェクトを作成する  12.2 プロパティへのアクセス  12.3 オブジェクトと分割代入  12.4 プロパティの追加  12.5 プロパティの存在を確認する  12.6 toStringメソッド  12.7 オブジェクトの静的メソッド  12.8 まとめ 第13章 プロトタイプオブジェクト  13.1 Objectはすべての元  13.2 プロトタイプメソッドとインスタンスメソッドの優先順位  13.3 in演算子とObject#hasOwnPropertyメソッドの違い  13.4 オブジェクトの継承元を明示するObject.createメソッド  13.5 ArrayもObjectを継承している  13.6 まとめ 第14章 配列  14.1 配列の作成とアクセス  14.2 オブジェクトが配列かどうかを判定する  14.3 配列と分割代入  14.4 配列から要素を検索  14.5 追加と削除  14.6 配列同士を結合  14.7 配列の展開  14.8 配列をフラット化  14.9 配列から要素を削除  14.10 破壊的なメソッドと非破壊的なメソッド  14.11 配列を反復処理するメソッド  14.12 メソッドチェーンと高階関数  14.13 まとめ 第15章 文字列  15.1 文字列を作成する  15.2 エスケープシーケンス  15.3 文字列を結合する  15.4 文字へのアクセス  15.5 文字列とは  15.6 文字列の分解と結合  15.7 文字列の長さ  15.8 文字列の比較  15.9 文字列の一部を取得  15.10 文字列の検索  15.11 正規表現オブジェクト  15.12 文字列の置換/削除  15.13 文字列の組み立て  15.14 まとめ 第16章 文字列とUnicode  16.1 Code Point  16.2 Code PointとCode Unitの違い  16.3 サロゲートペア  16.4 Code Pointを扱う  16.5 まとめ 第17章 ラッパーオブジェクト  17.1 プリミティブ型とラッパーオブジェクト  17.2 プリミティブ型の値からラッパーオブジェクトへの自動変換  17.3 まとめ 第18章 関数とスコープ  18.1 スコープとは  18.2 ブロックスコープ  18.3 スコープチェーン  18.4 グローバルスコープ  18.5 関数スコープとvarの巻き上げ  18.6 関数宣言と巻き上げ  18.7 クロージャー  18.8 メモリ管理の仕組み  18.9 まとめ 第19章 関数とthis  19.1 実行コンテキストとthis  19.2 関数とメソッドにおけるthis  19.3 Arrow Function以外の関数におけるthis  19.4 thisが問題となるパターン  19.5 Arrow Functionとthis  19.6 まとめ 第20章 クラス  20.1 クラスの定義  20.2 クラスのインスタンス化  20.3 クラスのプロトタイプメソッドの定義  20.4 クラスのアクセッサプロパティの定義  20.5 静的メソッド  20.6 2種類のインスタンスメソッドの定義  20.7 プロトタイプオブジェクト  20.8 プロトタイプチェーン  20.9 継承  20.10 ビルトインオブジェクトの継承  20.11 まとめ 第21章 例外処理  21.1 try...catch構文  21.2 throw文  21.3 エラーオブジェクト  21.4 エラーとデバッグ  21.5 console.errorとスタックトレース  21.6 まとめ 第22章 非同期処理: コールバック /Promise/Async Function  22.1 同期処理  22.2 非同期処理  22.3 非同期処理はメインスレッドで実行される  22.4 非同期処理と例外処理  22.5 エラーファーストコールバック  22.6 Promise  22.7 Async Function  22.8 Async Functionと組み合わせ  22.9 まとめ 第23章 Map/Set  23.1 Map  23.2 Set  23.3 まとめ 第24章 JSON  24.1 JSONとは  24.2 JSONオブジェクト  24.3 JSONにシリアライズできないオブジェクト  24.4 toJSONメソッドを使ったシリアライズ  24.5 まとめ 第25章 Date  25.1 Dateオブジェクト  25.2 現実のユースケースとDate  25.3 まとめ 第26章 Math  26.1 Mathオブジェクト  26.2 乱数を生成する  26.3 数値の大小を比較する  26.4 数値を整数にする  26.5 まとめ 第27章 ECMAScriptモジュール  27.1 ECMAScriptモジュールの構文  27.2 ECMAScriptモジュールを実行する 第28章 ECMAScript  28.1 ECMAScriptのバージョンの歴史  28.2 Living StandardとなるECMAScript  28.3 仕様策定のプロセス  28.4 プロポーザルの機能を試す  28.5 仕様や策定プロセスを知る意味  28.6 まとめ 第1部のおわりに 第2部 ユースケース 第29章 アプリケーション開発の準備  29.1 Node.jsのインストール  29.2 npxコマンドによるnpmパッケージの実行  29.3 ローカルサーバーのセットアップ  29.4 まとめ 第30章 ユースケース: Ajax通信  30.1 エントリーポイント  30.2 HTTP通信  30.3 データを表示する  30.4 Promiseを活用する 第31章 ユースケース: Node.jsでCLIアプリケーション  31.1 Node.jsでHello World  31.2 コマンドライン引数を処理する  31.3 ファイルを読み込む  31.4 MarkdownをHTMLに変換する  31.5 ユニットテストを記述する  31.6 まとめ 第32章 ユースケース: Todoアプリケーション  32.1 エントリーポイント  32.2 アプリの構成要素  32.3 Todoアイテムの追加を実装する  32.4 イベントとモデル  32.5 Todoアイテムの更新と削除を実装する  32.6 Todoアプリのリファクタリング  32.7 Todoアプリのまとめ 付録A 参考リンク集  A.1 開発を補助するツール  A.2 JavaScriptの実行プラットフォーム 索引
4 notes · View notes
asciidwango · 5 years
Text
Xinuオペレーティングシステムデザイン 改訂2版
Tumblr media
オペレーティングシステムの仕組みを知ろう
オペレーティングシステム「Xinu」の設計から実装までを丁寧に解説する。メモリ管理,プロセス間通信,デバイスドライバ,ネットワークプロトコルなど,典型的なコンポーネントの原理を体系立てて理解できる。
Douglas Comer 著
神林 靖 訳
定価: 本体6,000円 (税別)
発売日:2020年2月21日
形態:B5変形(634ページ)
ISBN:978-4-04-893072-7
Amazonで購入
サポート/追加情報
◆小規模だが本格的なオペレーティングシステムをエレガントに実装しよう
小規模な組込みOSとしての利用実績も豊富なオペレーティングシステム「Xinu」。本書は,カーネルの機能を最小限に抑えるマイクロカーネルの構造を理解するとともに,その設計から実装までを丁寧に解説していく。ハードウェアをコアにおいて,メモリ管理,プロセス管理,プロセス間通信,デバイスマネージャ,ネットワークプトロコル,ファイルシステム,ユーザーインタフェースに到るまで,オペレーティングシステムとしての基本的な機能をすべて実装していく。IntelのGalileo,ARMのBeagleBone Blackをターゲットとしており,どのように実装されているかを自ら確かめることも可能である。大学学部生,大学院生に向けた教科書としても最良の1冊となっている。
著者プロフィール:
Douglas Comer(ダグラス・カマー)
パデュー大学計算機学科特別名誉教授。コンピュータネットワーク,TCP/IPプロトコル,インターネット,オペレーティングシステム設計のエキスパートとして国際的に知られる。『TCP/IP によるネットワーク構築』の3冊シリーズは,コンピュータネットワークおよびネットワーク教育に革命的な変化をもたらした。
訳者プロフィール:
神林 靖(かんばやし やすし)
日本工業大学情報工学科准教授。慶應義塾大学経済学部,早稲田大学商学部,法政大学経営学部講師。三菱総合研究所研究員を経て2001年より現職。計算理論と分散システム,そして政治科学に興味をもつ。
◆目次
第1章 はじめに 第2章 並行実行とオペレーティングシステム ���3章 ハードウェアと実行時環境 第4章 リストとキュー 第5章 スケジューリングとコンテキストスイッチ 第6章 プロセス管理 第7章 並行プロセスの協調 第8章 メッセージパッシング 第9章 基本メモリ管理 第10章 高レベルメモリ管理と仮想メモリ 第11章 高レベルメッセージパッシング 第12章 割込み処理 第13章 リアルタイムクロック管理 第14章 デバイス独立の入力と出力 第15章 デバイスドライバの例 第16章 DMA デバイスとドライバ(イーサネット) 第17章 インターネットプロトコルスタック 第18章 リモートディスクドライバ 第19章 ファイルシステム 第20章 リモートファイル機構 第21章 構文的名前空間 第22章 システムの初期化 第23章 サブシステムの初期化とメモリマーキング 第24章 例外処理 第25章 システム構成 第26章 ユーザーインタフェースの例:Xinuシェル 付録A オペレーティングシステムの移植 付録B Xinu設計ノート
1 note · View note
asciidwango · 5 years
Text
江添亮のC++入門
Tumblr media
C++エバンジェリストによるC++入門の決定版
プログラミング経験者を対象としたプログラミング言語C++の入門書。複雑な機能を混乱することなく理解できるように構成されており、丁寧に読み込んでいけば、C++のポテンシャルを最大限に引き出せるようになる。
江添亮 著
定価: 本体5,000円 (税別)
発売日:2019年9月20日
形態:B5変形(704ページ)
ISBN:978-4-04-893071-0
Amazonで購入
サポート/追加情報
◆最新規格に準拠したC++プログラムの書き方の王道を極める
効率性を柔軟性を兼ね備えたプログラミング言語として進化を続けるC++。本書は、次の規格として標準化が進められているC++20を意識しながら、現行の規格に準拠したC++プログラムの書き方を徹底的に解説していく。プログラミング経験者を主要な対象としているが、解説を進めるに当たっては、その時点で学習した知識だけを利用して新しい知識を学ぶ方法(知識のブートストラップ)が意識されており、プログラミング初心者であっても新しい機能、知識の理解を無理なく行えるようになっている。C++の実行、デバッグ、基本的な文法、アルゴリズム、オブジェクト指向、テンプレート、メモリ管理、乱数など、C++による本格的なプログラム開発に必須の知識を網羅した本格的な入門書である。
著者プロフィール:
江添 亮(えぞえ りょう) Mail: [email protected] Blog: http://cpplover.blogspot.jp/ GitHub: https://github.com/EzoeRyou/ 2010年 C++標準化委員会 エキスパートメンバー 2014年 株式会社ドワンゴ入社 2015年 C++標準化委員会 委員
◆目次
第1章 C++の概要 第2章 C++の実行 第3章 C++ヒッチハイクガイド 第4章 デバッグ:コンパイルエラーメッセージの読み方 第5章 条件分岐の果てのレストラン 第6章 デバッグ:コンパイル警告メッセージ 第7章 最近体重が気になるあなたのための標準入力 第8章 ループ 第9章 メモリーを無限に確保する 第10章 デバッグ:printfデバッグ 第11章 整数 第12章 浮動小数点数 第13章 名前 第14章 イテレーターの基礎 第15章 lvalueリファレンスとconst 第16章 アルゴリズム 第17章 ラムダ式 第18章 クラスの基本 第19章 より自然に振る舞うクラス 第20章 std::array 第21章 プログラマーの三大美徳 第22章 配列 第23章 テンプレート 第24章 arrayをさらに実装 第25章 arrayのイテレーター 第26章 傲慢なエラー処理:例外 第27章 ポインター 第28章 イテレーター詳細 第29章 動的メモリー確保 第30章 vectorの実装:基礎 第31章 vectorの実装:メモリー確保 第32章 コピー 第33章 ムーブ 第34章 rvalueリファレンス 第35章 ムーブの実装 第36章 スマートポインター 第37章 自作の数値クラスで演算をムーブに対応する方法 第38章 文字列 第39章 乱数 第40章 Cプリプロセッサー 第41章 分割コンパイル 第42章 デバッガー
1 note · View note
asciidwango · 5 years
Text
フルスクラッチから1日でCMSを作る シェルスクリプト高速開発手法入門 改訂2版
Tumblr media
シェル芸を更に極めよ!
シェルスクリプトでここまでやれる! 超実践的な入門書、ついに改訂!
USP研究所 監修 上田隆一、後藤大地 著 定価:3,024円(本体:2,800円) 発売日:2019年6月28日 形態:B5変型版(304ページ) ISBN:978-4-04-893069-7
Amazonで購入する
達人出版会で電子書籍を購入する
サポート/追加情報
◆本書ではUNIXのシェルスクリプトを用いて、実用的なWebアプリケーションを短時間に開発する手法を解説します。改訂2版では、Git、Pandoc、Bootstrapなども活用して、より実践的な内容になっています。RDBMSを不要にする、シェルスクリプトの真の力をご覧ください。
◆著者/訳者紹介
■上田隆一(うえだりゅういち) 千葉工業大学先進工学部未来ロボティクス学科准教授 1978 年2 月16 日生。富山県小矢部市出身。 ロボット工学の研究者として2004 年から助手、2008 年に助教として東京大学大学院工学系研究科精密機械工学専攻に勤務。学部4 年時から自律ロボットの国際サッカー大会ロボカップに参戦。ロボットのための画像処理や推論・行動決定アルゴリズムの研究や実装を行う。また、教科書Probabilistic ROBOTICS の翻訳等の業績を残す。2009 年に有限会社ユニバーサル・シェル・プログラミング研究所に入社。企業システムの構築や社外教育プログラムの作成、講師を担当しながら商業誌での執筆活動を開始する。2013 年8 月より産業技術大学院大学産業技術研究科情報アーキテクチャ専攻助教、2015 年9 月より現職。ロボットに関する研究、プログラミング関連の著述など分野をまたいだ活動を行っている。本業の傍ら、隔月で「シェル芸勉強会」を開催しており、シェル芸界隈の人々と共に、主にTwitter 上でシェルワンライナーの限界への挑戦を日々続けている。 博士(工学)。https://b.ueda.tech
■後藤大地(ごとうだいち) オングス代表取締役/BSD コンサルティング取締役/FreeBSD committer 企業システムの要件定義、設計、開発、運用、保守からIT 系ニュースの執筆、IT 系雑誌や書籍の企画立案から執筆まで幅広く手がける。高いセキュリティが求められるネットワークシステムの構築、高い可用性が求められる企業システムの構築、アプライアンス向けのカスタマイズカーネルの開発から業務に特化したディストリビューションの構築、専用の組み込みデバイスの開発、ハードウェアとソフトウェアの双方の開発、システムの自動デプロイシステムの構築、ビッグデータの処理や研究開発におけるシステム開発まで、∗BSD/Linux技術をフル活用した企業ユースのシステムを高いレベルで提供。
◆目次
第2版に寄せて 謝辞 第1章 はじめに  1.1 初版のきっかけ  1.2 bashCMS  1.3 自作をすべきかどうか  1.4 第2版:ウェブ上のリソースでさらなるレバレッジを  1.5 本書の読み方と使い方  1.6 補足 第2章 環境の準備  2.1 サーバの準備  2.2 SSH接続の確認  2.3 セキュリティーのための設定  2.4 日本語化  2.5 コマンドまわりの整備と確認  2.6 ウェブサーバのセットアップ  2.7 Git/GitHubの設定  2.8 補足 第3章 文章管理の仕組みを作る  3.1 記事データの置き方の検討  3.2 記事リポジトリを作る  3.3 サーバからGitHubの記事リポジトリを取得  3.4 まとめと補足 第4章 メインのCGIスクリプトの実装とバックエンド処理  4.1 ミニマムなCGIスクリプト  4.2 記事の表示  4.3 ログを記録する  4.4 ページ選択機能をつける  4.5 リンクの書き換えやHTMLの埋め込みへの対応と確認  4.6 時刻に関する情報の付加  4.7 記事の削除処理  4.8 前後の日記記事に移動できるようにする  4.9 URLの省略への対応  4.10 ページビューカウンタをつける  4.11 まとめ 第5章 補助のCGIスクリプトの実装とバックエンド処理  5.1 体裁を整える  5.2 最近の記事一覧を表示する  5.3 キーワード検索機能をつける  5.4 全文検索機能をつける  5.5 人気記事のリスト表示  5.6 まとめと補足 第6章 処理時間の計測と改善  6.1 ダミーデータの作成  6.2 データディレクトリへのセットと処理速度の評価  6.3 同期スクリプトの計算時間の短縮  6.4 フロントエンドの処理能力  6.5 検索の性能  6.6 まとめと補足 第7章 Bootstrapの利用  7.1 Bootstrap  7.2 テンプレートの作成  7.3 YAMLファイルからのメニューの読み込みと表示  7.4 ソーシャルリンクを貼る  7.5 記事に対するソーシャルボタンの設置  7.6 ページとURLの整合性をとる  7.7 シンタックスハイライトを導入する  7.8 まとめと補足 第8章 シェル芸でログの集計  8.1 準備  8.2 ログの観察  8.3 日付の変換  8.4 データをキーバリュー形式のファイルに分ける  8.5 主要な指標を端末で取得  8.6 各種指標の抽出  8.7 もっと凝った出力を作る  8.8 まとめと補足 第9章おわりに 付録A 初版のプロローグ 付録B コマンドに関する補足 付録C bashに関する補足 付録D シェルスクリプトによるウェブプログラミングに関する補足 付録E WordPress(MySQL)からのサイトの引っ越し 参考文献
4 notes · View notes