デザインパターンについて

2月 27th, 2017

どうも、こんにちは。
新入りのtaka-kです。

会社の先輩、naoyaさんに続いて、技術的な話題で投稿させていただきますm(_ _)m
私は「デザインパターン」について学習記事を投稿します。

まずは「デザインパターンとは何か?」から。
ネットで検索すると定義についてはいろいろと出てきますが、
簡潔にかつ一言でデザインパターンについて説明すると
「よく出会う問題とそれにうまく対処するための設計」
となるのではないかと思います。

我々もよく設計、プログラミングをしていると同じような問題に直面することが多々あります。
その場合、過去、「自分がどのように設計したか?」を参考に解決策を模索します。
そういった解決策を体系化したものがデザインパターンになります。

デザインパターンについてはいくつか種類があります。
一番、有名なものが「GoFの23のパターン」で一般的にデザインパターンといえば、
これを指すようです。

他にも、以下のようなデザインパターンがありますが、本投稿では一番有名な
「GoFの23のパターン」と私が興味を持った「アンチパターン」について触れて
行きたいと思います。

・J2EEパターン
・アンチパターン
・アーキテクチャパターン
・アナリシスパターン
・アンチパターン

◆GoFの23のパターン
GoFの23のパターンには以下のような種類があります。
次回からはこれらを詳細に触れていこうと思います。

●生成に関するパターン
・アブストラクトファクトリ
・ビルダ
・ファクトリメソッド
・プロトタイプ
・シングルトン
●構造に関するパターン
・アダプタ
・ブリッジ
・コンポジット
・デコレータ
・ファサード
・フライウェイト
・プロキシ
●振る舞いに関するパターン
・チェイン・オブ・レスポンシビリティ
・コマンド
・インタプリタ
・イテレータ
・メディエータ
・メメント
・オブザーバ
・ステート
・ストラテジ
・テンプレートメソッド
・ビジタ

次回 「アブストラクトファクトリ」

【参考URL】
http://www.nulab.co.jp/designPatterns/designPatterns1/designPatterns1-2.html
http://www.techscore.com/tech/DesignPattern/foundation/foundation1.html

【参考文献】
Java言語で学ぶデザインパターン入門

959日目

2月 20th, 2017

こんにちは、F513です。
スタッフ持回りでブログ投稿が11週目となりました。
2014年7月8日に開設されたんで、959日目となります。

1000日まで、あと41日

記念すべき1000日目は誰が投稿するんでしょうね。
楽しみですね~。

さて、今年も我が家ではお雛様を出しました。

毎年わからなくなるのが、お内裏様とお雛様の位置!!
結論:どっちでも良い
京都風では、お内裏様は向かって右だそうです。
関東では、お内裏様は向かって左だそうです。
どうしてそうなったかは、諸説いろいろあるそうです。
で、結局、お内裏様が向かって左、お雛様が向かって右に直されました。

今年は、3月5日が日曜日なので、ひな壇を直して、五月人形を出すことになるんだろうな( ^ω^)・・・
そして五月人形はハロウィンかクリスマスまで出しっぱなし・・・

では、また。

以上

p.s.
男兄弟しかいないんで、桃の節句って何するのかよくわかんない ^^);

大分を満喫するには?

2月 14th, 2017

初めての投稿になります。
新入社員のtaka-kです。

私は最近、大都会東京から大分に帰ってまいりました。
長らく大分を離れていたので、何らかの手段で大分を満喫しようと思っています。

やはり大分といえば、温泉。
そして、私は温泉が大好きです。
というわけで、このようなものを買って温泉を満喫することにいたしました。

このスパポートをもって別府温泉から選ばれた144の温泉のうち88か所をめぐるスタンプラリーを「別府八湯温泉道」というようです。
88か所のスタンプがそろうと、別府温泉道名人の称号がもらえます。

別府温泉道名人を目指して温泉を巡っていこうかと思っています。
(まだ、1か所しかいってないので、先は長いですが・・・。)

[ちょい遅れ]2016年あんなこと、こんなこと

2月 6th, 2017

