タグ

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

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

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

    ユニットテストってもう言わない! CI/CD時代のテスト分類に最適なテストサイズという考え方
  • 【ソフトウェア設計】例外処理を考える

    はじめに 最近書いてるソフトウェア設計シリーズです。今回は例外に関して。以前、以下のような記事を書いたのですが、もう少し深堀して書いてみました。 ちなみにソフトウェア設計シリーズは他には以下を書いています。 モジュールになぜ分けるのか? モジュール、依存、そしてカプセル化 モジュールをどう分割するのか? 簡潔さは力なり? 予測可能な振る舞いと簡潔さについて ドキュメントとしてのコメント TL;DR 例外は「原則」キャッチしない 業務例外や必ずハンドリングさせたい例外はOptionalなど戻り値の方が便利 だいたい以下の図が言いたい事のすべて 例外処理とは? 「例外処理(Exception Handling)」は言語に依らず普遍的な関心事です。端的に言えば例外処理は異常やシステムの動作に不備が発生した際の特別な分岐処理です。リカバリやリソースの解放、あるいはユーザへの通知などがありますね。

    【ソフトウェア設計】例外処理を考える
  • 今年の書初めコーディングはAITuberを創る!

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

    今年の書初めコーディングはAITuberを創る!
  • なぜ脱OSSが増えているのか?

    はじめに TerraformやVaultを開発するHashiCorpは自社製品をOSSのMPL(Mozilla Public License v2.0) から、ソースコードは公開するも一部の利用に制限があるBSL(Business Source License) への変更をアナウンスしました。 これは2018年のRedisを皮切りにMongoDBCockroachDB、ElasticSearchなど多くのプロダクトで進められている脱OSSの流れです。商用のオープンソース[1]と言われてしまうこともある最近のこの動きの理由は何故なのか? という点を以下の動画で解説しました。 動画中では尺の都合で端折った個所も多いので、こちらの記事の方にもまとめておきたいと思います。 OSSとは? OSSの定義 まず、OSS(オープンソース)とはなんでしょうか? これはRMSのフリーソフトウェアを源流とする

    なぜ脱OSSが増えているのか?
  • 運用出来るWebアプリケーションの作り方

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

    運用出来るWebアプリケーションの作り方
  • Linuxコンテナの「次」としてのWebAssembly、の解説

    はじめに WASMをブラウザの外で動かすトレンドに関して「Linuxコンテナの「次」としてのWebAssemblyの解説」というタイトルで動画を投稿したのですが、動画では話しきれなかった内容をこちらの記事で補完したいと思います。 2022年もWebAssembly(WASM)の話題が多く発表されましたが、そのひとつにDocker for DesktopWASM対応があります。FastlyやCloudflareもエッジ環境でWASMを動かすソリューションを持っていますし、MSのAKS(Azure Kubernetes Service)でもWASMにpreview対応しています。WASM Buildersでも2023年のWASMの予想としてWASMのアプリケーションランタイム利用に関して言及されました。 WASMといえば元々ブラウザ上で高速にC++のコードなどを実行するところから始まっている

    Linuxコンテナの「次」としてのWebAssembly、の解説
  • 富士通の撤退する「メインフレーム」ってそもそも何?

    はじめに 富士通がついに2030年にメインフレーム市場から撤退し、66年の歴史に幕を閉じるという話が出てきました。 富士通といえば国産大型コンピュータの先駆けであり、IBM互換機を作って巨人IBMにらいついたベンダーでもあります。そんなわけで中々に歴史の転換点を感じる話題ではあるのですが 「ところでメインフレームって何? 」 という方も多いでしょう。という分けで名前は聞いたことがるけど実態が良く知らない「メインフレーム」 に関して少しだけ解説をする動画を作りました。 この記事は動画では話しきれなかった事も含めて、もう少し深堀した解説をしていきたいと思います。ちょっと長くなりましたが、前半が歴史の話で後半がアーキテクチャの話になるので好きな所にジャンプして読んでみてください。 メインフレーム? 汎用機? ホスト? メインフレームは他にも汎用機とかホスト機と呼ばれることもありますよね。Wik

    富士通の撤退する「メインフレーム」ってそもそも何?
  • Docker Desktopの代替方法 - Windows and Mac編

    はじめに 新方針でDocker Desktopが大企業での利用の場合は商用ライセンスの使用が必要になるようです。新料金体系は8/31から実施ですが、2022年1月31日まで猶予期間があります。 個人やスモールビジネス、あるいは教育やOSSプロダクトなどは継続して無料版のPersonalを利用できるようですが、従業員数250人以上/年間売り上げ10億円以上の会社が対象になるようです。今見てる限りだと部署とかチームみたいな契約の単位では無く会社規模なので、大きな組織に所属してるともれなく対象になりそうですね。 $5/userからなので基的には運用性も含めて払う方が楽だと思いますが、金額の大小にかかわらず予算を取るのが大変な組織や会社自体はデカくても部署がインキュベーションなので予算が基無い、とか色んなパターンもあるかと思います。 ちょうど、手元のPCでここ最近 Docker Desktop

    Docker Desktopの代替方法 - Windows and Mac編
  • え、HTTPSの転送なのにファイルも暗号化するんですか???

    TL;DR 基的には二重での暗号は不要 ただし、転送後も暗号化したまま使うなら、転送前から暗号化するのは良い ルールXを無邪気に追加して不整合のあるセキュリティルールを作ってはいけない はじめに 社内のセキュリティルールやスタンダードを決めるときに、HTTPSなのにVPN必須になってたりファイル暗号も必須になってたりするケースたまに見ます。今回は、それは実際に必要なことなのか? セキュリティ的に有効なのか? という点で考察をしていきたいと思います。 背景 二重三重に暗号化しても性能ペナルティが無いなら「なんとなく安全そうだから」でOKにしてしまいがちなのですが、これはよく考える必要があります。 というのも 「ルールXを追加することで既存のルールAと不整合が出る」 ってことは割とよくあるからです。具体的には「SCPのファイル転送は(SCPセキュリティに不備があった時の)安全性のためにファ

    え、HTTPSの転送なのにファイルも暗号化するんですか???
  • QiitaやZennよりも便利? IPAの資料を読もう!

    はじめに 飲み物じゃないIPAをご存じでしょうか? 漢字でいうと、独立行政法人 情報処理推進機構ですね。情報処理技術者試験を実施いる謎の組織という認識の方も多いと思います。 実はIPAはいろんなドキュメントを公開していてQiitaやZenn以上にお役立ちなサイトなのです。 まあ、AWSをどうこうとか、FireabaseやNext.jsのようなキラキラした奴は基載ってないので特に代替えするものではないですが、ブログとかはまた種類の違った情報があるので個人的には結構使うことあります。しかも 「日語」! こういう感じの事をTwitterでつぶやいたところ意外にイイねをされたので、せっかくだしどんなドキュメントがあるかちょっと紹介したいと思います。 セキュリティ関連NIST文書 まずはNISTドキュメントの翻訳版! これは良いですよね。NISTはアメリカの米国国立標準技術研究所で、セキュリティ

    QiitaやZennよりも便利? IPAの資料を読もう!
  • WebAssemblyをブラウザの外で動かすWasmerを触ってみた

    はじめに WebAssemblyをブラウザの外でも動かせるWasmerの1.0がリリースしたので試してみました。 Wasmerってなに? WasmerはWASI(WebAssembly System Interface)とEmscriptenに準拠したWASMを実行できるランタイムです。類似のものにFastlyのLucetがあるそうです。通常WASMはブラウザの中で実行するわけですがそのコンパクトでセキュアな仕様に注目して、ブラウザの外のあらゆる環境で動かすためにI/Oへのセキュアなアクセス方法も含めて定義されたのがWASIです。これによってセキュアでユニバーサルなランタイムを作るのがゴールみたいですね。 とりあえず触る前のリリース記事とか見た感想としては 「それ、なんてJava (JVM)?」 とりあえずインストール 公式ドキュメントを参考にしながら進めてみます。 $ curl http

    WebAssemblyをブラウザの外で動かすWasmerを触ってみた
  • データベースを遅くするための8つの方法

    はじめに Twitterのタイムラインを見ていたらバッチ系のプログラムで逐次コミットをやめて一括コミットにしたら爆速になったというのを見ました。当たり前でしょ、と思ったけど確かに知らなければ分からないよね、と思って主に初心者向けにRDBを扱うときの注意点をまとめてみました。 プログラミングテクニック的なところからテーブル設計くらいの範疇でDBチューニングとかは入ってないです。 自分の経験的にOracleをベースに書いていますが、他のRDBでも特に変わらないレベルの粒度だと思います。 大量の逐次コミットをする バッチアプリケーションでDBにデータをインサートすると言うのはかなり一般的な処理です。しかしデータ量が少ない時はともかく大量のインサートを逐次コミットで処理するとめちゃくちゃ遅くなります。数倍から十数倍遅くなることもあるので、10分程度のバッチが1時間越えに化けることもザラにあるので原

    データベースを遅くするための8つの方法
  • 1