タグ

ブックマーク / zenn.dev/koduki (13)

  • ユニットテストってもう言わない! CI/CD時代のテスト分類に最適なテストサイズという考え方

    はじめに 以前からユニットテスト/単体テストという言葉は使いづらい、と感じており今回も旧Twitterで「テストを実行時間ベースで分類する良い言葉ないかなー」と呟いていたところ、「テストサイズのSMLって考え方があるよ」と教えて戴きました。 だいたいは教えてもらったt_wadaさんの記事にすべて書いてあるのですが、自分の整理も含めて動画にしたので、その補完記事となります。 TL;DR 単体テストのバベルの塔は既に崩壊 CI/CDでの継続的テストには時間ベースのテスト分類が重要 UT/IT/E2EではなくSMLによるテストサイズがCI/CDには合う それは単体テストか結合テストなのか? 自動テスト、手動テストに関わらずテストの分類として単体テストと結合テストという言葉は一般的です。 ITQBではTest Levelsという言葉で定義されていますし、以下のようなV字モデルの対応表はみんな知って

    ユニットテストってもう言わない! CI/CD時代のテスト分類に最適なテストサイズという考え方
    pascal256
    pascal256 2024/06/05
  • 【ソフトウェア設計】モジュールをどう分割するのか?

    はじめに 前々回や、前回に引き続き、ソフトウェア設計の指針に関する話をしたいと思います。 関数やクラス、そしてサービスなどシステムの塊の単位をモジュールと呼び、モジュールを作る事で、認知負荷を下げ複雑性と戦うという話をしてきました。では、モジュールは「いつ」分割するのが良いでしょうか? また、他にも共通モジュールを不用意に作ってしまって苦労した人も多いのでは無いでしょうか? 今回はそのあたりの話をしていきます。 TL;DR 以下があればモジュール設計を見直す 単純な要件/普段の利用に対して、タイプ量や約束事が多い 共通モジュールが「使われ方」に依存する モジュールの役割を一言で説明できない コード管理や性能/データ整合性など利用に際してのペナルティが高い 分割 is NOT 正義 - FizzBuzz Enterprise Edition 複雑性を排除するためにモジュール分割をすることは重

    【ソフトウェア設計】モジュールをどう分割するのか?
    pascal256
    pascal256 2024/02/26
  • パスワードはおしまい! 認証はパスキーでやろう

    はじめに パスワードは古来より認証に良く使われる方法ですが、その運用の難しさからセキュリティの懸念とその対策としての運用の複雑さ(複雑で長い文字列、90日でパスワード変更など)が要求される大きく問題をもった仕組みです。 その根的な解決策としてFIDO Allianceを中心に推進されている 「パスワードレス」 が注目されています。これはPINや生体認証とデバイス認証を使ったMFAからなっており、フィッシングやパスワード流出に強い上に、ユーザも複雑なパスワードを覚えなくて良い、という大きなメリットがあります。最近はこの流れでPassKeyというものが登場し、Apple/MS/Googleのプラットフォーマが対応したことで、格運用に乗せれるフェーズになってきました。というわけで以下に解説動画を作ったのですが、動画中で時間の都合で触れきれなかったところや、JavaScriptによる実装のサン

    パスワードはおしまい! 認証はパスキーでやろう
    pascal256
    pascal256 2024/01/21
  • 今年の書初めコーディングはAITuberを創る!

    はじめに あけましておめでとうございます。去年は何といってもAIの年でした。ChatGPTStableDiffusion2022年末に登場してから、想像を超えてAI周りが進化しましたね。今回は年の初めという事もあり、前から興味のあったAITuberを作ってみる事にしました。 「AITuberを作ってみたら生成AIプログラミングがよくわかった件」 っても買ったし。LLM部分だけでは無く、OBSやYouTubeのコメント取得などAITuberに必要な内容が一式揃っていて非常に参考になりました。 また、私はプログラミングは多少できますが、イラスト音楽に関しては全くスキルの無い人間です。そのためそのあたりに関してはStable DiffusionやSunoAIの力を借りて作っているので、結果的にオール生成AIという感じですね。そのあたりも含めて記事にまとめたいと思います。 TL;DR 素の

    今年の書初めコーディングはAITuberを創る!
  • 運用出来るWebアプリケーションの作り方

    はじめに 先日、下記のようなツイートを見つけて、そういえば趣味個人開発してたときには然程気にしてなかったけど、仕事で運用するようになって先輩たちから学んだり自分で身につけたチップスってちょこちょこあるよねー、とふと思ったので、Webアプリケーション開発に関わるものをいくつかまとめてみました。 特に体系的/網羅的という程でもないですし、最近はFWや色々な仕組みでカバーされてるものも多いですが備忘録として。 Tips 機械が読めるログを作る これは割と重要なのですが、ログは人間が読むものではなく機械が読むものです。それはZabbixだったりDatadogだったりSplunkだったりgrep/awkだったりツールは何でも良いのですが、古の時代はさておき現代ではログは機械が読めることが最重要です。 まず大前提として構造化されている必要があります。言うまでもないですが「フリーフォーマット」のログの

    運用出来るWebアプリケーションの作り方
    pascal256
    pascal256 2024/01/10
  • その例外、いつキャッチするの?

    はじめに 最近、若手のコードレビューをしていて例外の使い方を教える機会があったので、ブログの方にもまとめたいと思います。今回はバッチ編。オンラインだとまた少し違う観点があると思います。また、言語はJavaを前提していますが考え方は例外機構をもつ言語ならあまり変わりません。 TL;DR 例外は原則キャッチしない。バッチは速やかに殺せ 個別箇所でログを出さずに必要な業務情報はExceptionを入れ子にして乗せる 長いバッチのためにはスキップもやむなし 原則、例外はキャッチしない JavaにはErrorとExceptionが存在し、OutOfMemoryErrorとかプログラム上ではどうしようもないものがエラー、ファイルが存在しない(FileNotFoundException)とかプログラム側でハンドリングするもの、と教科書では習うと思います。なのでException系はキャッチするものと、と

    その例外、いつキャッチするの?
    pascal256
    pascal256 2023/11/04
  • Cloud RunのJavaの起動速度を60%改善した

    はじめに 私はGCPのCloud Runがお気に入りのサーバレス環境なのですが、一番得意な言語であるJavaを使った場合のスピンアップタイムの悪さには頭を悩ませています。 ローカルでは1,2秒で起動する場合でも、何故かCloud Runに持って行くと他の言語と比べても劇的に遅くなるのですよね... GraalVMのネイティブイメージを使えばGoなどと遜色無く瞬時に起動するのですが、ネイティブイメージへの変換は癖も強いため通常のJVMでも改善できないかとチューニングを試してみました。 TL;DR 最終的に60%程起動速度を改善 9秒台が3秒台になっているので体感としては結構変わる native-imageが使え無いケースでもこのくらいなら許容出来そう もちろん完全停止状態以外のレスポンスは3秒とか言わずミリ秒オーダー 準備と基礎値の計測 まずはアプリケーションを準備する必要があります。今回は

    Cloud RunのJavaの起動速度を60%改善した
    pascal256
    pascal256 2022/12/19
  • Javaがサーバレスに至るまでの道のり

    はじめに 先日、JakartaOne Live Japan 2022というイベントで登壇させていただく機会を頂きました。 QuarkusやHelidonのような新しめのEEフレームワークがこれまでのPayaraやWebLogicとどう違うのか? CloudRunのようなサーバレス環境でMicroProfileのどの機能が効果的に働くのか? という点を最近のWeb開発周りのトレンドと絡めながら話ました。上記のようにアーカイブ動画も公開されていますが、せっかくなのでQuarkusがサーバレス環境で実行に最適化されるまでの周辺事情等をまとめたいと思います。Javaだけに留まらず最近の環境事情の整理にも役立つかと思います。 TL;DR Quarkus/Helidonは軽量で高速な新しいEEフレームワーク コンテナや、サーバレス、クラウドネイティブなど最新のトレンドに基づいた設計 GCPのCloud

    Javaがサーバレスに至るまでの道のり
    pascal256
    pascal256 2022/10/04
  • Hello Worldのその先へ - 若手エンジニアにお勧めの本6選

    はじめに こちらの動画でも紹介したのですが、春は新人エンジニアの季節。そして去年や一昨年前の新人たちが2年目から3年目になる季節です。というわけで、そんな彼らが初級者から中級者になるためにオススメのを紹介したいと思います。 この記事では動画の内容に加えて「どんなを何故紹介するのか?」という観点も合わせて加筆しています。 ラインナップ 紹介するは以下のラインナップです。超有名を含めて 「アーキテクチャ」 「運用」 「コーディング」 「インフラ」 「データベース」 とWebアプリケーションエンジニア必須の6カテゴリから1つずつ選出してみました。 UNIXという考え方―その設計思想と哲学 ITIL はじめの一歩 スッキリわかるITILの基と業務改善のしくみ リーダブルコード ―― より良いコードを書くためのシンプルで実践的なテクニック レガシーコード改善ガイド Webエンジニアが知って

    Hello Worldのその先へ - 若手エンジニアにお勧めの本6選
    pascal256
    pascal256 2022/05/04
    こういうラインナップを早くから読めば巷で話題のインフラエンジニアとの論争も起こりづらいはず…
  • 明日もう一度来て下さい。本当のマジックナンバーを見せてあげますよ

    はじめに 下記の記事を見つけたのですが内容は大筋は賛成なのだけど、消費税をマジックナンバーという言葉で色々と違和感が。 これってマジックナンバーの話関係ある? と思ったのでちょっと自分の考えを整理してみました。 TL;DR (狭義の)マジックナンバーは使うな。常に名前を付けよう たとえ自明でもコード上で重複があるなら定数/変数や関数にしよう 共通ロジックを作ろう! でも気を付けながら。 マジックナンバーとは? 私の理解ではマジックナンバーというのは意味の分からない数値です。例では消費税率という少なくともコンテキストが分かれば意味の分かりそうなものが使わていますがコード値とかフラグ値のようなそもそも意味のない値に使うことの方が多い印象です。これが当のマジックナンバーです。 例えば以下のような条件分岐を考えます。タクシー料金を見積もるコードです。金額は適当なのであしからず。 def taxi

    明日もう一度来て下さい。本当のマジックナンバーを見せてあげますよ
    pascal256
    pascal256 2021/09/12
  • 新米情シスはWindowsサーバ管理方法を模索中

    はじめに いつもはプログラム書いたり、Linuxとかアプリサーバの運用とかをする事が多いのですが、最近いわゆる情シスっぽい仕事をする機会がありWindowsサーバ管理の道を模索しています。ここで言う情シスっぽい仕事ってのは社内インフラとか言われるオフィス自体のNW(WiFiとかLAN)やPCの管理/運用のあとセキュリティ基盤ですね。なおクライアントはChromebookとかMacの事は忘れてWindowsのみの素晴らしきダイバーシティの無い世界です。やったね! さて、ではWindowsサーバをどう管理するか? 当然、GUIで丹精込めて作った手順書をベースにポチポチやって運用することは出来るのですが、その伝統的なやり方はあまりに多くの問題を含んでいます。そのためMFA/CLI/IaC/自動化をキーワードに管理方法を検討中です。まだ模索段階のため 「これがベスト!」 と言えるものでは無いですが

    新米情シスはWindowsサーバ管理方法を模索中
    pascal256
    pascal256 2021/08/23
  • 今度こそユニットテストを書き始めるために

    はじめに Unit Testが大事、ということ自体はあまり異論はないと思うのですが、最初からTDDがしっかりできてるような現場ならいざ知らず、そうではない場合は中々うまく入れれない事も多くあります。なのでこうすると導入しやすい、という観点で以下の動画でそのあたりのことを話したのですが、補足も含めて記事でもまとめておきたいと思います。 これはユニットテストですか? ユニットテストとは? ユニットテストとは何でしょうか? 一応、テストの資格試験を実施しているISTQBの定義では以下のように定義されます。 component testing (unit testing) A test level that focuses on individual hardware or software components. Synonyms: module testing, unit testing この

    今度こそユニットテストを書き始めるために
    pascal256
    pascal256 2021/07/28
  • パスワード付きZIPのない世界でどう過ごすのか?

    はじめに 平井卓也デジタル改革担当相は2020年11月17日、中央省庁の職員を対象に「パスワード付きZIPファイル」の送信ルールを廃止する方針を明らかにされましたね。とても良いニュースだと思います。 こちらは「デジタル改革アイデアボックス」からの意見を取り入れたものと言われていてこういうサイクルがさっそく回っているのには期待が持てますね! 省庁職員がメールにファイルを添付して送信する際に、暗号化した上でパスワードを別のメールで送る「自動暗号化ZIPファイル」を26日に内閣府と内閣官房で廃止すると明らかにした。 代替策は決まっておらず、民間企業の動きも参考にしながら望ましいセキュリティー向上策を検討するという。暫定的な対策として「(パスワードを)電話で教える」と例示した。他省庁の状況も実態調査を進める。 「パスワードを電話で伝える」と言う点を揶揄するコメントもありますが超面倒だけどセキュリテ

    パスワード付きZIPのない世界でどう過ごすのか?
    pascal256
    pascal256 2020/11/25
  • 1