タグ

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

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

    2024年7月25日紙版発売 2024年7月25日電子版発売 柴田芳樹 著 A5判/208ページ 定価2,860円(体2,600円+税10%) ISBN 978-4-297-14293-3 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto このの概要 書は,著者が1993年から約30年間経験してきたAPI仕様の作成,2003年から20年間経験してきたテストファースト開発/テスト駆動開発の知見をまとめたものであり,一般的なソフトウェア開発者が習得することが容易ではない事柄を,書を通して学び,実践してもらうことを目的としています。 書が提唱する「API仕様ファースト開発」はWebサービスにおける大域的なテスト駆動開発の

    Web API設計実践入門 ――API仕様ファーストによるテスト駆動開発
  • 第8回 脆いテスト ~継続的な変更と改善を阻むテストの原因と対策~ | gihyo.jp

    連載の主なテーマは、信頼できる実行結果にできるだけ短い時間でたどり着く自動テスト群の構築です。連載の区切りとして、なぜ自動テストを書いてメンテナンスしていくのか、そしてそれに立ちはだかる「脆いテスト」(⁠fragile test)について整理します。 自動テストを書く動機 自動テストを書く動機には、不具合混入を防止する、問題箇所の絞り込みを容易にする、動く仕様書やサンプルになるなどいろいろありますが、最大の動機は、変化を抱擁し、ソフトウェアの成長を持続可能なものにすることだと筆者は考えています。 ソフトウェアを取り巻く世界は変わりました。ソフトウェアは世界を飲み込み、事業と一体化しました。事業を取り巻く市場もエンドユーザーのニーズも刻々と変化する時代においては、より速く、より安全に変化する力が求められます。コードを変更しなければ動き続けることが期待できる時代ではもうなく、決められたものを

    第8回 脆いテスト ~継続的な変更と改善を阻むテストの原因と対策~ | gihyo.jp
  • 第3回 テストサイズ ~自動テストとCIにフィットする明確なテスト分類基準~ | gihyo.jp

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

    第3回 テストサイズ ~自動テストとCIにフィットする明確なテスト分類基準~ | gihyo.jp
  • Python最新バージョン対応!より良い型ヒントの書き方 | gihyo.jp

    寺田 学です。9月の「Python Monthly Topics」は、Python 3.5で導入され、多くの場面で活用されている型ヒント(Type Hints)について、より良い型ヒントの書き方を紹介します。 Pythonの型ヒントとは Pythonは動的型付け言語です。型を指定せずに変数宣言できますし、関数の引数や戻り値に型を宣言する必要はありません。 Python 3.5(2015年9月リリース)で型ヒントの仕組みが入りました。型の指定が不要なPythonですが、型ヒントを付けることで、「⁠コードの可読性向上⁠」⁠、「⁠IDEコード補完の充実⁠」⁠、「⁠静的型チェックの実行」といった静的型付け言語のようなメリットを得ることができます。 Pythonの型ヒントは以下のように記述します。 name: str = "氏名" # 変数nameをstr型と宣言 def f(arg: int) -

    Python最新バージョン対応!より良い型ヒントの書き方 | gihyo.jp
  • 第6回 何も持たない | gihyo.jp

    最適化 エンジニアは最適化が好きだ。今動いているものを速くしたり、効率を良くしたりすると気持ち良い。問題点を発見し改善するプロセス自体が刺激的なのだ。そういう考え方が癖になっているので、プログラミング以外の日常でも同じようなことが起きる。今回はそんな話である。 何も持たない 何も持たない。ここ数年流行っている断捨離のことではない。できるだけ持ち歩くものを減らそうという個人的なキャンペーンのことだ。きっかけはサンフランシスコから東京に戻ってきたこと。よく歩くようになった。毎日の通勤、日々の買い物、おでかけ。意外と歩くことが多い。Apple Watchでトラッキングしているが1日5km歩くことも珍しくない。 そんなある日、息子の遠足用のパックパックを買い、とても驚いた。バックパック自体が想定外に軽いのだ。遠足・山登り用なので軽いのは当たり前なのだがそれにしても軽い。そして十分に機能的であった。

    第6回 何も持たない | gihyo.jp
  • 運用でカバーするシステムから、想定の範囲内でまわせるシステムへ | gihyo.jp

    こちらが何を聞いても、一事が万事この調子です。その後、スケジュールに押し切られる形でシステムはリリースされ、現場は火の海となりました。 鳴りやまない監視アラーム…… 対処方法のわからない障害…… 使い道のわからない体裁だけ整った手順書の数々…… 右往左往する運用メンバーと構築メンバー…… 結局、運用が安定するまで半年以上の期間がかかりました。 その頃は「運用設計」という言葉も概念もまだ浸透しておらず、残業によるマンパワーで運用を安定稼働させるしか術はありませんでした。 (この時にこのがあったら、どれだけ指標になったかと今なら思います⁠)⁠。 運用を取り入れた設計構築へのチャレンジ この経験から、運用が大変な理由の諸悪の根源はシステムリリース時にあると考え始めました。いま思えば、初めに入った楽園のような現場は、目的のはっきりした手順書しかなく、トラブル時の連絡先も明確でした。“⁠楽園システ

    運用でカバーするシステムから、想定の範囲内でまわせるシステムへ | gihyo.jp
  • 2017年のCI/CDの動向 | gihyo.jp

    あけましておめでとうございます。ソフトウェア開発をめぐる環境は相変わらず日進月歩です。この変化に伴って、ソフトウェア開発そのもののあり方も変化を続けています。稿では、少し大きな視点から継続的インテグレーション(CI⁠)⁠・継続的デリバリ(CD)の最近の動向を紹介します。 CI/CDの大きなうねり 筆者がJenkinsに携わって12年になります。かつて、CI/CDの取り組みは、現在の機械学習やスケールアウト技術のような将来の可能性が注目される若い技術でした。ここ数年、この若い技術は、広く産業界で大規模に組織がかりで展開される成熟した技術に変貌してきました。 この背景にあるのは、ソフトウェア開発・運用全般における自動化のさらなる浸透です。このような自動化の進展は2つの側面から考えることができます。一つは、ソフトウェア開発に必要な様々な作業それぞれの「部品の自動化」という側面です。もう一つは、

    2017年のCI/CDの動向 | gihyo.jp
  • 徳丸浩さん、安全なPHPアプリケーションの作り方2016~PHPカンファレンス2016 | gihyo.jp

    2016年11月3日にPHPカンファレンス2016が開催されました。稿では、ゲストスピーカーである徳丸浩さんのセッション「安全なPHPアプリケーションの作り方2016」についてレポートします。 最近のPHP関連の脆弱性 徳丸さんはセッションを通して、PHP関連の脆弱性の話を取り上げていきました。 Joomla!の事例 Joomla!の権限昇格脆弱性についての話がありました。次の2つの問題を含んでいました。 ユーザ登録時に管理者権限を設定されてしまうという問題 ユーザ登録を許可していない設定にしてもユーザ登録が行えてしまうという問題 徳丸さんはこれらのデモを行い、攻撃の流れを見せました。 原因としては登録のメソッドが2つ存在し、そのうちの一方がユーザ登録許可の設定を確認していないことが問題となっていることを指摘しました。対策としては、開発側は該当メソッドの削除、利用者側はバージョンアップを

    徳丸浩さん、安全なPHPアプリケーションの作り方2016~PHPカンファレンス2016 | gihyo.jp
  • 和田卓人さん、PHPで堅牢なコードを書く—例外処理、表明プログラミング、契約による設計 〜PHPカンファレンス2016 | gihyo.jp

    PHPカンファレンス2016 レポート 和田卓人さん、PHPで堅牢なコードを書く—例外処理、表明プログラミング、契約による設計 〜PHPカンファレンス2016 2016年11月3日にPHPカンファレンス2016が開催されました。稿では、ゲストスピーカーである和田卓人さんによる講演「PHP7で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計」についてレポートします。 PHP7では例外や表明の機能が大幅に見直され、強化されました。この講演では、例外処理を設計する際の基的な考え方や、表明(assertion)の使い方、そして表明と例外を使い分け、堅牢なコードに導くための設計手法「契約による設計(Design by Contract⁠)⁠」の考え方を説明しました。 導入 はじめに、和田さん自身が監訳に関わった『SQLアンチパターン』に掲載されているコードを、よりひどくさせた

    和田卓人さん、PHPで堅牢なコードを書く—例外処理、表明プログラミング、契約による設計 〜PHPカンファレンス2016 | gihyo.jp
  • 第3回 Vue.jsでコンポーネント開発 | gihyo.jp

    はじめに 第3回では、Vue.jsのコンポーネントの基的な作成の仕方と使用方法を紹介します。 Vue.jsは、UIをコンポーネント化する仕組みを持っています。HTMLCSSJavaSciptで構築されたUIの再利用性が高まり、カプセル化されて開発で意識すべき範囲を限定できるようになります。今回の記事が、プロジェクトVue.jsを導入する際のコンポーネント設計のイメージをつかむ助けになれば幸いです。 Vue.jsのコンポーネント指向 Vue.jsのコンポーネント指向について Vue.jsのコンポーネントは、大まかにWeb ComponentのCustom Elementsの仕様に沿って設計されています。コンポーネントは、定義したタグ名で親となるコンポーネントのHTML上に記述できます。 大規模なアプリケーションを作成する際は、コンポーネントをツリー状に構成してわかりやすく設計すること

    第3回 Vue.jsでコンポーネント開発 | gihyo.jp
  • 第2回 Vue.js基礎文法最速マスター | gihyo.jp

    第2回では、Vue.jsの基礎文法について、駆け足で紹介します。 Vue.jsは、ビューの領域にフォーカスしたシンプルなライブラリです。そのため、他のライブラリとの連携や、既存のプロジェクトへの導入も容易です。今回の内容を通して、自身のプロジェクトVue.jsを導入するきっかけにしてください。 記事の内容は、Vue.jsがロードされたjsfiddleにアクセスして、コードを入力することで試せます。詳しい文法について知りたい場合は、公式のガイドやAPIリファレンスを参照してください。 Vueインスタンスとデータバインディング Vue.jsで基になるのは、Vueコンストラクタから生成されるインスタンスです。 var vm = new Vue({ el: '#example', // document.getElementById('example'), $('#example')[0] も

    第2回 Vue.js基礎文法最速マスター | gihyo.jp
  • 第1回 プログレッシブフレームワーク Vue.js:Vue.js入門 ―最速で作るシンプルなWebアプリケーション|gihyo.jp … 技術評論社

    Vue.jsとは Vue.js(ビュージェイエス)は、インタラクティブなUIを構築するためのJavaScriptライブラリです。Webサイト内のウィジェットや管理画面のダッシュボードといったビュー(view)層に特化しています。設計の特徴としてMVVMパターンに影響を受けています。 Vue.jsは2013年にEvan You氏の個人プロジェクトとして開始、2014年2月にバージョン0.8が正式に公開されます。その後いくつかのリリースを経て、2015年4月にLaravelへの標準搭載決定を機に一気に知名度があがりました。2015年10月に1.0が、2016年10月1日(日時間)に2.0がリリースされ現在に至ります。 Vue.jsの主な特徴には以下のものがあります。これらによって短期間で実用的なアプリケーションを作成できるため人気を集めています。 シンプルなAPIHTMLベースの平易なテン

    第1回 プログレッシブフレームワーク Vue.js:Vue.js入門 ―最速で作るシンプルなWebアプリケーション|gihyo.jp … 技術評論社
  • オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方

    2016年9月2日紙版発売 2016年9月2日電子版発売 Sandi Metz 著,髙山泰基 訳 B5変形判/304ページ 定価3,608円(体3,280円+税10%) ISBN 978-4-7741-8361-9 Gihyo Direct Amazon 楽天ブックス 丸善ジュンク堂書店 ヨドバシ.com 電子版 Gihyo Digital Publishing Amazon Kindle ブックライブ 楽天kobo honto 書のサポートページサンプルファイルのダウンロードや正誤表など このの概要 オブジェクト指向設計の名著として名高い“Practical Object-Oriented Design in Ruby”,待望の翻訳版!使いこなせるようになるととても便利なオブジェクト指向ですが,「なんとなく」の理解で使っていると,大きな罠にかかってしまいます。書は,保守性を上げて

    オブジェクト指向設計実践ガイド ~Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方
  • 第1回 Webセキュリティのおさらい その1 | gihyo.jp

    はじめに みなさんこんにちは、セキュアスカイ・テクノロジーのはせがわようすけと申します。 周知のとおり、ここ数年のブラウザの機能強化は目覚ましいものがあり、CSS3やSVGを含むHTML5ブーム以降のブラウザ内での表現力の向上や、JavaScriptエンジンの最適化による実行速度の向上は、数年前では考えられないような目を見張るものがあります。また、HTML5の仕様策定後の現在でも、WHATWGやW3Cではさまざまな議論が継続的に行われており、これまでブラウザ上に存在しなかったような多様なAPIの仕様が生み出され、各ブラウザに日々実装されています。 利用者視点だけでなく、以下のような開発者視点での需要に応えるフロントエンド開発環境の改善も、ここ数年でかつてないほど大きく進んでいます。 CoffeeScriptやTypeScriptに代表されるaltJSと呼ばれる言語処理系の登場 ES2015

    第1回 Webセキュリティのおさらい その1 | gihyo.jp
  • OWASP ZAPではじめる2016年のウェブアプリケーションセキュリティ | gihyo.jp

    新年明けましておめでとうございます。昨年は年金機構への標的型攻撃による個人情報の漏えいを筆頭に、セキュリティに関する報道が毎日のように世間を騒がしていました。特にウェブにおいてはHTTP.sysの脆弱性やFlashの脆弱性などが発見されたり、継続して標的型攻撃やパスワードリスト攻撃などの攻撃も繰り返されています。 ウェブの普及に伴い、攻撃を受ける可能性のあるインタフェースが増加し、その攻撃対象も企業から個人まで幅広くなりつつあります。これらの攻撃による情報漏えいやインシデント等の発生から身を守る術、すなわち情報セキュリティを身につけ、自らの情報を自らの手で守り抜くことが求められています。全ての人にとって情報セキュリティへの理解を深めることは課題であると言えます。 OWASPとは このような背景の下、ウェブアプリケーションを作成する開発者や、ウェブアプリケーションに関わる意思決定を行う方々に

    OWASP ZAPではじめる2016年のウェブアプリケーションセキュリティ | gihyo.jp
  • 第1章 Go言語の特徴と環境構築―Googleが作った新言語 | gihyo.jp

    特集のはじめに Goは、2009年にGoogleにより発表されたオープンソースのプログラミング言語です。C言語の開発者Ken Thompson、UTF-8の開発者Rob Pike、memcachedの開発者Brad Fitzpatrickといった名だたるエンジニアによって開発されています。 Goはシンプルな言語仕様であるため学習が比較的容易で、豊富な標準パッケージが同梱されているためすばやく目的を達成できます。また、巨大なコードでも高速にコンパイルできるため大規模開発にも適しており、Windows、OS X、Linuxなどの環境に合わせた実行ファイルを生成するクロスコンパイルのしくみがあるため作成したプログラムを容易に配布できます。並行処理のサポートも充実しており、ミドルウェアの開発などにも適しているとされています。 特集では、2014年6月にリリースされた最新バージョンであるGo 1.

    第1章 Go言語の特徴と環境構築―Googleが作った新言語 | gihyo.jp
  • 第6回 MySQLチューニング(5) パラメタチューニングの基礎 | gihyo.jp

    max_connections 最大接続数は通常システムの要件から算出して行きます。システムとして想定される同時接続数を見積もり、そのうちデータベースまで到達するリクエストの比率、それぞれのデータベースでの処理時間を待ち行列理論に照らして考慮します。データベースに到達する同時リクエスト数が同じだとしても、処理時間が違う場合はデータベース内で同時に実行されている処理の件数も違ってくるため、同時接続数も違ってきます。注意すべき点は、システム開発の早い段階では見積もりの精度が高くないため、ある程度余裕を持たせた設計で始め、かつ段階的に見積もりの精度を高めていくことが求められることです。 接続が切断されるとMySQLサーバ内の接続スレッドも破棄されます。コネクションプーリング機能を使用していない環境では、接続による接続スレッドの生成と切断による切断スレッドの破棄が繰り返され、オーバーヘッドとして無

    第6回 MySQLチューニング(5) パラメタチューニングの基礎 | gihyo.jp
  • 第1回 JavaScriptの基礎を見直す | gihyo.jp

    連載のはじめに みなさんこんにちは、今回より「聞いたら一生の宝、プログラミングの基礎の基礎⁠」⁠ の連載を担当させていただく橋佑介です。 記事では、広く利用されている技術から新しい技術まで、基的な部分を現場のエンジニアの声を取り上げつつ解説していきます。習得している方にとっては振り返りとなり、また今から学ぶ方にとっては同じ疑問にぶつかった方の意見が参考になれば幸いです。 現場のエンジニアの声は私が開発に携わっている技術系QAサイトteratailから抜粋しています。 第1回では、現在では様々な環境で利用されているJavaScriptの基礎をteratailの初心者投稿とともに振り返っていきます。 JavaScript JavaScriptは主にウェブブラウザを実行環境とし、動的なウェブサイト構築などに利用されてきました。 また、今ではNode.jsをサーバサイドで利用することが増え、

    第1回 JavaScriptの基礎を見直す | gihyo.jp
  • 第5回 そろそろサーバを弄りたい | gihyo.jp

    過去の日記を読み返していて、あることに気づいた。 今日までに、俺がAWSでやってきたこと。 オンプレ時代であれば、サーバをラッキングして、電源を入れ、ネットワーク機器をケーブルでつないだ事くらいしかやっていない。サーバに至っては、電源を入れて、SSHで接続して、pingを打っただけ。 クラウドという環境に初めて触れて、すごいことをしている気分だったのに、改めて考えてみると、すごく単純作業しかしていないことに気づいてしまった。でも、今までであれば、必ずデータセンターに行って作業していた事が、手元ですぐに完結するというのはすごい。それは俺がすごいんじゃなくて、AWSがすごい。 とはいえ、俺も何もしていないわけではなくて、ネットワークを作ったり、サーバを立ち上げたりするのをいかに早くできるかというのを反復練習していたわけで、今となってはネットワークを構築して、サーバを起動するくらいなら30分もあ

    第5回 そろそろサーバを弄りたい | gihyo.jp
  • PHP処理系の未来 | gihyo.jp

    PHPユーザーの皆様、あけましておめでとうございます。稿ではPHPとHHVMの2つのPHP処理系について紹介します。今後のPHPのトレンドを占うのにお役立ていただければ幸いです。 PHPの現在 稿執筆時のPHPの最新バージョンは5.6.4です。最近のPHPはマイナーバージョンアップを1年ごとに繰り返すスタイルになっており、PHP 5.6.0はPHP 5.5.0から14ヶ月後の2014年8月にリリースされました。PHP 5.6ではphpdbgという新デバッガが同梱されるようになるなど注目点もありましたが、過去のバージョンアップに比べると変化が小さいバージョンアップでした。 ところで、PHPの次のバージョンアップではメジャーバージョンアップを予定しており、バージョン番号としては7.0となります。メジャーバージョンが5から7へと一気にジャンプするのは珍しい現象ですが、過去に開発中止となったP

    PHP処理系の未来 | gihyo.jp