我が家のPC、テレビ周りの変化といえば、誕生日に友人からコンポが送られてきたのと、taka84氏に譲ってもらったノートPCが絶賛稼働中なくらいです。(画面はテレビ、音はコンポへ出力)
13996081_671355026345951_6570767347051430530_o

…taka84氏のブログをオマージュしようとしましたが断念します。crownです。

今年も始まって既にひと月が経ち、もう二月ですね。
しかしこのタイミングで昨年を振り返ろうと思います。
まぁ、以前も振り返ってましたし。。。(書くことも思い浮かばないですし…)

~~~

年末年始は大分にいたので
「馬刺し食いてぇな」→熊本
「黒豚食いてぇな」→鹿児島
車のある生活は最高ですね。
1618329_571772372970884_6247792021368462086_o 775088_571772386304216_2205551219391824989_o

あと、山口の角島大橋も走ってきました。冬の海も良いものですね。
12465902_574538096027645_6406256476177870578_o 12493872_574538082694313_3705482706185177826_o

01月10日:『今、話したい誰かがいる』発売記念 全国握手会@幕張メッセ

2月は池上本門寺や亀戸天神で梅を撮影しました。
お寺や神社は落ち着きますねぇ。
12719092_589895574491897_8008355287010791915_o 12719651_589895647825223_3101479116007764352_o

4月は千葉へ
念願のカピバラとのふれあい
想像以上の鋭い眼光、巨大な体にビビりながらも撫で回しました。
13029478_621260628022058_9137089694346093722_o 13062902_621260668022054_1753605587064405998_o

04月16日:『ハルジオンが咲く頃』発売記念 全国握手会@幕張メッセ

5月、GWは近畿地方へ
兵庫で姫路城や神戸牛
13116264_627286504086137_2438902602977967181_o 13130973_627287320752722_4785349885408573669_o
京都で伏見稲荷大社や鴨川川床での食事
SONY DSC 13147555_627286577419463_4362310893422031891_o
三重で伊勢神宮や松阪牛
13131551_627286730752781_9055386900545745549_o 13123314_627287474086040_4226794246095702372_o

05月04日:『ハルジオンが咲く頃』発売記念 全国握手会@京都パルスプラザ

07月10日:『それぞれの椅子』発売記念 個別握手会@パシフィコ横浜

9月、SWは中国地方へ
詳しくは以前のブログ参照
09月04日:『裸足でSummer』発売記念 全国握手会@幕張メッセ
09月26日:『裸足でSummer』発売記念 個別握手会@パシフィコ横浜

10月は舞台鑑賞
『嫌われ松子の一生』 『墓場、女子高生』
14525005_694572257357561_4537036155200589794_o 14712517_705969002884553_1506481058928823518_o

10月23日:『裸足でSummer』発売記念 個別握手会@パシフィコ横浜
10月29日:『裸足でSummer』発売記念 個別握手会@幕張メッセ

11月は丸の内イルミネーション
例年は表参道や渋谷に出没するのですが気持ち落ち着いたのでしょうか。
IMG_2447

11月13日:『裸足でSummer』発売記念 個別握手会@パシフィコ横浜

~~~

後半になるにつれて偏りが見えますがこんな感じの年でした。(偏ってるやつは東京を省いたのですが…)
一昨年「来年はもう少し遠くに行きたいな」と書いていたのを考えるとまぁクリアできたような、できていないような
今年も色んな所へ行けたら良いですね。

関数指向について

2月 3rd, 2017

関数指向について

 こんにちは。naoyaです。

 毎月一回のプログラム学習記事の投稿です。

 第四回は、「関数指向」について、調べたことをまとめていこう
と思います。

・関数指向
  いわゆる、「関数型言語」と呼ばれる類の言語の設計手法。オ
 ブジェクト指向言語でも使えるところが多い。
  正確な定義等は存在しないが、関数型プログラミングは、複数
 の式を関数を使って組み合わせていくプログラミングスタイルで
 ある。ということは認知されている。
  関数(function)中心の設計で、小さな関数を組み合わせて大
 きな処理を実現しようとする考え方。
  C#では、デリゲート(メソッド(関数)を参照するための型)や、
 ラムダ式(メソッド(関数)を整数などの変数と全く同列に扱う手
 法)などが実装されている。

