パターンについて - 「ソフトウェアアーキテクチャ ソフトウェア開発のためのパターン体系」

前回の日記にも書いた通り設計強化月間としてまずはこの本を読んでいます。

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

それでちょうと1章分読み終わりましたし内容的にも1章ごとにまとめやすそうなので、この本は1章ずつちゃんとアウトプットしていってみようかなとw
で、早速本題といきたいところなのですが設計についてオススメの本を聞く時に「アーキテクチャ」という言葉を使って聞いたのですが、正直に曖昧な理解のまま使っていたのでしっかりとツッコミが入り、そりゃダメですよねーと調べたので「アーキテクチャ」についても簡単にまとめたいと思います。と言っても僕が調べたのは下記の3つだけで実際にはもっと色々あるようです。

コンピュータ・アーキテクチャ
コンピュータ(ハードウェア)に関する基本設計や設計思想。
ソフトウェアアーキテクチャ
ソフトウェアに関する基本設計や設計思想。これが今回知りたかった部分。
システムアーキテクチャ
ハードウェアとソフトウェアを合わせた構成などの設計に関するもの


かなり大雑把ですがこんな感じ。
ただシステムアーキテクチャという言葉はかなり昔から存在していたのですがソフトウェアアーキテクチャは比較的新しいものらしく、またシステムアーキテクチャの定義も人によってバラバラらしいのでソフトウェアアーキテクチャの意味としてシステムアーキテクチャが使われる事が多々あるらしいです。まぁデスクトップアプリならともかくWebシステムはソフトウェアとハードウェアが密接に絡み合いますもんね。


で、本題の本について。

続きを読む

12月購入の技術書

日記後進更新サボり過ぎなのもあれなので今月からある種の自戒の意味*1も込めて購入した技術書を記録しておこうかなと。あと、それと別にこの後に簡単にですが読書記録もしようかなとか、そんな感じ。
まぁこんな無理矢理ネタを作るようなことしなくても宿題もどんどん積まれてるんですけどね!w


とりあえず本題。今月は設計あたりの強化月刊ということで以下の本を購入致しました。そう決めた経緯は、何かを作る際の初期設計?がどうにも決め手にかけ、時間かかるし何か違うなと感じ、有名なMVCパターンはなんとなくだけでちゃんと理解してないし、デザインパターンは対象範囲が少し狭すぎる気がするし…といった風な事を思いましたので、ちょっとその辺の本を買おうということです。まだ月の半ばなので追加があるかもですがその時は随時追記しま。


ビューティフルアーキテクチャ (THEORY/IN/PRACTICE)

ビューティフルアーキテクチャ (THEORY/IN/PRACTICE)

実際は先月買ったんだけど末だったし今回の目的にあっていたので入れちゃえと。コードの方の評判良かったしついったーで話題にもなっていたので衝動買いです。まだ読んでないけどTLだと評判いい感じなのであたりかな?

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

ソフトウェアアーキテクチャ―ソフトウェア開発のためのパターン体系

なんとなく名前は伏せますが尊敬している方の一人が「POSAを読まずにMVC語るなんて…」的なつぶやきを見かけたので調べて見たらソフトウェアアーキテクチャに関しての原点とも言える本っぽかったので今回の目的にもあってるしと購入。

プレファクタリング ―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE)

プレファクタリング ―リファクタリング軽減のための新設計 (THEORY/IN/PRACTICE)

試し読みして良さげで調べた評判も良かったので購入。

インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践

インターフェイス指向設計 ―アジャイル手法によるオブジェクト指向設計の実践

名前の通りなら目的にもあってるしと気になったので購入。評判はバラけてたのでよくわかりませんw

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

アート・オブ・アジャイル デベロップメント ―組織を成功に導くエクストリームプログラミング (THEORY/IN/PRACTICE)

目的とは少し違いますが何かアジャイルに関しての本が欲しいなと試し読みした中で一番良さげだったので購入。まぁ先に積本な奥義の方を読めって話ですが。

新装版 マルチパラダイムデザイン

新装版 マルチパラダイムデザイン

  • 作者: ジェームス・O・コプリン,James O. Coplien,平鍋健児,金沢典子,羽生田栄一
  • 出版社/メーカー: ピアソン桐原
  • 発売日: 2009/12/01
  • メディア: 単行本
  • 購入: 3人 クリック: 41回
  • この商品を含むブログ (6件) を見る
最近C++の勉強を始めたのと以前から欲しいなと気になっていたので発売日に即行で購入。

プログラミング言語Java (The Java Series)

