SSブログ
前の10件 | -

書籍『Web API設計実践入門』 [本]

Web API設計実践入門──API仕様ファーストによるテスト駆動開発

Web API設計実践入門──API仕様ファーストによるテスト駆動開発

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

発売日は、多少変動するかもしれませんが、私にとって6冊目となる自著です。

WEB+DB PRESS Vol.134』で書いた特集記事1に加筆・修正したものです。さらに、過去に講演で話した内容やいくつかのTech Blogも加筆・修正したものを含めています。
コメント(0) 

Kindle版が販売終了になっている書籍 [本]

私が翻訳した以下の書籍は、Kindle版が購入可能な時期もありましたが、現在は販売終了になっており、購入できません。

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

APIデザインの極意 Java/NetBeansアーキテクト探究ノート

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

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

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

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

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES)

  • 出版社/メーカー: 丸善出版
  • 発売日: 2016/06/20
  • メディア: 単行本(ソフトカバー)


コメント(0) 

14年ぶりの自著 [プログラマー現役続行]

技術書の翻訳本は20冊以上行ってきましたが、自分で執筆する本は2012年9月に出版した『"プログラマー"まだまだ"現役続行』が最後でした。紙の本は絶版ですが、Kindle版やPDF版で今でも読むことができます。

プログラマー

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

  • 作者: 柴田 芳樹
  • 出版社/メーカー: 技術評論社
  • 発売日: 2023/08/01
  • メディア: Kindle版

最終的な発売日は未定ですが、14年ぶりに自著としての技術書を出版します。内容は、58歳から経験してきたWebサービスのバックエンドサービスに関して、「API仕様ファースト開発」をまとめたものとなります。
コメント(0) 

4月から(少し)働きます(その後) [プログラマー現役続行]

4月から(少し)働きます」では、会社勤めを終えて、個人事業主として働くということを書きました。その時点は、業務委託で少し働く予定でした。しかし、フルタイムで働いていないので、業務委託で働くことを打診されて、働くことになりました。次の2社で業務委託でソフトウェア開発に従事します。
どちらも自宅からのフルリモートです。稼働時間としては、両社で週に4.5日程度になりそうですので、ほぼフルタイムになります。
コメント(0) 

書籍『お金のこと何もわからないままフリーランスになっちゃいましたが税金で損しない方法を教えてください! 』 [本]

お金のこと何もわからないままフリーランスになっちゃいましたが税金で損しない方法を教えてください! (サンクチュアリ出版)

お金のこと何もわからないままフリーランスになっちゃいましたが税金で損しない方法を教えてください! (サンクチュアリ出版)

  • 出版社/メーカー: サンクチュアリ出版
  • 発売日: 2018/11/08
  • メディア: 単行本(ソフトカバー)

社会人になって40年間続けた会社勤めを終えて、4月から個人事業主として開業届を出しました。初めてのことなので、どこから学んでいけばよいのか分からなかったので、とりあえず読み始めた本の中の1冊です。個人的には、インボイス制度のところは今もモヤッとはしていますが、マンガで税について説明してくれており、とても読みやすくお勧めの本です。

ただ、以下の点も書いてあると良かったかなと思います。
  • 国民健康保険を役所の窓口で行うと、その場で健康保険証をもらえること
  • 個人事業主の開業届では、必ず税務署の受領印が押された開業届の控えを持っておくこと

健康保険証

会社勤めとして9社で働いた経験からすると、転職するごとに新たな会社が属している健康保険組合に変更になります。その際に、新たな健康保険証が届くのが1、2週間後ということがほとんどです。そのため、国民健康保険も健康保険証の発行に時間を要すると勝手に思い込んでいたのですが、横浜市青葉区の区役所の窓口に申請書類を提出したら、その場で発行(印刷)されて、持って帰ることができました。

個人事業主の開業届の控え

個人事業主の開業届ですが、別の書籍で開業届けの控えが必要な場合があることが書かれていたので、税務署まで行って、受領印が押された控えをもらってきました。

この本で紹介されている「小規模企業共済」への申し込みには、個人事業主としての確定申告書の控えが必要なのですが、開業当初はそのようなものはありません。その場合、小規模企業共済のホームページには「事業を始めたばかりで確定申告書がない場合:開業届の控え」と書かれていました。
コメント(0) 

4月から(少し)働きます [プログラマー現役続行]

4月から知り合いの会社の開発組織を手伝うということで、週に2日あるいは3日、リモートで働きます。

令和トラベルを退職して行ったこととして、以下のことを行いました。
  • 国民健康保険の手続き
  • こどもの国のウィークデーパスポートの購入
40年間の会社勤めで、会社を変わるごとに健康保険証が届くのに1週間以上を要していたので、同じように時間を要するのかなと思っていました。でも、実際は違っていました。

郵送での申請でも可能なのですが、必要書類を準備してから横浜市青葉区の区役所へ出向いて、保険年金課で申請しました。申請したら、その場で国民健康保険の健康保険証が発行されて、もらって帰ることができました。

こどのも国のそばに暮らし始めてから20年以上が経過していますが、今までは数えるほどしか行ったことがありませんでした。普段の心臓リハビリテーションとしては、天気が悪い日は家でエアロバイク、天気が良い日はウォーキングをしててきたのですが、仕事しながらだとどうしても朝10時のミーティングに間に合うようにしないといけませんでした。

これからは、時間的に余裕があるので、ウォーキングコースにこどもの国を入れたいと思い、こどもの国の「ウィークデーパスポート」(3,000円/年)を購入しました。

Weekday.png

申し込み書と代金を窓口に出すと、引き換え証をもらえるので、それで入園できます。帰りに案内所で引き換え証と交換でウィークデーパスポートをもらえます。