・関数型言語の特徴
 1.第一級関数…関数を変数に格納できる性質を持ち、第一級オブ
       ジェクトと同じように扱うことができる→関数の受
       け渡しが容易になる。
 2.高階関数…関数を返したり、他の関数を引数として受け取った
      りできる関数。
 3.純粋関数…値を変更しない関数。データを受け取って、データ
      を出力するだけの関数。環境や評価の順などの影響を
      受けない。同じ入力が与えられるたび、決まって同じ
      出力が得られる。プログラムのほかの部分に影響を与
      えない。
 4.クロージャ…戻り値となる特定の関数だけがアクセスできる
       データを関数の内部に保存できる機構。つまり、戻
       り値となる関数は、その実行環境を維持できる。
       引数以外の変数を実行時の環境ではなく、自身が定
       義された環境で解決することが特徴。関数とそれを
       評価する環境のペアであるともいえる。
 5.不変状態(不変性)…状態を全く変更できないこと。状態の変更
          に対するテストを少なくできる。

 関数指向という言葉は、最初に6か月分のお題を決めた時に初め
て聞きました。その内容についても、未だ業務では使ったことのな
い事ばかりだったので、調べても内容が理解できないものが多かっ
たです(ラムダ式とデリゲートのみ、聞いたことがある程度)。
 調べてみた印象としては、関数指向は、データの流れが分かりや
すくなり、総合的にテストをするときの負担が軽くなる、テストが
しやすくなる。ということが所々に書いており、オブジェクト指向
の「開発のしやすさ」とは違う所に重点を置いているという風に感
じました。
 オブジェクト指向言語とは違い、関数型言語にはまだ触れたこと
がないので、触れる機会があれば、今回調べたことを思い出しなが
らやっていきたいです。

 次回(第五回)は「メモリとリソース管理」について、調べていこ
うと思います。

参考URL:
http://postd.cc/functional-programming-should-be-your-1-
priority-for-2015/

http://www.ibm.com/developerworks/jp/java/library/j-ft4/
https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%83%BC%E3%82%
B8%E3%83%A3

http://ufcpp.net/study/csharp/
http://syossan.hateblo.jp/entry/2016/07/16/211248
http://qiita.com/lrf141/items/98ffbeaee42d30cca4dc

悲しみの10km

1月 31st, 2017

昨年は念願かなって東京マラソン当選でしたが、今年は抽選で外れました。

悲しみからか運動が疎かになっていた部分がありそれを改善するために、01/29(日)に応募していた新宿シティハーフマラソン・区民健康マラソンに参加。

10kmスタート
10kmの参加人数は約2500人。ゼッケンのナンバーブロック毎にスタート位置で待機。
コースは明治神宮外苑と改装中の国立競技場を約三周するコース。
当日は天気も良く絶好のランニング日和となった。

10kmゴール
ゴールは明治神宮球場。無事ゴールは出来たが結果は散々足るものとなった。

今年は継続したい。。。

テレビ周りのPC事情

1月 30th, 2017

数回前のkuraさんのエントリを見て、我が家のPC周りというか、テレビ周りの状況を書いてみようということにしました。

昨年(2016年)は、私も大人になったというか、冷静になったというか、あまりPCを購入しませんでした。
(12月に入ってから、1台中古のデスクトップを購入しましたが、それは後ほど)

その代わり、7年ぶりくらいにテレビを購入。

ネット動画配信のサービスに複数加入していることもあり、スティックPCはテレビに接続することに。

ここで困ったのは、スティックPCが2台あるということ。
そして、HDMIのコネクタの並びから、2台つなぐのは物理的に難しい。

ということで、HDMIの切替機を購入!!
IMG_4099

切替機自体はピンキリで存在するものの、テレビをリモコンで切り替えられるのにHDMIを切り替えるために動くのはイヤ!という横着精神も働いたため、リモコンで切り替え可能なものを購入。