プログラミング言語Java (The Java Series)

  • 作者: ケン・アーノルド,ジェームズゴスリン,デビッドホームズ,柴田芳樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2007/04
  • メディア: 単行本
  • 購入: 38人 クリック: 1,044回
  • この商品を含むブログ (71件) を見る
Javaの言語自体の機能?でまだ知らないところがあるのでそういったものが網羅できるのはこれぐらいかなと購入。

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

Java並行処理プログラミング ―その「基盤」と「最新API」を究める―

ついに復刊された噂の本です。過去日記の通りに図書館で借りて読み終わってはいたのですが手元に置いておきたかったので購入しました。

Tomcatハンドブック 第2版

Tomcatハンドブック 第2版

Apacheハンドブックとどちらにしようか悩んだんですがJavaをメインで勉強しているんだし、Apacheは翻訳もされている公式のマニュアルがあるしとこちらを購入。


と、こんな感じです。
どう考えても読む量<買う量なので積本確定ですが…w

*1:積本いつ読むの?的な

フェンリルのファイル管理ソフト「FenrirFS」が便利っぽい

ついったーのつぶやきで知ったのですがSleipnirで有名なフェンリルから新しくFenrirFSというファイル管理ソフトがリリースされました。
でまぁ使ってみて便利そうだったので使用感とかを簡単に。


FenrirFS - 整理いらずのファイル管理アプリ | フェンリル

初期設定

デフォルトのままだとユーザーディレクトリに FenrirFS Storage というフォルダ(ストレージフォルダと呼ばれる)が作成され、そこにファイルもデータも保存されるようになってしまうのでローカルモードとかいうのにする事を推奨します。
方法は簡単で FenrirFS.exe と同じディレクトリに FenrirFS.local という空のテキストファイルを作成すればローカルモードになり、ストレージフォルダが FenrirFS.exe と同一ディレクトリに作成されるようになります。

ストレージフォルダの構成

FenrirFS Storage :ストレージフォルダ
 └プロファイル名.profileフォルダ
   ├db :FenrirFSのデータベースがあるフォルダ
   ├db_bkp :データベースのバックアップを保存するフォルダ
   ├files :FenrirFSに追加したファイルの保存場所
   └import :FnrirFSに追加したいファイルを置く場所

dbにはFenrirFS.dbというファイルやラベルの情報を保持するSQLiteファイルがあり、SQLクエリを使って直接操作することも可能です。詳しくはReadme.txtにて!
importはまぁ大量なファイルを一気に追加したい場合なんかに使えばいい感じ?

プロファイル

ラベルなどをプロファイルごとに作成することが可能ですのでより目的にあったファイル管理が可能です。ファイルの保存場所もストレージフォルダの構成の通りプロファイルごとに変わります。仕事用とか趣味用とかエロ用とかにわけるといいよ!

登録されるファイルの扱い

FenrirFSに登録するファイルは全てプロファイルごとのfilesフォルダに移動またはコピーされます。元のファイルはバックアップとしてそのままにしたい場合などはコピーするようにして下さい。ただ、あくまでコピーですので元ファイルを編集しても反映はされませんのでご注意を!

ファイルの追加は基本的にドラッグ&ドロップなんですが、Shiftキーを押しながらだとコピーするといったような動作設定も行なえますのでお好みにカスタマイズして下さい。

ちなみに設定は コピー・移動・メニューを表示する の3択しかないのですが「メニューを表示する」で登録しようとすると「ショートカットの作成」が選べ、ファイルへのショートカットが自動的を作成し登録されますので、プログラムのソースコードなど「場所の変更が不可なんだけどコピー扱うんじゃ意味がない!」ってものを管理したい場合などには、この方法でショートカットを管理するようにすればいいかと思います。

ファイル管理

やっと使い方ですw簡単に流れを説明すると、


ドラッグ&ドロップでファイルを登録→作業用トレイに入る→目的にあったラベル(複数可)をつけたり、重要なファイルにはスターつけたり、コメントつけたりする→設定が終わったファイルを選択して「アーカイブ」ボタンをクリック→作業用トレイから消え登録完了


書くとめんどくさそうですがインタフェースが操作しやすいように出来てるので結構簡単ですし、自動振り分け機能なんかもありますのでそちらを設定すればドラッグ&ドロップだけで管理も可能です。
またスマートフォルダの機能もありますので設定しなくてもある程度管理できたりします♪

