SSブログ

電子版『Go言語100Tips』 [本]

8月18日に発売される『Go言語100Tips』ですが、以下の電子版も発売されます。

Kindle版

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

  • 出版社/メーカー: インプレス
  • 発売日: 2023/08/18
  • メディア: 単行本(ソフトカバー)

Kindle版は固定レイアウトだと思います。

PDF版

出版社のサイトからソーシャルDRM版のPDF版を購入できるようになります。
https://book.impress.co.jp/books/1122101133

コメント(0) 

実践API設計 [API仕様を書く]

WEB+DB PRESS Vol.134

WEB+DB PRESS Vol.134

  • 出版社/メーカー: 技術評論社
  • 発売日: 2023/04/22
  • メディア: Kindle版

4月に発売された「WEB+DB PRESS Vol.134」で特集1「実践API設計」を執筆していますが、そこから部分的に紹介します(目次は、こちらです)。

第1章「優れたAPI仕様とは何か --- よくある問題と記述すべき事柄」の冒頭で次のように述べています。
 今日、多くの企業がWeb サービスとしてさまざまなサービスを提供しています。Webサービスは、iOS、Android、ブラウザといったフロントエンドと、それらに対して機能を提供するバックエンドサービスから構成されます。バックエンドサービスが提供するさまざまな機能はAPI (Application Programming Interface)として定義され、フロントエンドから呼び出されます。フロントエンドは、バックエンドサービスが提供する機能を使ってユーザーへ提供する機能を実現します。
 定義されたAPI を介することで、フロントエンドとバックエンドサービスが、独立して、異なるプログラミング言語で開発できます。その結果、バックエンドサービスの開発チームは、定義されたAPI どおりにバックエンドサービスが正しく動作することを保証する責任を負います。つまり、API 定義に従って正しく動作することを、フロントエンドを接続することなく、自動テストで確認することが求められます。
 Web サービス開発の中で意外と難しいのが、バックエンドサービスのAPI を設計し、そのAPI 仕様を記述し、そしてテストファーストによるテスト駆動開発を行うことです。この特集では、それらが何を意味し、開発者にとって日々の活動で何をしなければならないかを解説します。

(太字で青にしている部分は、このブログで強調するためのものです)

長年、デジタル複合機を中心とした組込システムの開発に従事してきましたが、リコーを退職した後、2017年9月から、ウェブサービス(バックエンド)の開発に従事してきました。

当初から驚いたのが、バックエンドのサービスのAPIは定義するが、そのAPIで定義したエンドポイントを直接呼び出してサービスの機能を確認テストを書くことがほとんどないことです。つまり、さまざまなモジュールの単体テストはあるのですが、すべてを結合して一つの実行バイナリにして、APIで定義されたエンドポイントを外部から呼び出すテストコードがないことです。

この6年間で見られた問題点の多くは、「API仕様でよくある問題点」で次のように述べています。
 筆者はこれまで、Web サービス開発だけでなく、組込みシステムを含むさまざまなソフトウェア開発に従事してきました。それらの開発を通してAPI 仕様のさまざまな問題を目にしてきましたが、主なものとしては次の3つが挙げられます。
  • API仕様が書かれていない
  • エラーの記述がない
  • 自動テストが存在しない
 この結果、開発現場でよく起こるのは次のようなことです。
  • 正確な仕様は、実装コードを読まないとわからない
  • どのような場合にどのようなエラーが返ってくるかは、実装コードを読まないとわからない
  • 自動テストがないため、API がどのように振る舞うのかを簡単に知る方法がない
 これらの3つの問題をもう少し詳しく見ていきます。

記事では、これらの問題点をさらに詳しく説明しています。

ここでの問題点は、この6年間で働いてきたソラミツ、メルペイ、カウシェの3社で入社した当初に、私が目にしたバックエンドのサービス開発のほぼすべて(ただし、メルペイで私が最初に担当したマイクロサービスを除く)で目にしてきたものです。

その都度、この特集記事で述べたことを実践して改善していきました。改善は、単に私一人が行うものではなく、同じチームのメンバーが上記の問題を起こさないように開発を行ってくれるように、意識も行動も変わってくるようにするというものです。結果として、上記の問題を残さないようにする開発組織へと変わっています。

