タグ

ブックマーク / codezine.jp (227)

  • テスト自動化成功の鍵「テスト自動化アーキテクチャ」、構築のポイントと考え方とは

    開発の現場では、単体テストの自動化、結合テスト(APIテスト)の自動化、システムテストの自動化など、段階ごとにさまざまなテスト実行が自動化されている。だが、特に結合以降において、テスト自動化の導入を失敗するケースは少なくない。その原因の一つは、テストの自動化をツール導入と捉えていることにある。セッションでは、テスト自動化アーキテクチャという概念を通じて、ソフトウェアテストを自動化する仕組み、テスト自動化システム構築のポイントについて語られた。 テスト自動化成功の大きな鍵「テスト自動化アーキテクチャ」 テスト自動化アーキテクチャはその名の通り、テスト自動化の仕組みを構築するためのアーキテクチャを意味し、テスト自動化が成功するか失敗するかの大きな鍵と言われている。 セッションは、mablのQuality Advocateを務め、TestingやQAの啓蒙活動に取り組むおだしょーこと小田祥平

    テスト自動化成功の鍵「テスト自動化アーキテクチャ」、構築のポイントと考え方とは
  • 個人開発を始めてみよう──「失敗」を避ける大事な考え方とは?

    はじめに BASE株式会社でシニアエンジニアを務めているプログラミングをするパンダ(@Panda_Program)と申します。連載は「フロントエンドカンファレンス沖縄2022」で私が発表した内容[1]を記事として再構成したものです。 対象読者 連載の対象読者は、個人開発に興味があるソフトウェアエンジニアの方です。 個人開発に「失敗」しないための考え方 ソフトウェアの個人開発とは、ソフトウェアエンジニアが自分のプライベートな時間を使ってWebサイトやスマートフォン向けのアプリを作成、公開、運用する趣味活動です。では、記事のタイトルに含まれている「失敗」という語の指す内容とは何でしょうか。連載で私はそれを「学習またはリリースを目的としたときに、その目的が達成できていないこと」と定義したいと思います。 個人開発における最大の意思決定はリリースの有無です。自分が開発したソフトウェアをリリー

    個人開発を始めてみよう──「失敗」を避ける大事な考え方とは?
  • Webフレームワーク「Astro」とは? 開発初心者からベテランまで注目する理由

    はじめに Web制作におけるフレームワークというと、ReactVue.jsなど、エンジニアが効率的に開発を行うために必要なシステムの骨組み、という印象がありますが、Astroは筆者のような、どちらかというとデザイン寄りの制作者でも理解しやすい設計になっており、実体験としてデザインから静的サイトの構築までを一人で完結させるのに有効活用することができました。 もちろんエンジニアの方にとっては、高パフォーマンスなWebフレームワークとして最近注目されているAstroを筆者以上に深く理解し、既存の開発プロセスを改善するヒントにも繋がるのではないかと思います。 現代におけるWebサイト構築のアプローチ 一つのWebサイトを構築しようと思ったとき、現代ではさまざまなアプローチが存在します。 単体、もしくは複数のページをHTMLコーディングする方法から、WordPressに代表される各種CMSをカ

    Webフレームワーク「Astro」とは? 開発初心者からベテランまで注目する理由
  • Gitで継続的デリバリーを実現する「GitOps」とは? 概要とGitOpsソリューションの紹介

    GitOpsとは、分散バージョン管理システムであるGitを使用して、全てのアプリケーションとインフラストラクチャの望ましい状態を宣言的に記述し、管理する手法で、継続的デリバリーを実現する一つのモデルです。連載では、GitOpsを活用した継続的デリバリーやプログレッシブデリバリーについて紹介します。第1回では、GitOpsの概要やメリット、GitOpsを実現するソリューションを紹介します。 はじめに 連載はソフトウェアデリバリーにおける継続的デリバリー・プログレッシブデリバリーについての連載で、以下の3つの記事で構成されています。 第1回となる記事では、継続デリバリーについての概要、話題となっているGitOpsは何か、どんなメリットがあるのか、現在のGitOpsソリューションについて紹介します。 第2回では、プログレッシブデリバリーの解説と各ソリューションの紹介・比較について説明します

    Gitで継続的デリバリーを実現する「GitOps」とは? 概要とGitOpsソリューションの紹介
  • Google Cloud Container Builderでアプリケーションのデプロイと継続的インテグレーションを実現

    連載では、オープンソースのオーケストレーションシステムである「Kubernetes」を用いて、スケーラブルで運用しやすいWebアプリケーションを構築する方法を紹介します。前回はServiceのselectorを使ったBlue-Green Deployment相当の機能を実現する方法と、アプリケーションのバージョンごとにURLを自動で割り当てる機能を実現するため、必要な手順を解説しました。記事では効率的なアプリケーション開発に欠かせない、継続的インテグレーションをするための仕組みについて、その構築方法などを紹介します。 はじめに 継続的インテグレーションを行うための手段として、JenkinsやCircleCなどのさまざまなツールやサービスが存在します。今回は「Google Cloud Container Builder」を使った方法を解説します。 Google Cloud Contain

    Google Cloud Container Builderでアプリケーションのデプロイと継続的インテグレーションを実現
  • Elixir+PhoenixとSpread.Viewsでリアルタイムな出勤管理アプリを作ろう (1/7):CodeZine(コードジン)

    連載では、グレープシティが開発するJavaScriptライブラリ「SpreadJS」の 収録コントロール「Spread.Views」を活用して、IoT時代に役立つさまざまな アプリケーションを作っていきます。今回は、Spread.Viewsのカレンダー機能を使って出勤管理アプリを作ります。 はじめに こんにちは、dotstudio株式会社のn0bisukeです。前回に引き続き、簡単なコードでさまざまなUIの実装を実現できるライブラリ「Spread.Views」を紹介します。 前回の記事「ガントチャートもFacebook風もこれ一つでOK! 多彩なUI表現を可能にするSpread.Viewsを使ってみよう」は、Spread.Viewsの機能を包括的に紹介しましたが、今回からは実際に実務で活用できそうな内容を紹介していきます。 今回の内容 今回は社内の出退勤の管理システムをSpread.Vi

    Elixir+PhoenixとSpread.Viewsでリアルタイムな出勤管理アプリを作ろう (1/7):CodeZine(コードジン)
  • 大規模サービスにおけるオートスケーリングを構成する上で考慮すべきポイント

    予測可能なデータ、また少量のデータを処理するサービスではコンピュータリソースの準備は比較的簡単です。しかし予測が難しい大量のデータを処理しなければならない解析サービスにおいてはコンピュータリソースのオートスケーリングは必要不可欠とも言えます。稿では、大規模解析サービス「KARTE」で採用しているオートスケーリング構成について紹介します。 KARTEでは大きく分けて以下の二種類のサーバが存在します。 ユーザからのHTTPリクエストを処理するWebサーバ メッセージキューにたまったユーザデータをリアルタイムに解析するサーバ これらはマルチクラウドで稼働できるようにIaaSであるGCEで構築されていて、それぞれが異なるオートスケーリング構成をとっています。 稿ではまずオートスケーリングを構成する上で考慮すべきポイントを述べ、その後にそれらのポイントをGCPで実現するための方法について説明しま

    大規模サービスにおけるオートスケーリングを構成する上で考慮すべきポイント
  • DockerでSelenium Gridを構築して複数マシンのブラウザ自動テストを行う

    illustration by iwasawa Selenium Gridとは Seleniumには、複数のマシンで分散してブラウザ操作の自動化を実現するSelenium Gridという仕組みがあります。Selenium Gridを利用すると、Google ChromeやFirefoxやMicrosoft Edge等の多種多様なブラウザを一括で管理することができ、一つのテストスクリプトからクロスブラウザテスティングを行うことができます。 Selenium Gridは、ハブという管理サーバに、テストに必要なブラウザを持つノードが接続する構成をとります。これにより、テスト条件に合うノードが自動的に選択され、利用できるようになっています。 ハブには複数のノードが接続できますので、CI環境のように並列的にブラウザを動作させる必要がある環境でよく利用されています。 Selenium Grid Doc

    DockerでSelenium Gridを構築して複数マシンのブラウザ自動テストを行う
  • “あなたの会社をデータ駆動にする”オープンソースBIツール「Re:dash」でSQL分析結果を可視化しよう

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    “あなたの会社をデータ駆動にする”オープンソースBIツール「Re:dash」でSQL分析結果を可視化しよう
    okinaka
    okinaka 2017/10/18
    [re:dash]
  • Groovy製のSeleniumラッパーライブラリ「Geb」で、可読性の高いテストを書いてみよう

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Groovy製のSeleniumラッパーライブラリ「Geb」で、可読性の高いテストを書いてみよう
  • 英語ドキュメントが読みやすくなるテクニックで仕様書を読んでみる

    たとえ国内で仕事をしていても、IT系の最新情報やドキュメントはほとんど英語のため、英語をすらすら読めるようになったほうがなにかと捗ります。そこで、翔泳社から刊行した『現場で困らない! ITエンジニアのための英語リーディング』よりテクニックを四つ紹介。さらにAPIリファレンスや仕様書などを実際に読んでいきましょう。 重要なテクニックはたった四つ 書『現場で困らない! ITエンジニアのための英語リーディング』で紹介される、英語をすらすら読めるようになるテクニックはたった四つしかありません(もちろん英語の基礎やある程度の語彙は前提となります)。 一つ目は「英語の語順で理解する」。学生時代の名残からか、英語を読むときにどうしても日語のように文章の後ろから前へ戻るように訳してしまいがちです。しかし、これはNG。英語の語順のまま意味を理解していくほうが素早く読めます。 二つ目は「スラッシュ・リーデ

    英語ドキュメントが読みやすくなるテクニックで仕様書を読んでみる
    okinaka
    okinaka 2017/08/18
  • 小説執筆をプログラムで支援する(前編)~各段階におけるソフト編

    企画/プロット まずは、小説を書く以前の段階です。企画をしたりプロットを書いたりするところです。この段階は大きく分けて、「情報を収集/蓄積する」「情報を整理する」「小説の設計図を作る」の3つの作業に別れます。 情報を収集/蓄積する。 情報を整理する。 小説の設計図を作る。 情報の収集/蓄積 情報の収集/蓄積は、大きく分けて「Webから」「から」「リアルから」の3種類に分かれます。 Webから 「Webから」の場合は、Webブラウザを使って情報を検索して収集します。私の場合は「Google Chrome」を利用しています。 Google Chrome Webから情報の収集/蓄積を行なうツールには、「Evernote」のような情報集積ツール、古くは「紙copi」のようなツールがあります。 Evernote 紙copi 私の場合は、こうしたツールを利用せず、調べたWebページのタイトルとURL

    小説執筆をプログラムで支援する(前編)~各段階におけるソフト編
    okinaka
    okinaka 2017/08/01
  • SeleniumとWebDriverの最新事情~標準化が進み、さらに強力なテストツールへ! その影でSelenium IDEは……

    illustration by iwasawa これまでのSelenium さて、最新事情に触れる前に、記事をご覧の皆様は既によくご存知かとは思いますが、あらためてSeleniumとは何か、そして現在の形に至るまでの道をおさらいしておきましょう。 Seleniumは、Webブラウザの自動操作ライブラリです。人間がWebブラウザでやるような手作業を、自動的に再現できます。単純作業の自動化に利用できるほか、一般的な自動テストフレームワークと組み合わせることでEnd to End(E2E)テストの自動化を実現できます。Webアプリケーションのテスト作業で苦労されている方にとっては福音のようなライブラリですが、自動テストコードや実行環境の維持・実行時間などが大がかりになりがちで、利用コストは高めです。回帰テストの自動化など、繰り返し利用が多い用途への適用が特に効果的でしょう。 Seleniumの

    SeleniumとWebDriverの最新事情~標準化が進み、さらに強力なテストツールへ! その影でSelenium IDEは……
  • “Be Lazy”で自動化の第一歩を踏み出そう! マイクロソフトの牛尾氏が語る「DevOpsにおける自動化のコツ」とは【デブサミ2017】

    「ベンダーロックイン」、この単語に良い印象を持つ人は少ないだろう。しかし、無料のツールだけでシステムを構成することが当に正解なのか? 人件費とツール費用を比較した場合、どちらがコスト高になるのか?――米マイクロソフト テクニカルエバンジェリストの牛尾剛氏は疑問を投げかける。そして、優れたツールを賢く使うことで、DevOpsを実現に向けた第一歩が踏み出せること、自動化する際に気を付けるべきポイントを熱弁した。 講演資料:完全ベンダーロックインのDevOps / Microservices でマイクロソフトに貢献しよう! 米マイクロソフト テクニカルエバンジェリスト - DevOps 牛尾剛氏 無料を好んで人件費がかかりすぎ!? 過剰なベンダーロックイン恐怖症から脱却を! 冒頭から「こんなタイトルで人が集まるとは(笑)」と、ハイテンションで登場した牛尾氏。そんな牛尾氏によるセッションのテー

    “Be Lazy”で自動化の第一歩を踏み出そう! マイクロソフトの牛尾氏が語る「DevOpsにおける自動化のコツ」とは【デブサミ2017】
    okinaka
    okinaka 2017/03/31
  • JSフレームワークを使ったHTMLテンプレート利用のススメ

    前回、Webシステムの運用現場では「HTMLの文言、デザインの修正がすぐにできない」「サーバサイドの技術がわからないとHTMLが修正できない」といった問題が生じていることを紹介しました。そして、それらの問題の原因の一つに、PHPでのSmartyやRubyのERBといったサーバサイドテンプレートがある、これらの問題はクライアントサイドでのHTMLテンプレートを使うと解決しやすくなることを説明しました。もっとも、現在フロントエンドエンジニアがチーム内にいない場合には、具体的にはどのような方法がとれるのかがイメージつきにくいと思います。今回は、クライアントサイドでのHTMLテンプレートを使って具体的な方法を紹介します。 対象読者 サーバサイド開発者 フロントエンド開発者 Webアプリ・システム開発に参加する方全般 クライアント側でのHTML生成することの懸念点について 前回、サーバサイドHTML

    JSフレームワークを使ったHTMLテンプレート利用のススメ
    okinaka
    okinaka 2016/12/07
  • ソフトウェア開発を取り巻く自動化ツールの現況と導入のポイント

    ソフトウェアを提供している組織では、テクノロジーの発展とともにその組織内における自動化の可能性がどんどん広がってきました。もちろん、なにを自動化しているかは組織によって異なります。稿では、自動化するためのツールやサービスをソフトウェア開発に焦点をあてて整理し、それらを導入するための戦略を紹介します。 自動化ツールの概要 筆者が自動化するという言葉をソフトウェア開発で初めて聞いたのは、Webブラウザを自動操作したり、ドキュメントを生成したりするものでした。そこからソースコードをバージョン管理、テスト自動化、デプロイ自動化、環境構築自動化と、どんどんいろんなものを自動化できるようになりました。現在ではクラウド環境を利用することで高速に大量のソフトウェアを提供したり、自動化の基盤として利用したりできます。 さまざまなものが自動化できるようになり、それらの自動化の方法はいくつかありますが、現在は

    ソフトウェア開発を取り巻く自動化ツールの現況と導入のポイント
  • Elasticsearchを用いた日本語検索システムの実装

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    Elasticsearchを用いた日本語検索システムの実装
  • Elasticsearchを用いた日本語検索システムの理論と設定

    連載は、対話インターフェースを利用して新しい形の検索システムを体験してもらうことを目的としています。今回は日語検索システムでよく用いられるElasticsearchを紹介します。Elasticsearchは大規模なデータに対しても適用可能な検索機能を提供している全文検索エンジンです。特徴としてスケーラブル、検索速度の速さ、検索結果の分析のしやすさ、開発者にとって使いやすいRESTfulなAPIが挙げられます。今回の記事はElasticsearchを用いた日語検索システムの仕組みから設定の部分までを記述し、次回の記事で実際に動作させてもらいます。 連載の内容 連載で紹介予定の内容は次のとおりです。 Step1:Elasticsearchを用いた日語検索システム 対話型の検索システムを作成するためのStep1として、Elasticsearchを用いた日語検索システムの構築方法を紹

    Elasticsearchを用いた日本語検索システムの理論と設定
  • スループットとは何か ~ 改善に役立つ性能試験を行うための前提知識

    「スループット」という言葉を、どなたも一度は聞いたことがあると思います。主にアプリケーションなどの性能(パフォーマンス)の文脈で使われますが、そのためにはスループットを正しく把握できなければなりません。スループットを正しく把握するためには、そもそもスループットについての正しい知識や理解が必要です。稿では、パフォーマンスの改善に効く性能試験を行えるよう、スループットとは何かを解説します。 負荷試験とは何か パフォーマンス全般の担保を主な仕事とする我ら「まかせいのう[1]」チームにとって、性能試験は頻繁に実施するタスクの1つです。性能試験と一口にいっても色々と種類がありますが、システムの性能を担保するうえで最も重要になるのがEnd-to-Endの負荷試験です。 End-to-Endとは「フロントエンドからバックエンドまで、ユーザから実行された処理が通過するシーケンスすべてのコンポーネントを範

    スループットとは何か ~ 改善に役立つ性能試験を行うための前提知識
    okinaka
    okinaka 2016/09/26
  • PHP 100%の私たちがScalaによるシステムのマイクロサービス化に踏み切ったわけ

    スマートフォンアプリを紹介する「Appliv」は、日国内で月間600万ユーザーが利用し、海外10か国でも展開されている有力Webメディアだ。その開発・運営会社であるナイル株式会社は、PHPで組んできたApplivシステムに限界を感じ、昨年から主軸の開発言語をScalaに切り替え、アーキテクチャもマイクロサービス化に踏み切った。しかし、サーバーサイドJavaによるサービス運営の経験はゼロ。マイクロサービスによる設計ももちろん初めてだ。稿では、そんな同社が果敢にもPHPからScalaへの移行に挑み、サービスインするまでの過程を紹介する。(編集部) 技術的負債に窮する 弊社ナイルは、「Appliv」というスマートフォンアプリを見つけやすくするWebサービスを、2012年8月より運営しています。現在、世界10か国で展開しており、規模としては国内のWeb版だけで月間600万UU(ユニークユーザー

    PHP 100%の私たちがScalaによるシステムのマイクロサービス化に踏み切ったわけ
    okinaka
    okinaka 2016/05/27
    はまりどころは想定内。Scala にも辛いところはいろいろある。