キーボードとマウスは、bluetoothの切替可能なものを持っているので、配線がごちゃごちゃすることもない、スマートな環境が構築できました。
※しかし、このキーボードとマウスの感度の悪さには大いに不満。

スティックPCでの動画視聴ですが、正直微妙。
動画サービスだけなら、70点。
(不満の原因はキーボード、マウスが占めてる気もする)
一方で、自前の動画ファイルの再生となると、非力さが出てしまうかな・・・

ということで、2017年も引き続きテレビ周りのPC環境をもう少し整備しようと思います!!
スティックPCよりも、各社から発売されている小型PCの方が良いかも、と思い始めましたし。

そうなると、必然的にストレージも考えないといけないんですよねぇ。
なんかテンション上がりますね。

ユーザビリティ

1月 16th, 2017

仮面ライダーエグゼイドの映画を見に行く事になり、年末に前売り券を購入しました。
そして3連休の初日に、座席予約を予めネットからしようとしましたが、
最後までたどり着けませんでした。
①席を指定する。
②席毎にチケット番号を入力する。
 ・親子ペアチケット(大人)
 ・親子ペアチケット(子供)
 ・一般前売り
③確定をクリック
 ・「人数が購入のチケットとあっていません」のメッセージが表示され、
  ①からやり直し。

いろいろなパターンを試したが、ダメ。
嫁(同業者)にも試してもらったがダメ。
Helpを見るほど、夫婦とも気が長くないので(笑)、
結局、早めに出かけて自動券売機で処理しました。
普段、専属の職員さんの使い勝手がいい様には、気を使いますが、
誰もが使いやすい様なインターフェースまでは、考えないので、
いいきっかけになりました。

さて、肝心の映画ですが、クライマックスのラスト15分くらいで、
「パパ、おしっこもれる。」というので、18Kgの息子を抱えて、
猛ダッシュしたら、息絶えてしまい、最後らへんをよく覚えていません・・・
まぁ、でも、息子は大満足そうでした。あのポップコーン飛散事件までは・・・

思い出の中のその怪物はいつも優しい目をしていた。

1月 16th, 2017

こんにちは、shirato です。
年末年始は久しぶりにガッツリとゲームをやりました。

・人喰いの大鷲トリコ
  上記紹介映像のとおり、主人公の少年となってトリコと
  協力しながら進んでいくアクションゲームです。
  なんてったってトリコがかわいい。
  ギミックに悩んだり、操作性の悪さでキレたりしながら
  でしたが、それらを補ってあまりある良いゲームでした。

・ペルソナ5
  ドラクエやFFに代表されるRPGです。
  相変わらずペルソナの合体や戦闘が楽しいです。
  ストーリーは終盤ちょっとついていけず…。
  なんだかんだでトロフィーコンプ。

・桃太郎電鉄2017
  久しぶりの続編発売となったボードゲーム。
  公式チートのさくまさんと99年対戦中。
  歴史上の偉人がいろいろと出てくるのですが、
  味方になれば頼もしいものの、敵に回ると
  殺意しか芽生えません。

この中で一番印象に残ったのは人喰いの大鷲トリコです。
絵本や映画だったとしてもおもしろいと思いますが、
「ゲーム」だからこそ得られる体験や感情があったように思います。

先日、任天堂の新しいゲーム機の詳細が発表されましたし、
今年もおもしろいゲームに期待です。

オブジェクト指向について

12月 27th, 2016

こんにちは。naoyaです。

毎月一回のプログラム学習記事の投稿です。

第三回は、「オブジェクト指向」について、調べたことをまとめて
いこうと思います。

