タグ

ブックマーク / gihyo.jp (97)

  • 第6回 自動テストのサイズダウン戦略 ~テストダブルを作る前に考えるべきこと~ | gihyo.jp

    このコラムの主なテーマは、信頼できる実行結果にできるだけ短い時間でたどり着く自動テスト群の構築です。稿では、テストダブルをうまく活用してテストピラミッドを構築する戦略を立てます。 信頼性の高い自動テスト群を求めて 自動テスト全体の中長期的な信頼性を守るために、図1のようにLargeからMediumへ、MediumからSmallへテストサイズを適宜下げ、テストピラミッドを構築します[1]。テストサイズとは、単一プロセスに閉じたテストをSmall、単一マシンに閉じたテストをMedium、そういった制約がないテストをLargeテストと呼ぶ分類基準です。 図1 テストピラミッド サイズダウンを考えるとき、テストダブルの活用が思い浮かびます。テストダブルとは、自動テストに使用する偽物、代用品のことです。単一プロセスや単一マシンに収まらない外部依存を偽物に置き換え、テストサイズを下げます[2]。 テ

    第6回 自動テストのサイズダウン戦略 ~テストダブルを作る前に考えるべきこと~ | gihyo.jp
  • 第5回 テストピラミッド ~自動テストの信頼性を中長期的に保つ最適なバランス~ | gihyo.jp

    粒度の異なる各自動テストをどの程度書くか悩まれている方は多いと思います。今回は、自動テストの理想的なバランスを示す「テストピラミッド」について説明します。 テストピラミッドとは何か テストピラミッドとは、コスト(記述コストと実行コスト)と忠実性(物の挙動を反映している度合い)が高く、実行速度と決定性(テストが毎回同じように安定して動く度合い)が低いテストほどケース数を減らすべきだという、自動テストケース数の望ましい比率をピラミッド型に視覚化したものです。 図1は、テストの粒度をユニットテスト、インテグレーションテスト、E2E(end to end)テストの三段階で示しており、テストピラミッドの説明によく用いられます。ユニットテストが最も多く、E2Eテストが最も少ない状態に近づけることで、開発速度と信頼性の高いバランスが得られると言われています。 図1 テストピラミッド なぜ比率を意識する

    第5回 テストピラミッド ~自動テストの信頼性を中長期的に保つ最適なバランス~ | gihyo.jp
  • Rust使いは要注目! WebAssemblyのコンポーネントモデルを知る ~TechFeed Experts Night#9講演より | gihyo.jp

    TechFeed Experts Night Pick up Rust使いは要注目! WebAssemblyのコンポーネントモデルを知る ~TechFeed Experts Night#9講演より 記事は、2022年11月に開催された「TechFeed Experts Night#9 〜 Rust/WebAssemblyの「いま」を探る」のセッション書き起こし記事「Rust使いは要注目! WebAssemblyのコンポーネントモデルを知る by chikoski@」を転載したものです。オリジナルはTechFeedをご覧ください。 よろしくお願いします。今ご紹介いただきましたchikoski@です。 Rustにはコミュニティ的な関わり方が多くて、Rust.Tokyoというカンファレンスの運営をやっています。WebAssemblyは出たときからずっと仕様を追っていて、コロナの始まる前はWeb

    Rust使いは要注目! WebAssemblyのコンポーネントモデルを知る ~TechFeed Experts Night#9講演より | gihyo.jp
  • Figma上でUIデザインを考えてくれるAIデザインコンパニオン「Genius」発表 | gihyo.jp

    デザインツールなどを開発しているDiagramは2月10日,Figma上でUIのデザインをユーザと共同で作成できるAIベースのデザインコンパニオンGeniusのプレビューを公開した。 Genius by Diagram URL:https://www.genius.design/ 🔅 Introducing Genius, your AI design companion in @figma It understands what you’re designing and makes suggestions that autocomplete your design using components from your design system. Genius is coming soon. Join the waitlist → https://t.co/ldAdWySptX pic

    Figma上でUIデザインを考えてくれるAIデザインコンパニオン「Genius」発表 | gihyo.jp
  • Goの新しい構造化ロガーを体験しよう | gihyo.jp

    logパッケージ Goには標準ライブラリとしてlogパッケージが提供されています。logパッケージで行えることはそう多くはありません。たとえば、デフォルトではログは標準エラー出力に出力されますが、log.SetOutput関数で出力先を変更できます。また、利用する関数によってログを出力した後の挙動をコントロールできます。たとえば、log.Print関数はログを出力するだけですが、log.Fatal関数はログ出力後にos.Exit(1)を呼び出します。log.Panicはログ出力後に出力したログと同じ文言を引数としてパニックを発生させます。 logパッケージでは、ログとともに関連するデータを出力したい場合は、log.Printf関数を用います。次のように、書式を指定して出力します。 log.Printf("request_url=%s request_method=%s", r.URL, r

    Goの新しい構造化ロガーを体験しよう | gihyo.jp
  • Rust製高速データフレームライブラリ、Polarsを試す | gihyo.jp

    門脇@satoru_kadowakiです。今月のPython Monthly Topicsでは、Rust製の高速データフレームライブラリ Polars について紹介します。 Polarsとは Pythonデータ分析に使用される主なライブラリに pandas があります。Polarsはpandasと同様にデータフレームというデータ構造オブジェクトを提供するサードパーティライブラリです。特にpandasを意識して作られており、メインページに「Lightning-fast DataFrame library for Rust and Python」とあるように、Rustによる高速処理を謳っています。 Polarsのリポジトリや関連ドキュメントは以下を参照してください。 Github: https://github.com/pola-rs/polars ユーザーガイド: https://pola

    Rust製高速データフレームライブラリ、Polarsを試す | gihyo.jp
  • Webアプリケーションアクセシビリティ ――今日から始める現場からの改善

    このの概要 アクセシビリティとは「利用可能な状況の幅広さ」のこと。より多くの人が,より多くの環境で,より多くの状態で利用できることです。もちろんそこには視覚・上肢・認知などに障害があるケースも含みます。日々繰り返し利用するWebアプリケーションにこそ,アクセシビリティが求められます。 Webサイトに比べて,多くのインタラクションを行うWebアプリケーションでは,アクセシビリティの確保はやや難易度が高いものです。特に既存のWebアプリケーションは複合的な課題を抱えていることが多く,教科書どおりの方法では必ずしも改善できません。 書では,Webアクセシビリティの基礎である「HTMLとWAI-ARIA」を解説したうえで,Webアプリケーションの要である「フォーム」,色やテキストなど「UIデザインの基」,モーダルダイアログや通知など「少し複雑なUIパターン」の3分野に分けて,よくある事例を取

    Webアプリケーションアクセシビリティ ――今日から始める現場からの改善
  • 「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 | gihyo.jp

    ノートアプリ「Obsidian」を使いこなす 「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 前回までの記事で、Obsidianの基的な設定は完了しています。あとは、ノートを自分の好きなようにMarkdownで書いていけばよいのです。 しかし、ノートを書くといっても、何から手をつければよいのかわからない人が多いでしょう。 ノートの書き方は人によって違ってよいのですが、先人が残してくれた知恵がいくつか公開されています。その方法と合わせて、私がノートを作るときの考え方を紹介します。 デイリーノートを使う Obsidianではじめてノートを作成する人に対して、私がおすすめしているのは前回の記事で紹介したコアプラグインの「デイリーノート」を使う方法です。 デイリーノートとは、名前の通り毎日のノートのことです。初期設定のままで設定を変更してい

    「Obsidian」でノートを作るときの考え方とは? ~デイリーノートの活用と、PKMとしてのノート術 | gihyo.jp
  • 第59回 Fediverse入門―非中央集権型SNSサーバを作ろう!(1) | gihyo.jp

    連載では第一線のPerlハッカーが回替わりで執筆していきます。今回のハッカーは白方健太郎さんで、テーマは「実践Fediverse」です。 稿のサンプルコードは、WEB+DB PRESS Vol.114のサポートサイトから入手できます。 Fediverse─⁠─非中央集権型ソーシャルネットワーク 2017年春に日でブームとなったMastodonが構成するような非中央集権型ソーシャルネットワークは、Fediverseと呼ばれます。Fediverseは、中央に全体を制御するサーバがおらず、各サーバが連合と呼ばれるゆるいネットワークを構成することが特徴です。 稿では、Fediverseに参加するために最小限実装する必要がある機能と、Perlにおける実装方法を説明します。 Fediverseを構成する仕様群 Fediverseは複数の仕様を組み合わせることで実現されています。節では、それぞ

    第59回 Fediverse入門―非中央集権型SNSサーバを作ろう!(1) | gihyo.jp
  • O/Rマッパーの型チェックを強化できるPython 3.11の新機能 Data Class Transforms(PEP 681) | gihyo.jp

    Python Monthly Topics O/Rマッパーの型チェックを強化できるPython 3.11の新機能 Data Class Transforms(PEP 681) 筒井@ryu22eです。2023年最初の「Python Monthly Topics」は、Python 3.11の新機能Data Class Transforms(PEP 681)について解説します。 PEP 681についての公式ドキュメントは以下を参照してください。 PEP 681 – Data Class Transforms | peps.python.org Pythonには、データクラスと似た構造を持つクラスを扱うライブラリがいくつかあります。たとえば、attrs、pydantic、O/Rマッパー[1](SQLAlchemy、Django内蔵のO/Rマッパー)などです。Data Class Transfor

    O/Rマッパーの型チェックを強化できるPython 3.11の新機能 Data Class Transforms(PEP 681) | gihyo.jp
  • 第3回 テストサイズ ~自動テストとCIにフィットする明確なテスト分類基準~ | gihyo.jp

    テストの分類として開発者に馴染み深いのは、検証の対象となるコードの範囲や粒度での分類でしょう。範囲が狭く粒度が細かい順に、ユニットテスト、インテグレーションテスト、E2E(end to end)テストなどと呼ばれます。今回は、自動テスト前提の時代にうまくフィットするテスト分類について考えます。 現場の混乱 実は、範囲や粒度による分類に現場は混乱しがちです。「⁠1つの対象」を検証する狭いテストをユニットテスト、単体テスト、コンポーネントテストなどと呼びますが、これらをほぼ同じものと言う人も、異なると言う人もいます。「⁠1つの対象」も関数、メソッド、クラス、モジュール、パッケージ、振る舞い、1つの画面と、人や組織によってバラバラです。 複数のレイヤ、たとえばコントローラとモデルをまたいで検証するテストをインテグレーションテストと呼ぶ人もいれば、それもユニットテストと呼ぶ人もいます。ユニットテス

    第3回 テストサイズ ~自動テストとCIにフィットする明確なテスト分類基準~ | gihyo.jp
  • 第8回 価値を高めるプロダクトマネジメント | gihyo.jp

    コーナーでは技術へのタッチポイントを増やすことを目標に、各分野で活躍されている方をお迎えします。 今回はエンジニアと一緒に製品の価値を高めるプロダクトマネジメントをテーマに小城さんにインタビューします。 【話し手】 小城 久美子(KOSHIRO Kumiko)プロダクトマネジメントの体系化によって成功の再現性を高めたいエンジニア出身プロダクトマネージャー。書籍『プロダクトマネジメントのすべて』共著者、コミュニティ「プロダクト筋トレ」主催者。 Twitter @ozyozyo URL https://note.com/ozyozyo 価値を届ける仕事 日高: 小城さんはプロダクトマネージャーとして、またアドバイザーとしても活躍されていますよね。 小城: 今はプロダクトマネジメントを学問としてとらえたいと考えています。世の中にある成功と失敗から学んで、巨人の肩の上に立って成功に早く近付けるよ

    第8回 価値を高めるプロダクトマネジメント | gihyo.jp
  • Linux 6.1の注目機能「MGLRU」―メモリ管理に取り入れられたエイジングシステム | gihyo.jp

    Linus Torvaldsは12月11日(米国時間⁠)⁠、前週の告知どおりに「Linux 6.1」の正式リリースをアナウンスした。 Linux 6.1 -Linus Torvalds Linux 6.1はメインライン開発ではじめてRustを採用したことが大きな話題となったが、そのほかにもユーザ空間におけるメモリサニタイザーツールに似た動的エラー検出の「KMSAN」やB-treeベースのデータ構造「Maple Tree⁠」⁠、AMDの新しいPMFドライバのサポートなど多くのアップデートが行われている。Googleの開発者がメインラインへのマージを提案してきた「MGLRU(Multi-generational LRU⁠)⁠」もそのひとつで、古参のカーネル開発者であるAndrew MortonもMGLRUのメインライン化をバックアップしてきた。 Linuxカーネルではメモリ管理に「LRU(Le

    Linux 6.1の注目機能「MGLRU」―メモリ管理に取り入れられたエイジングシステム | gihyo.jp
  • Pythonで学ぶ衛星データ解析基礎 ――環境変化を定量的に把握しよう

    2022年12月19日紙版発売 2022年12月15日電子版発売 田中康平,田村賢哉,玉置慎吾 著,宮﨑浩之 監修 B5変形判/352ページ 定価3,520円(体3,200円+税10%) ISBN 978-4-297-13232-3 Gihyo Direct Amazon 楽天ブックス ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 書のサポートページサンプルファイルのダウンロードや正誤表など このの概要 書籍は,Pythonによる衛星データ解析に興味がある初学者に向けた入門書となっています。学校の情報の授業等で利用する際の副教材になることを意識し,衛星データだけでなくデータサイエンスの基礎的な内容も含めました。学校で地球環境やご自身が住んでいる地域がどのように変化しているか調べたい方は

    Pythonで学ぶ衛星データ解析基礎 ――環境変化を定量的に把握しよう
  • 4年間のEKS移行の取り組みを振り返って | gihyo.jp

    『家族アルバム みてね』(⁠以下、みてね)では、サービス開始当初よりAWS OpsWorksをオーケストレーションツールとして利用してきました。 しかし、サービスや組織の拡大に伴い、AWS OpsWorksによる運用上の課題が生じてきました。そこで、2018年ごろにAWS OpsWorksからAmazon EKSに移行するという意思決定を行いました。 その後、たくさんの試行錯誤や紆余曲折、回り道を経て、2021年にAmazon EKSへの移行が完了しました。 この記事では、4年近くに渡ったEKS移行の取り組みを時系列を追って紹介していきます。 その過程には、後に取りやめることになった設計や意思決定も多く含まれています。 記事の最後でEKS移行プロジェクトを振り返り、そこから得た学びをまとめます。 図 『家族アルバム みてね』のEKS移行のタイムライン AWS OpsWorksの課題とEKS

    4年間のEKS移行の取り組みを振り返って | gihyo.jp
  • 高まるデータ分析の重要性とそれを支えるAWS | gihyo.jp

    データ駆動型経営の時代 昨今、データドリブンビジネス、ないしはデータ駆動型経営という言葉が語られるようになって久しい時代です。インターネット、そしてスマートフォンの発達に後押しされたソーシャルネットワークの高度な発展により、多くのユーザーはより自由にそしてより気軽に意見を発信できるようになっています。 これにより、企業が関与しないところで様々なサービスや商品が評価され続け、SNSに投稿されたその評価は暗黙的に別のユーザーの購買行動に影響を与え続けています。またそれと同時に、公的な人格、私的な人格等、複数人格をユーザーが使い分けた際の可視化も可能となり、ユーザーの購買行動は細分化を続ける一方です。 このような背景を踏まえて企業のマーケティング活動は、従来の作りこんだ販売戦略型から、オーガニックグロースと言われるユーザーがユーザーを呼び込む行為を促進させる方向へシフトしつつあります。このために

    高まるデータ分析の重要性とそれを支えるAWS | gihyo.jp
  • SPA化するMPAとMPA化するSPA ~TechFeed Experts Night#4 講演より | gihyo.jp

    記事は、2022年9月に開催された「TechFeed Experts Night#4 〜 フロントエンドアーキテクチャを語る」のセッション書き起こし記事「SPA化するMPAとMPA化するSPA(@yosuke_furukawa⁠)⁠ ― TechFeed Experts Night#4 フロントエンドアーキテクチャを語る」を転載したものです。オリジナルはTechFeedをご覧ください。 古川と申します。@yosuke_furukawaでTwitterなどをやっております。 SPAは”見えるようになるまでが遅い” 私が今回お話するのは「MPA化するSPA」です。もともとSPAは、画面遷移(トランジション)をアプリケーションに合わせて最適化することを目的として発展した技術だと思っています。変更が発生したところだけレンダリングすることで高速化するテクニックだったのが、それをすべてのページで行う

    SPA化するMPAとMPA化するSPA ~TechFeed Experts Night#4 講演より | gihyo.jp
  • Goで書くテスタブルなCLIツールの作り方 | gihyo.jp

    CLIツールをテストする難しさ ターミナルなどで動作するCLI(コマンドラインインタフェース)ツールは、パッケージを公開して利用してもらうライブラリと比べてテストがしにくいと感じる読者も多いでしょう。 CLIツールは、ファイル/標準入力からの入力や、ファイル/標準出力/標準エラー出力への出力があることが多いです。また、コマンドライン引数やオプション(フラグ)によって変わる挙動のパターンが多いため、網羅的なテストが大変です。 入出力についても単一のファイルを読み書きするだけではなく、ディレクトリごと作成したり、特定のディレクトリ以下を再帰的に読み込むような処理もよくあります。 main関数にすべての処理をすべて書くような作りのCLIツールだと、実際にビルドしてテストスクリプトなどから動かしてテストするしかありません。しかし、せっかくCLIツールをGoで書いているのであれば、テストもGoで書き

    Goで書くテスタブルなCLIツールの作り方 | gihyo.jp
  • 第7回 技術を伝えるドキュメンテーション術 | gihyo.jp

    コーナーでは技術へのタッチポイントを増やすことを目標に、各分野で活躍されている方をお迎えします。 今回はテクニカルライティングをテーマに堀越さんにインタビューします。書く技術の一端に触れて仕事趣味に活かしてみませんか。 【話し手】 堀越 良子(HORIKOSHI Yoshiko)LINE ではたらくテクニカルライター。技術書典で『DNS をはじめよう』などのインフラ入門書を執筆。ねこが好き。 Twitter @mochikoAsTech GitHub mochikoAsTech URL https://mochikoastech.booth.pm/ 書く仕事 日高: 今のドキュメントを書くお仕事とは、どのように出会ったのでしょうか。 堀越: 私のキャリアはPHPエンジニアから始まっています。そのあと広報をやって、今の仕事の前はインフラエンジニアを7年ほどしていました。当時、仕事をしなが

    第7回 技術を伝えるドキュメンテーション術 | gihyo.jp
  • 軽量RustフレームワークTauriでデスクトップアプリ開発をはじめよう | gihyo.jp

    TauriはRustで書かれた軽量なGUIフレームワークで、WindowsmacOSLinux向けのデスクトップアプリを開発できます。2022年6月に最初の安定版であるバージョン1.0がリリースされました。 Tauriでは、メインプロセスはRustで記述しますが、UI(User Interface)にはWeb技術を利用します。ReactVue.jsのようなJavaScriptフレームワークがそのまま使えるので、インタラクティブで見栄えの良いUIを簡単に構築できます。同種のフレームワークにElectronがありますが、後発であるTauriにはインストーラのサイズを小さくできるなどの強みがあります。 Tauriのロゴは、おうし座の二重星であるシータタウリ(θ Tauri)をモチーフ[1]にしており、Webとネイティブアプリの相互作用を意味しています。 図1 Tauriロゴ 稿では、Ta

    軽量RustフレームワークTauriでデスクトップアプリ開発をはじめよう | gihyo.jp