タグ

ブックマーク / thinkit.co.jp (17)

  • ロバストネス図を活用したシステム設計

    ロバストネス図とは 今回のテーマは「ロバストネス図」です。ロバストネス図とは、ロバストネス分析を行った結果のアウトプットとなります。ロバストネス分析とは、スリーアミーゴス(ソフトウェアの分野における統一モデリング言語(UML)を開発した3人)の1人であるイヴァー・ヤコブソンが提唱した分析手法で、システムを「バウンダリ」「エンティティ」「コントロール」の3つに分けて分析し(これらについては後述します)、要求モデル(ドメインモデル、ユースケースモデル)をロバスト(堅牢、強靭)にします。 ロバストネス図はUMLで定義されている13種類のダイアグラムには入っていませんが、UMLのコミュニケーション図やコラボレーション図を簡略化した形で簡単に書くことができます。ロバストネス図を書くことで要件の振る舞いが整理され、実装すべき点を明確にできます。 ユースケースシナリオを作成する ロバストネス図のインプッ

    ロバストネス図を活用したシステム設計
  • 開発者のためのソフトウェアテストのスキルアップ | Think IT(シンクイット)

    はじめに ここまで、さまざまなソフトウェアテストの考え方や種類を紹介してきました。開発者がソフトウェアテストを活用していくなかで、「どのように問題を分割してすすめて行けば良いのか」と「どのようなテストケースを選択するのか」という2つの課題は筆者に多く相談がきます。 今回は、この2つの課題に対して、どのような方法で自らのスキルを上げて行けば解決できるのかを解説します。具体的には、前者には「Mikadoメソッド」を、後者には「テスト技法」を活用します。 筆者がよく耳にするソフトウェアテストの課題 開発者がTDDやテスト設計に取り組む際、筆者はよく次のような課題を耳にします。 どのように問題を分割するのか問題に対してどのようなテストケースを選択するのか 「どのように問題を分割するのか」とは、TDDやテスト設計において「開発対象をどのような問題に分割してテストを作れば良いのかわからない」といった課

    開発者のためのソフトウェアテストのスキルアップ | Think IT(シンクイット)
  • VirtualBoxやVagrantを用いたRails開発環境の構築方法(前編)

    Vagrantを利用したRails開発の進め方 留意事項 Vagrantの利用を始めるとRails開発の考え方や進め方が大きく変わります。具体的な作業手順の説明に入る前に、留意事項を2つ述べておきます。 第1の留意事項は、Railsアプリケーション開発プロジェクトごとに別々の仮想マシンを作るということです。仮にプロジェクトAとプロジェクトBが同一のOSを標的にしていたとしても、原則として別々の仮想マシンを動かしてそこで開発を進めます。 第2の留意事項は、Vagrantの設定ファイルVagrantfileおよびそれに付随するファイル(プロビジョニングスクリプトなど)は開発チーム全体で共有するということです。もし、あなたのチームがGitやMercurialやSubversionなどのバージョン管理システム(SCMツール)を利用していれば、それらをリポジトリに加えましょう。あなたが独力で開発して

    VirtualBoxやVagrantを用いたRails開発環境の構築方法(前編)
  • Dockerの導入前の設計、CentOS 7.xとDockerのインストール

    いよいよ、Dockerの導入前のOSレベルでの設計、さらに具体的な導入に入ります。DockerLinux OSにインストールする手順自体は非常に簡単ですが、導入前の基設計を怠ってはいけません。Dockerを導入するにあたって、採用すべきOSのファイルシステムや、パーティションに関する基的な知識を習得しておく必要があります。ここでは、Dockerをインストールする前段階での、ハードウェアに関する様々な留意点を概要レベルで紹介します。また、Dockerをインストールする前段階で知っておくべき各種パラメータと初期設定、Dockerのインストール手順を紹介します。 物理サーバーのCPUに関する留意点 2015年8月下旬現在、最新のDockerでは、64ビットのx86アーキテクチャのサーバーシステムやPCで稼働させることができます。CPUの動作周波数などに特に制限事項はありませんが、まずは、D

    Dockerの導入前の設計、CentOS 7.xとDockerのインストール
  • 自動化・省力化のためのSerf入門

    Serfが必要とされる理由 複数のサーバ環境上で、一斉にセットアップ用やデプロイ用のコマンドを実行したり、バージョン番号の確認を行ったりするためには、どのような方法が最適でしょうか。管理対象が数台程度であれば、毎回手打ちでSSHログインを実行し、コマンドを実行する方法もありでしょう。 しかし、その作業が同じ手順の繰り返しである場合や、システムにおける作業対象が十数台~数百台まで増えたとしたらどうでしょう? 人の手で行うとなると、作業にかかる時間が増える上に、作業ミス発生のリスクも高まります。ミスを防ぐためには、チェックの仕組みも必要となります。たとえそれが単純な作業だったとしても、システム全体としては非常に面倒なものになりがちです。 このような問題を解決するためのツールとして、parallel-sshが挙げられます。parallel-sshは名称の通り、ある環境上から対象となるサーバ群に対

    自動化・省力化のためのSerf入門
  • 巷で話題のDockerとは?

    Dockerが利用される背景 今、世界中の開発者やIT部門において「Docker」(ドッカー)が注目されています。もともと、DotCloud社(現 Docker Inc.)が、開発者やIT部門をターゲットとしたアプリケーションやOSの開発・配備を行うための基盤ソフトウェアとして開発され、2013年にリリースされました。このソフトウェアは、オープンソースソフトウェアの「Docker」として公開され、その使い勝手の良さから、多くの開発者、IT部門の管理者で瞬く間に利用されることになりました。Dockerは、仮想化ソフトウェアにみられるような性能面での劣化を極力排除したコンテナ技術の採用により、仮想化ソフトウェアに比べ、極めて集約度の高いITシステムを実現することができます。しかし、このDockerが注目される理由は、ハイパーバイザー型の仮想化ソフトウェアに比べてのハードウェア資源の消費や性能劣

    巷で話題のDockerとは?
  • 開発環境の構築・共有を簡単にするVagrant入門

    Vagrantとは? Vagrantは、開発環境の構築と共有を簡単に行うためのツールです。どこでも同じ環境を再現できるように仮想マシン環境を管理する機能と、Atlasを通して共有する仕組みが提供されています。 VagrantとAtlasの関係 Vagrantは、アプリケーションやシステム開発のバックエンドを簡単にパッケージ化し、共有するためのツールです。このパッケージ化された環境を、「box」と呼ばれる単位で管理します。このboxには、標準で対応しているVirtualBoxをはじめ、AWSなどの各種マシン・イメージに対応したプラグインを介してアクセスします。またboxを共有するための機能としてAtlasという名前のインターネット上のサービスが提供されています。なお、Atlasは以前VagrantCloudと呼ばれていたものですが、現在はHashiCorpの他のツール(Packer、Terr

    開発環境の構築・共有を簡単にするVagrant入門
  • [ThinkIT] 第2回:負荷によるベンチマークを試す (1/3)

    max_connectionsとは、「MySQLサーバが許可する、MySQLクライアントの同時接続最大数」です。この値は、MySQLクライアントから無制限にコネクションが張られることによってMySQLサーバの負荷が増大し、最終的にはサービスが停止してしまう…といった事態を防ぐために、同時接続してよいMySQLクライアントの数を制限することが目的です。 さらにもう少しパフォーマンスに注目していい換えれば、MySQLサーバがもっとも良い効率で稼動できる範囲にMySQLクライアントの接続数を制限する、ということになります。 あなたの環境ではいくつに設定されているでしょうか。パラメータ設定一覧を取得するコマンドは「第1回:定量的な情報収集のススメ」で説明した通りですので、以下のように実行してみましょう。 特に意識して設定を変更していなければ、上記のようにデフォルト値である100が表示されるはずです

  • 高可用性とデータ・シャーディングを実現できるMySQL Fabricとは?

    MySQL Fabricは、MySQLサーバー群を管理する統合型のフレームワークです。MySQL Fabricを使うことにより、高可用性(HA)とデータ・シャーディングによる拡張性を実現できます。 MySQLのレプリケーション機能を使って高可用性構成を実現している場合、マスターのサーバーに障害が発生した時に、スレーブのサーバーを新しいマスターに昇格させるフェイルオーバー処理が必要になります。このフェイルオーバー処理を自動化するために、MySQL 5.6ではMySQL Utilities(※)にmysqlfailoverという機能が追加されました。 ※MySQL Utilitiesは、Pythonでかかれた便利なスクリプト集です。詳細は以下の記事も参考にして下さい。 [参考]Pythonで作られた便利なコマンドラインツール MySQL Utilities mysqlfailoverを使うこと

    高可用性とデータ・シャーディングを実現できるMySQL Fabricとは?
  • VirtualBoxやVagrantを用いたRails開発環境の構築方法(前編)

    実践Ruby on Rails 4 現場のプロから学ぶ格Webプログラミング 顧客管理システムの構築を体験しながら、Railsアプリケーション開発のノウハウを習得! この記事は、書籍『実践Ruby on Rails 4 現場のプロから学ぶ格Webプログラミング』の内容を、Think IT向けに特別にオンラインで公開しているものです。詳しくは記事末尾の書籍紹介欄をご覧ください。 記事では、VirtualBoxとVagrantを用いて仮想マシン上にRailsの開発環境を整える手順を解説します。仮想マシンのOSにはCentOSまたはUbuntu Serverを使用します。また、データベース管理システムとしてMySQLとPostgreSQLを仮想マシン上にインストールします。 仮想マシンを利用したRails開発 書ではCentOSまたはUbuntu ServerをインストールしたVirtu

    VirtualBoxやVagrantを用いたRails開発環境の構築方法(前編)
  • 1ランク上のPHP技術者を目指す人のための教材と、勉強のポイント

    世界中で構築されたWEBサイトが2億5000万を超えるといわれているPHP。その秘密は言語習得の手軽さやCMSパッケージの発達により、初心者にも気軽に高機能なシステムが扱えることにあります。 WordPressやMovableTypeとの連携、OpenPNEなどはもはや語る必要もないくらいに有名になりました。 ちょっとしたCGIやネットショップはもちろん。ネットベンチャーやソーシャルゲームでも手軽に使われ、開発者の数もプログラミング言語の中で非常に高い位置を占めています。 そんなPHPですが、「PHPエンジニアのスキルが低い」「PHPはだめだ」といわれることが多々あります。なぜでしょうか。 気軽に利用できるが故にスキルレベルが低いエンジニアが多いのも事実ですし、さらに言うと前述のパッケージ等があるためにエンジニアでない人でも触ることができるからです。また、言語としての特性もかなり自由で、型

    1ランク上のPHP技術者を目指す人のための教材と、勉強のポイント
  • Phalconを使う前に知っておきたい、各機能とインストール方法

    はじめに PHPは最も使われているサーバーサイドスクリプト言語の一つですが、スマートフォンアプリ開発の現場などにおいても、サーバーサイド言語にPHP5.5とPHPフレームワークのPhalconを使った製品開発に使用されています。 今回は実際に開発で今まで得られた経験なども交えつつ、Phalconを使った具体的な開発についてご紹介します。 対象となる読者 PHPの一般的な知識をお持ちの方 CakePHPなど、他のPHPフレームワークを用いた開発の経験をお持ちの方 フレームワークを使うメリット 今回ご紹介するPhalconをはじめとして、PHP開発ではフレームワークを用いた開発をよく見かけます。 もちろん、PHPのみでコーディングを進めることもできますが、開発フレームワークを導入する利点としては チーム開発が楽になる MVC分離やコントローラー単位などチーム開発を行う上で分業しやすくなる 予め

    Phalconを使う前に知っておきたい、各機能とインストール方法
  • Pythonで作られた便利なコマンドラインツール MySQL Utilities

    MySQL Utilitiesならではの注意点 MySQL Utilitiesは従来のコマンドラインツール群とは違い、以下のような記述で接続先を指定します。 これは、従来のコマンドラインツール群が主に1つのMySQLサーバーを対象として動作するものなのに対して、MySQL Utilitiesは2つ以上のMySQLサーバーを対象として動作するものが多いため、このような記法になっています。 [MySQL Utilitiesの記法] --server=ユーザ名:パスワード@ホスト名:ポート番号 [MySQL コマンドラインツール群の記法] --user=ユーザ名 --password=パスワード --host=ホスト名 --port=ポート番号 なおWindows環境ではローカルホストとしてlocalhostと127.0.0.1のどちらを指定しても同じですが、LinuxやUNIXではホスト名に対

    Pythonで作られた便利なコマンドラインツール MySQL Utilities
  • DBサーバーの負荷分散

    MySQLアクセスを負荷分散する ユーザーからのアクセス数が非常に多いWebサイトにおいて、MySQLのSLAVEサーバーを複数台並べて負荷分散させるということがよく行われています。ただ、Webアクセスの負荷分散は一般的なテーマなのでいろいろなところで語られているのに対し、DBアクセスの負荷分散というテーマは一般的でないのかあまり語られていないように感じます。 DBアクセスを負荷分散するにあたって一番荒っぽい方法は、Webサーバー上のプログラムの中でどのSLAVEサーバーに接続するかをランダムで決める方法です。ランダムと言っても長時間アクセスしているとほぼ接続先が均等化されるので、一見この方法でも問題ないように見えます。しかしこの方法だと、接続しに行こうとしたSLAVEサーバーが高負荷もしくはサービス停止中であっても構わず接続しに行ってしまうという問題があります。 このような問題を解決する

  • RESTなWebサービスを作ってみる

  • これからはじめるRuby on Rails

    はじめに Rubyと出会ったころ、その簡潔さに感動した著者は、「ここまで自然言語に近い形でプログラムが書けるのであれば、インターネットとPCの違いすら理解しないでも、少しはプログラミングができるようになるかもしれない」と、家庭での普及に挑戦したことがあります。 その試みは、渡した入門書を「はじめてのRUBAI」と読まれた時点で頓挫したわけですが、その経験から「Rubyの文法に従ってはいるが、何やら他言語の匂いを感じるコード」のことを、Rubyの潜在力を生かしきれていないという意味で「RUBAIコード」と呼ぶことにしました。 そして、社内のさまざまな分野のプログラマにRuby開発を指導してみて分かったのは、"RUBAIコード"には、実装レベルの間違いと、設計レベルの間違いがあるということです。 実装レベルの間違いとは、処理を他言語の習慣に従って記述することで引き起こされます。Javaプログ

  • [ThinkIT] いまさら聞けないTomcat~JSPサーバ構築のキソ

    Tomcatマスターになるために HTTP/HTMLを用いた静的ドキュメントの交換という目的からスタートしたインターネットは、産業や社会のコミュニケーションやパーソナライズされた情報を扱う媒体として発展してきています。こうした流れの中で、インターネットはリアルタイムのコンテンツ更新を求められるようになってきました。 検索エンジンや掲示板などはその一例です。こうしたWebアプリケーションを実現するためには、HTTPを介してリクエストを受け取り、リクエストに応じた処理を行った結果(動的コンテンツ)をリクエスト元に返す仕組みが必要になります。 動的コンテンツ提供のための仕組みの1つが「サーブレット/JSP」です。サーブレット/JSPは、Sun Microsystems(以下、Sun)によって開発されたサーバサイドのJava技術であり、オブジェクト指向に基づくプログラムの部品化の実現や、豊富なクラ

  • 1