・オブジェクト指向とは?
  ソフトウェア設計において、操作手順よりも捜査対象に重点を
 置く考え方。カプセル化・継承・多態性という3つの概念がある。
  関連するデータの集合と、それに対する手続き(メソッド)を
 「オブジェクト」と呼ばれる1つのまとまりとして管理し、その
 組み合わせによってソフトウェアを更新する。
  既に存在するオブジェクトについては、その内部構造や動作原
 理の詳細を知る必要は無く、外部からメッセージを送れば機能す
 るため、特に大規模なソフトウェア開発において、有効な考え方
 と言える。
  データやその集合を、現実世界の「モノ」になぞらえた考え方
 であることから、「オブジェクト」指向とよばれている。
  すなわち、「テレビ」というオブジェクトがあれば、テレビは
 自分自身の中身について、それを動作させる仕組みを知っており、
 それを利用するためには(たとえばリモコンなどで)適切なメッセ
 ージを与えるだけで良い。
  このような、何らかの「データ」と、それを操作するための
 「メソッド」の組み合わせが「オブジェクト」になる。
  個々の操作対象に対して、固有の操作を設定することで、その
 内部を隠し、利用しやすくしようとする考え方。
  ポイント
   1, プロジェクトを作るときは、まずデータ構造を決める。
   2, データ構造を中心に考える。
   3, データ構造は、中身を隠す(カプセル化する)と、必要な
     所だけ見えて分かりやすい。
   4, 継承と多態性という概念もある。
   
 ・カプセル化
   オブジェクト指向では、オブジェクトは中身がどうなってい
  るかを隠し、可能な操作と属性のみを公開するべきだと言われ
  る。可能な操作を「メソッド」、属性を「プロパティ」と言う。
  ※可能な操作と属性のみを公開すべき
   -例えば、正の整数を扱うメンバ変数に値を入れるときに、
   その値がもし負の数だった場合、直接値を入れると負の数が
   そのまま入り、後の計算がおかしくなるかもしれない。
   プロパティやメソッドを通して値を入れる場合、そこで負の
   数の時の処理をはさめるので、後々助かるかもしれない。
   
 ・継承
   クラス定義の共通部分を別クラスにまとめる仕組み。
   既存クラスの機能、構造を共有する新たなクラスを派生する
  ことが出来る。
   継承元のクラスを親クラスやスーパークラス、継承したクラ
  スをサブクラスと言い、サブクラスには、スーパークラスの変
  数定義やメソッド等が引き継がれる。スーパークラスとサブク
  ラスは包含関係で表現できる。
   継承を行うことで、コードの再利用性、拡張性を高めること
  ができる(複数のクラスで共通部分がある場合に、その部分を
  別クラスにして継承させると、コードが見やすくなり、バグや
  仕様変更などがあった場合に、修正箇所が少なくて澄む)。
  
 ・多態性
   同名のメソッドや型などをオブジェクトの種類によって使い
  分けることが出来る性質のこと。
   同じクラスを継承した2つのクラスでスーパークラスのメソ
  ッドをオーバーライドさせると、同じ名前のメソッドで違う挙
  動をさせること(目的は同じであるが、違う手段を使ったり、
  違う結果が欲しい場合など)が出来るため、コード利用側での
  変更を少なく出来る。
  

まとめ
 オブジェクト指向について調べてみましたが、どこの説明でも、
「コードの読みやすさ」や「コード改変のしやすさ」に重点を置い
ているような印象を受けました。これはそのまま、複数人で作業を
する場合に、他の人がコードを理解するのにかかる時間が減るのと、
バグや仕様変更などがあった時も、変更にかける時間を減らせると
いう利点があるように思います。
 継承は何度か使ったことがあり、カプセル化はイメージがつかみ
やすかったので、割とスッと頭に入ってきましたが、多態性につい
ては、中々理解するのに苦労しました。イメージが掴みづらく、サ
ンプルコードを見て、やっていることはわかるけれども、こうする
ことで何がいいのか、と言う所を理解するのに、凄く時間がかかり
ました(もしかしたら勘違いしているという可能性もありますので、
ご指摘等いただけるとうれしいです。)。

次回(第四回)は、「関数指向」について、書いていこうと思います。

参考URL:
http://www.sejuku.net/blog/9598
http://java2005.cis.k.hosei.ac.jp/materials/lecture18/polymorphism.html
http://qiita.com/lrf141/items/a2f764c8d87de26b6f45
http://nobuo-create.net/java-beginner-25/
http://ufcpp.net/study/csharp/oo_about.html
http://www.itmedia.co.jp/im/articles/0703/06/news125.html
http://e-words.jp/w/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91.html