こどもの国は水曜日は休園日なので、実質的に週4日しか使えません。ただ、季節によっては水曜日も休園しない日があります。

コメント(0) 

バックエンドサービスのテストコード [API仕様ファースト開発]

バックエンドサービスを開発する際に、そのバックエンドサービスがデータベースと接続して独自のデータを保持していることが多いです。そのようなバックエンドサービスをテストするためのテーストコードの作成において、テスト対象の機能をテストするために、事前にデータベースへデータを設定する必要があります。

API仕様ファースト開発でE2Eテストフレームワークを構築してからE2Eテストを作成する場合、サービスを一から開発するのであれば、最初はある程度、データベースへ直接データを設定する必要があります。なぜなら、必要なデータを設定するためのエンドポイントがまだ実装されていないかもしれないからです。ある程度エンドポイントの実装が進めば、既存のエンドポイントを呼び出してデータを整備することが可能になっていきます。

しかし、単体テストや内部の機能テストとして、テストコードを作成すると、必要なデータをテストコードから直接データベースへ設定してテストが作成されることも多いと思います。そして、すべてのテストが同じように作成されてしまうこともあるかと思います。

データベースへの直接設定する問題点

テストコードからデータベースへ直接レコードを挿入する場合、サービスの成長い伴ってテーブルが発展していく際に、以下の問題が発生します。
  • レコードのカラム変更(追加、削除、型の修正、etc)が行われた際に、すべてのテストコードが正しく対応できていない可能性がある
  • エンドポイント経由ではないため、正しくないレコードが作られている可能性がある
このような状況では、テストに対する信頼性が徐々に低下していきます。

テストを並列に実行できない要因

バックエンドサービスの機能が増えていけば、テストコードも増えてきます。エンドポイントを直接呼び出すE2Eテストであれば、テストコードを並列に実行しても問題ないはずです。しかし、個々のテストが必要なデータを直接データベースへ設定するテスト群では、並列に実行できない場合があります。

テストコードで以下の処理を行っていると、テストを並列に実行できません。
  • レコードをINSERTする際に、プライマリーキーをハードコードして指定している
  • テーブルが空である必要があるテストとなっており、個々のテストの実行で、最初にテーブル内のレコードをすべて削除している
プライマリーキーを指定してINSERTできるデータベースは多くあります。また、データベースによっては、すでに同じプライマリーキーと同じ値のレコードが存在する場合、更新操作にするINSERT構文が存在します。TypeScript用のtypeormではsave()を呼び出した際に、すでにレコードが存在していれば更新になってしまいます。

このような処理を行っているテスト群を作り続けていると、テストを並列実行できずに、逐次実行していく必要があるため、すべてのテストの実行が完了するのに30分を超えてしまうことも珍しくなくなります。

まとめ

私自身は、バックエンドサービスを開発してきて、開発を担当するサービス用のテストコードへの信頼を失うような開発はしたくないですし、手元の開発マシンですべてのテーストを短時間に実行しながら開発するのを好みます。つまり、テストコードからデーターベースへ事前データを直接設定するのは避けた方がよいですし、テストコードは並列に実行できた方がよいです。
コメント(0) 

22冊目の技術書の翻訳に着手します [技術書の翻訳]

Go言語 100Tips ありがちなミスを把握し、実装を最適化する』を昨年の8月に出版してから、何も翻訳していませんでした。22冊目となる技術書の翻訳作業に着手します。どの本であるかは、翻訳が進んで出版日が決まったころにお知らせします。
コメント(0) 

4月から『効率的なGo』を読んでいきます [読書会]

効率的なGo ―データ指向によるGoアプリケーションの性能最適化

効率的なGo ―データ指向によるGoアプリケーションの性能最適化

  • 出版社/メーカー: オライリー・ジャパン
  • 発売日: 2024/02/24
  • メディア: 単行本(ソフトカバー)

横浜Go読書会では、4月からこちらの本をオンラインで読んでいきます。

コメント(0) 

バックエンドサービス開発で当たり前に行ってきたこと [プログラマー現役続行]

2000年以降に継続的インテグレーションが広まっていき、今ではCIということで当たり前に行われています。Go言語でウェブサービスのバックエンドサービスを開発するようになって6年ほど経過していますが、日々の開発の中で私自身が当たり前と思って行ってきたことがいくつかあります。
  • ローカル実行:自分の開発用マシン(MacBook Pro)で、開発しているサービスの自動テストをローカルで実行できる
  • カバレッジ:テストを実行した結果、どの行が実行されなかったかをカバレッジで確認できる
  • 並列実行:Go言語の`testing`パッケージの`t.Parallel()`を使って並列にテストを実行することで、テスト対象のサービスに並列にリクエストを処理させる
  • 長時間ランニングテスト長時間ランニングテストができる
これらすべてができないとバックエンドサービスが開発できないわけではありません。そして、次のように反論されるかもしれません。
  • ローカルで実行できなくても、CIですべてのテストを実行できています
  • どの行が実行されていないかを確認しなくても、CIですべてのテストがPASSしているので問題ないのでは?
  • 逐次的にすべてのテストがCIで実行されてPASSしているので問題ないのでは?
  • ローカルで長時間ランニングテストをしなくても、CIでテストが1回PASSしているので問題ないのでは?
おそらく、この反論に対して相手が納得する説明を行うのは容易ではないです。なぜなら、私自身が当たり前に行ってきたことが何をもたらすかは、実際に行ってみてどのような問題を見つけるかを経験してみないと、容易に納得できないからです。
コメント(0) 
前の10件 | -