便利な機能たち
ファイルの自動振り分け設定
ファイル名・拡張子・コメント・サイズ・日付などによるフィルタを作成して自動振り分けが可能
スマートフォルダ
ラベルやコメントとかつけなくてもファイル自体の情報による振り分け表示が可能(ショートカット・ピクチャ・ビデオなど)
検索機能
ファイル名やつけたコメントを対象にインクリメンタルサーチが可能


とりあえず細かい説明してない機能とかはありますが大体こんな感じでしょうか。僕もまだ機能確認程度に触ってみただけなのでまだわからない部分があるのでwとにかく便利っぽいのでこれから使っていってみようと思います。

Java並行処理プログラミングまとめ - 第1部 基礎編

というわけでいよいよ本格的に並行処理プログラミングについてです。
と言っても基礎知識ではありますがwでも基礎知識は一番大事だと思うので甘く見ないで下さいね!

続きを読む

Java並行処理プログラミングまとめ - 感想・はじめに

Java並行処理プログラミングがついに復刊されましたね!僕も図書館から借りて読みはしたんですが手元に置いておきたい一冊だったのですごく待ってました><
というわけで別に復刊記念というわけではありませんがいい機会なので宿題が溜まりすぎないうちに少しでも消化しようとJava並行処理プログラミングを読んだ感想やまとめです。

感想

タイトル通り書いてあるコードは全てJavaですしJVMなどJavaに偏った部分もありますが、内容としては並行処理プログラミング自体についての基礎知識から高度な知識までを段階的に解説されてあります。また、問題を解決する方法もいきなりこのAPIを使えばOKと紹介するのではなく、オブジェクトの作り方・組み合わせ方から説明した後にJavaなら既にこういったAPIがありますと紹介していますので、こういった作り方・組み合わせ方の知識は他言語にも流用できると思います。その際に注意するべき点などは言語に限った話ではないと思いますので並行処理について勉強したい方には一度は読むようにオススメしたい本だと思いました。

第1章 はじめに

下記以外には最初の方に並行処理プログラミングが行われるようになった歴史とか、最後の方には既存のスレッドが利用されているものの紹介とかが書いてあったよ!

スレッドの利点
マルチプロセッサの有効利用
せっかくマルチプロセッサが普及し始めたんだし有効に活用しなきゃね!シングルスレッドだと同期的I/Oがあったらただ待つだけで無駄になっちゃうよ!
設計の単純化
並行処理がうまく扱えるようになったら1スレッド1タスクに分解できて設計が単純に!例:サーブレットRMIフレームワーク
非同期イベントの処理を単純化
マルチスレッドだとシングルスレッドで面倒だった事が簡単に!同期I/OをノンブロッキングI/Oに変えなくて済む!
応答性の良いユーザインタフェイス
GUI表示と内部処理それぞれにスレッドを割り当てるだけで応答性が良くなる!ユーザ入力のポーリングとかしなくていい!
スレッドのリスク
安全性の危機
同期化が不適切だと複数のスレッドがランダムなタイミングで処理するので、タイミングによってはデータに不整合が発生する可能性
生存の危機
デッドロック・飢餓状態・ライブロックなど並行処理ならではのエラーによるプログラムの停止の可能性
実行性能の危機
コンテキストスイッチによるオーバヘッドの発生などによる実行性能の低下の可能性


この記事が少し寂しいことになりましたが部ごとにわけたいと思いましたのでわけました。
続きはこちらです↓
Java並行処理プログラミングまとめ - 第1部 基礎編 - Akinekoの日記

vim-users.jpの個人的メモ

基本的なキーバインドを覚えただけでほぼデフォルトな状態で使ってるVimなのですが、そろそろ少しずつでもVimを勉強していこうかなーと思うのでVimユーザー必見!?のサイトの1つhttp://vim-users.jp/の初心者に役立ちそうなとことか個人的に覚えたいとこをメモ的にまとめてみました。
あとで順番に読みながら勉強したいと思います。

参考サイト

vim-users.jp: http://vim-users.jp/
上記サイトのVim Hacksの目次ページ的なもの: http://vim-users.jp/vim-hacks-project/

その他

これと同等のものをメインで使ってるサクラエディタでも使ってるんですが、ほんと便利でHTMLとかXML書く時に重宝してます♪


とりあえず最低限この辺りを覚えたら快適にコード書けそう。
VimScriptはまぁおいおい…w

宿題いろいろ!

いろいろと宿題が溜まって来たので忘れないようにと自戒の意味も兼ねてメモ!
宿題というかこういう事書きたいなぁと思ってたものなんかも。


たぶん今のところはこれだけのはずw