3社での経験から、おそらく多くの企業でこの問題は見られるのではないかと思っています。

関連記事:「伸ばすのが難しい能力

(2023年8月15日追記:下記は、『WEB+DB PRESS, Vol.134』のp.12より引用)

API仕様が書かれていない

 API 仕様が書かれていないというのは、次のような状況を指します。
Java などの言語で書かれている公開API を構成するクラスやメソッドに、標準のJavadoc形式があるにもかかわらず何も書かれていない。
 これを、通信方式としてGoogle が開発しているgRPCを使っているバックエンドサービスに当てはめてみます。gRPCでは.protoファイルにprotobufsと呼ばれるAPI の定義を記述しますが、そのファイルの内容が次のような状況になります。
単にサービスのエンドポイント(rpc)の定義やメッセージ構造体の定義が書かれているだけで、説明がほとんど書かれていない。

コメント(0) 

Kindle版『プログラマー”まだまだ”現役続行』 [プログラマー現役続行]

2010年9月4日に発売された『プログラマー”まだまだ”現役続行』ですが、8月1日よりKindle版がリリースされます。

プログラマー”まだまだ”現役続行 (技評SE選書)

プログラマー”まだまだ”現役続行 (技評SE選書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2010/09/04
  • メディア: 単行本(ソフトカバー)

目次は次の通りです。
第1章 ソフトウェアは「人」が作る
第2章 プログラマー現役続行
第3章 論理思考力:現役続行に必要な七つの力(1)
第4章 読みやすいコードを書く力:現役続行に必要な七つの力(2)
第5章 コンピュータサイエンスの基礎力:現役続行に必要な七つの力(3)
第6章 継続学習力:現役続行に必要な七つの力(4)
第7章 朝型力:現役続行に必要な七つの力(5)
第8章 コミュニケーション力:現役続行に必要な七つの力(6)
第9章 英語力:現役続行に必要な七つの力(7)
第10章 コードレビューのすすめ
第11章 若い人たちへ
第12章 30代,40代の人たちへ

コメント(0) 

翻訳作業終了しました:『Go言語100Tips』 [Go言語100Tips]

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

  • 出版社/メーカー: インプレス
  • 発売日: 2023/08/18
  • メディア: 単行本(ソフトカバー)

今回は、ギリギリまで出版社と校正作業を行い、印刷所への入稿も終わって、翻訳作業が終了しました。予定通り8月18日に発売されます。

2022年10月16日から翻訳に着手し、2023年7月24日に終わったので、約9か月を要したことになります。費やした時間は、ほぼ464時間です。途中、雑誌「WEB+DB PRESS, Vol.134」の特集記事(特集1の「実践API設計」)の執筆(85時間)が入ったので、その分、遅くなりました。

8月26日(土)(13:00〜17:00)から、一月に1回の開催で、横浜Go読書会でオンライン読書会を開催します。

https://yokohama-go-reading.connpass.com/event/284134/
コメント(0) 

Kindle版『ソフトウェア開発の名著を読む【第二版】』 [本]

出版社から連絡がなかったので、気付いていなかったのですが、『ソフトウェア開発の名著を読む【第二版】』がKindle版としてAmazonで購入できるようになりました。

ソフトウェア開発の名著を読む 【第二版】 (技評SE選書)

ソフトウェア開発の名著を読む 【第二版】 (技評SE選書)

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2009/10/21
  • メディア: 単行本(ソフトカバー)

紹介している書籍は、以下の通りです。
  • 『プログラミングの心理学』ジェラルド・M・ワインバーグ
  • 『人月の神話』フレデリック・P・ブルックス,Jr.
  • 『ピープルウエア』トム・デマルコ/ティモシー・リスター
  • 『デッドライン』トム・デマルコ
  • 『ソフトウェア職人気質』ピート・マクブリーン
  • 『達人プログラマー』アンドリュー・ハント/デビッド・トーマス
  • 『コードコンプリート』スティーブ・マコネル
  • 『プログラミング作法』ブライアン・W・カーニハン/ロブ・パイク
  • 『リファクタリング』マーチン・ファウラー
  • 『ビューティフルコード』ブライアン・カーニハン他

出版社に確認したところ、『プログラマー"まだまだ"現役続行』もKindle版での提供を予定しているそうです。
コメント(0) 

急性心筋梗塞から3年が過ぎました [心筋梗塞]

2020年6月20日(土)の夕方に急性心筋梗塞で緊急搬送されてから3年が過ぎました。発症から今日までの経過は、こちらからまとめて読むことができます。

この一年は、毎月かかりつけ医へ行って、薬を処方してもらい、とくに心臓関連で昭和大学藤が丘病院へ行くことはありませんでした。心臓リハビリテーションとしては、基本的に自宅でのエアロバイクを続けています。心筋梗塞になる前の生活との違いは、やはり、毎日薬を飲む必要があることです。冠動脈に3個のステントを留置しているため、いわゆる「血液をサラサラにする」薬であるバイアスピリンを含む複数の薬を飲んでいます。

この一年間を簡単に振り返ると、次の通りです。

仕事

仕事は、心筋梗塞になる前の2020年2月から自宅からのリモートワークです。2022年9月末に4年3か月働いたメルペイを退職して、10月からカウシェで働いています。仕事の内容としては、引き続きウェブサービス開発のバックエンドをGo言語で開発しています。

メルペイやカウシェで私が実践してきたバックエンドの開発方法を、雑誌の記事としてまとめることもできました(特集1の「実践API設計」です)。

WEB+DB PRESS Vol.134

WEB+DB PRESS Vol.134

  • 出版社/メーカー: 技術評論社
  • 発売日: 2023/04/22
  • メディア: Kindle版

技術書の翻訳

技術書の翻訳としては、2022年10月から着手した本が、夏には出版されます(発売日は多少遅れるかもしれません)。

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

  • 出版社/メーカー: インプレス
  • 発売日: 2023/08/18
  • メディア: 単行本(ソフトカバー)

技術教育・オンライン読書会

技術教育としては、第6期「Effective Java 第3版」研修をリクルート社向けにオンランで行いました。

オンライン読書会も以下の3つを行ってきました。

講演

Developer eXperience Day 2023で、「45年の歴史から振り返る、ソフトウェア開発とキャリアの変遷」と題して、話をしました。

今後

次の一年も複業を続けながら、「健康がすべて」ということでソフトウェア開発を続けていきたいと思っています。


コメント(0) 

予約受付中:『Go 言語 100Tips』 [本]

私にとって21冊目となる技術書の翻訳本の予約受付が、Amazon.co.jpで行えるようになりました。

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

Go言語 100Tips ありがちなミスを把握し、実装を最適化する (impress top gear)

  • 出版社/メーカー: インプレス
  • 発売日: 2023/08/18
  • メディア: 単行本(ソフトカバー)

以下は、本書からの引用です。
推薦の言葉

Go 開発者が製品環境でコードに触れる前に必ず読むべき本です。『Effective Java』に相当するGoの本です。
— Neeraj Shah, Nutanix

わかりやすく、効果的な例題。間違いがなぜどのように起こるのかを理解することで、コスト的に高くつく手痛い失敗を避けられます。
— Giuseppe Maxia, VMware

Teiva Harsanyi は、実際に起こった問題や見逃しがちな問題を分類し、なぜそれらが起こるのかという微妙な違いがある世界まで掘り下げています。あなたが本書を持っていないのは、101個目の間違いとなるでしょう。
— Anupam Sengupta, Red Hat

悪い習慣を見極めて、よい習慣を身に付けてください。文章は魅力的で、例題は適切であり、洞察は見事です。
— Thad Meyer, LI-COR Biosciences


目次

第 1 章「Go:学習は容易、習得は難しい」
第 2 章「コードとプロジェクト構成」
第 3 章「データ型」
第 4 章「制御構造」
第 5 章「文字列」
第 6 章「関数とメソッド」
第 7 章「エラー管理」
第 8 章「並行処理:基本」
第 9 章「並行処理:実践」
第 10 章「標準ライブラリ」
第 11 章「テスト」
第 12 章「最適化」

本書について

『Go言語100Tips ありがちなミスを把握し、実装を最適化する』には、Go開発者が言語のさまざまな機 能を扱うときについやってしまいがちな100個のよくある間違いが含まれています。本書は、外部ライブラリやフレームワークではなく、Go言語そのものと標準ライブラリに大きく焦点を当てていま す。間違いについてのほとんどの議論では具体例を示しており、どのような場合にその間違いを犯しやすいかを説明しています。本書は、考えや手法を押しつけるものではありません。個々の解決策は、それが適用されるべき状況を伝えるために詳しく説明されています。


コメント(0) 

記事「実践API設計」 [本]

WEB+DB PRESS Vol.134

WEB+DB PRESS Vol.134

  • 出版社/メーカー: 技術評論社
  • 発売日: 2023/04/22
  • メディア: 単行本(ソフトカバー)

雑誌の記事を最後に執筆したのは、「Software Engineer Vol.1」(技術評論社、2007年4月)だったので、16年振りに記事を書きました。
堅牢で、保守性に優れたWebサービスの実現
仕様ファーストでいこう!
実践API設計

ウェブサービスの開発に従事するようになったのは、リコーを早期退職して、2017年9月から働き始めたソラミツからでしたが、その後、メルペイ、現在のカウシェと、バックエンドのサービス開発に従事しています。実際に本番サービスとして使われるサービスを開発したのはメルペイからです。

私自身は、1984年に就職してからのワークステーション開発、その後のデジタル複合機開発と長年ウェブサービスには関わることはありませんでした。2018年6月からメルペイでマイクロサービスの開発に従事したときに考案して、その後、さまざまなマイクロサービスの開発、および、現在のカウシェでも実践していることを記事としてまとめています。発売は、4月22日です。

5章から構成されます。
第1章 優れたAPI 仕様とは何か
    よくある問題点と、記述すべき事柄
第2章 gRPC におけるAPI 仕様の書き方
    サービスの概要、エンドポイントの説明、エラーの説明
第3章 API 仕様ファースト開発
    仕様を先に記述し、テスト駆動で開発する
第4章 E2E テストフレームワークの構築
    API 仕様ファースト開発のための独自実装
第5章 API 仕様の技術的負債の返済
    サービスの成長を支えるための改善活動

コメント(0) 

三年間の在宅勤務 [プログラマー現役続行]

コロナがきっかけで2020年2月18日から在宅勤務(WFH:Work From Home)を始めて、ちょうど二年が経過しました。二年前と一年前の記事は、以下の通りです。
この一年間を簡単に振り返ります。

7回目の転職

大学院を修了して1984年4月に富士ゼロックスに就職してから7回目となる転職を、2022年10月にしました。年賀状も、先輩からは再雇用が終わりました、後輩からは定年を迎えましたというものが増えてきました。8社目となるカウシェでも、メルペイのときと同様に、ウェブサービスのバックエンドサービスをGo言語で開発をしています。Go言語との付き合いも13年となります(ちなみに、Javaは27年)。

メルペイおよびカウシェで私なりに工夫してきたバックエンドサービスのテストについては、4月下旬発売の雑誌に記事として掲載される予定です。雑誌の記事を執筆したのは、「Software People, Vol.8」(2006年3月発売)以来なので、17年振りとなります。

技術書の翻訳

この一年間では、幸い2冊の技術書を翻訳して出版することができました。

スーパーユーザーなら知っておくべきLinuxシステムの仕組み

スーパーユーザーなら知っておくべきLinuxシステムの仕組み

  • 出版社/メーカー: インプレス
  • 発売日: 2022/03/08
  • メディア: Kindle版
PDF版は、出版社のサイトから購入できます(こちらです)。

Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築

Go言語による分散サービス ―信頼性、拡張性、保守性の高いシステムの構築

  • 出版社/メーカー: オライリージャパン
  • 発売日: 2022/08/03
  • メディア: 単行本(ソフトカバー)
PDF版は出版社のサイトから購入できます(こちらです)。

技術書の翻訳としては、『Go言語による分散サービス』でちょうど20冊目となりました。現在、21冊目となるGo言語に関する書籍の翻訳を行っていますので、夏以降に発売になるかと思います。

オンライン読書会

この一年間もいろいろとオンライン読書会を主催してきました。
基本的に月1回、土曜日の午後1時から午後5時までの4時間のオンライン読書会ですが、継続して実施することで、一冊の本を読み切ることができます。「横浜Go読書会」は、Go言語に関する書籍を読む読書会です。「技術書読書会」は、特定の技術に関する技術書ではなく、ソフトウェアカルチャーやソフトウェアエンジニアとしての心得的な技術書を読む読書会です。「技術書読書会2」は、基本的に私が翻訳した技術書を読む読書会になっています。

技術教育

この一年は、『Effective Java 第3版』研修を1コースだけ実施しました。月に1回で、合計6回に分けて、各回で指定された範囲を事前に読んで、疑問点を質問表に記入してもらいます。研修当日はその質問に回答していくという形式の研修です。休憩ごとに気分転換に『Java Puzzlers』のパズルを解いてもらいますが、正解する人はあまりいません。

『Effective Java 第3版』は、多くのJavaプログラマが読んでいると思いますが、詳細まできちんと理解して読めている人は少ないのではないかと思います。以前は、オンライン読書会として、「Effective Java 第3版読書会」を主催していましたが、参加者があまりにも少ないので、現在は開催していません。

健康面

2020年6月20日(土)に急性心筋梗塞で救急搬送されて以降、薬と食事制限を続けており、週に5,6日は自宅での30分間のエアロバイクも継続しています。お酒も、基本的には一日おきです。

30代から50代まではずっと、健康診断や人間ドックでの血液検査でさまざまな値が悪かったのですが、現在はほとんどすべての検査項目が正常値に収まっています。また、長年、人間ドックでは超音波エコーによる「脂肪肝」の所見があったので、過去2回の人間ドックでは「脂肪肝」の所見はなくなりました。

在宅勤務という働き方

1984年に就職した頃は、ソフトウェア開発を行うには、会社に行くしか選択肢はありませんでした。ソフトウェアの開発環境はすべて会社にしかなかった時代です。1990年代には、電話回線を使って会社のコンピュータへ入って、自宅から簡単な作業ならできたりもしたのですが、基本は会社へ出社でした。そして、2020年初めにコロナの感染が広がる前まで、出社していた訳です。ただし、その頃は、何かのときには自宅から普通に作業できる環境にはなっていました。しかし、体調不良とか、雪で交通機関がマヒしているとかでない限り、出社でした。

そして、コロナによる在宅勤務が始まり、それが長期間となったため、2018年の入社当時は原則出社であったメルカリも「YOUR CHOICE」という制度を導入するまでに変わっていきました。

現在勤めているカウシェでも、基本的に在宅勤務を続けていますし、入社してからまだ一度も出社していません。在宅勤務における一番の問題はコミュニケーションだと思います。しか、在宅勤務という働き方が、後退して出社するという時代に戻ることはなく、コミュニケーションの問題は今後さまざま方法や技術により緩和されていくと思います。

社会全体が在宅勤務になることはありえませんが、ソフトウェア開発は、その性質上、在宅勤務が可能な領域が多いと思います。コロナが収束しても、おそらく今後もずっと在宅勤務を続けていくだろうと思います。
コメント(0) 

書籍『Core Java for the Impatient, Third Edition』 [本]

Core Java for the Impatient (English Edition)

Core Java for the Impatient (English Edition)

  • 作者: Horstmann, Cay S.
  • 出版社/メーカー: Addison-Wesley Professional
  • 発売日: 2022/09/29
  • メディア: Kindle版

かなり前に注文していたのですが、先日やっと届きました。この本は、Java 17までをカバーしています。Cay S.Horstmannの著書は多くありますが、この「for the Impatient」シリーズの特徴的なのは、章末に豊富な練習問題が含まれることです。簡単な問題もありますが、難しい問題も含まれていることがあります。2014年に出版したJava 8だけを解説した次の本の練習問題と同じものも含まれています。

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング (impress top gear)

Javaプログラマーなら習得しておきたい Java SE 8 実践プログラミング (impress top gear)

  • 出版社/メーカー: インプレス
  • 発売日: 2014/09/22
  • メディア: 単行本(ソフトカバー)

Cay S.Horstmannの本でもう一つ特徴的なのは、Acknowledgements(謝辞)に過去の書籍のレビューアも含めて名前が列挙されていることです。『Core Java, 12th Edition』とこの『Core Java for the Impatient, Third Edition』にも私の名前があります。
コメント(0)