「おとは@でいじー開発部」トップページに移動します
プロフィール
短く紹介
一応肩書付き最前線プロのプログラマーです☆
デザイン、サウンド、企画、設計、プログラム構築まで幅広く知識を身につけるべく修行に励んでおります!!
ハードウェア開発の沼にどっぷり漬かってぬくぬく☆

ひとり言
ハードウェア開発に興味を持ってしまった・・・当分はハードウェアについて記事を書いていくのだ♪♪
WPFの紹介ウェブページもある程度コンテンツが増えたのでライブラリの公開を一時中断したよ(爆)
スポンサード リンク
カレンダー
2015年 5月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
人気記事
- 2017/11/28 22:40 (0)
新規記事
- 2017/11/28 22:40 (0)
コメント
登録はありません
トラックバック
登録はありません
バックナンバー
RSS
常に最新情報を得るためにはRSSを利用しましょう。
QRコード
QR Code

現在のページを通報
「ぶろぐるすとーりーと管理人」へ不適切な記事の通報が行えます。
通報を行いたい対象記事のみを表示した状態で通報して下さい。

ページ切り替え


第10章 設計そして行動

投稿日時 2015/05/14 00:26:54

こんにちはsun

このウェブページでは開発者を目指す人や開発者になってこれから開発職を全うしていこうと思っている人に向けて私、おとはが思うことを綴っていこうと思います。

この記事に書いていることを鵜呑みにしたり、書いていることだけを実践しても結果を保証するものではありません。
大事なことはこれからあなたが 「どんな人になりたいか(キャリア)」 「何をしたいのか(ジャンル)」 「どこを目指すのか(目標)」 です。

中級者向けの第4段ですsign01
新人を卒業して数年の歳月を経てしっかりと自分の力で仕事をこなしていける人向けの内容ですよhappy01

それでは、 「第10章 設計そして行動」 についてお伝えしますね。

「設計」 なんて言われたらプログラマーの仕事だって言われそうな気もしますが、 何も設計はプログラマーだけの仕事ではありません sign01
仕様を決めて しっかりとした芯のある設計の元に行動を移さないと後からトラブルに見舞われる ことがありますcrying
ゲームでもツールでもそうだし、それぞれの実装において作成されるデータだって仕様がしっかりしている必要があります memo
グラフィックデザイナーに 自由にデータを作っていいよ 」なんて格好良いこと言ってみたら・・・ 解像度が大きい 読込時間が掛かる CPU処理負荷高すぎる なんて事になりかねないdanger
3Dのモデルとかになってこれば、 ポリゴン数 やら どこにボーンを入れて処理させるか なんてのも大事ですよねshadow
CPU GPU Memory も有限ですし、 HDD だって Network 帯域だって制限がありますthink

プログラムって膨大なソースコードの上に成り立つので個々の細かい処理に目を通すなら選任で人材割り当ても必要になってきますpc
最近はコード分析なんて便利なのもあるのでそこでテストも可能ですがトラブルを未然に防ぐなら設計思想が大切になりますsign03

中級者になってこれば 経験やノウハウも積んできている と思いますので​、 良いこと・悪いことの判断はある程度思いつく はずですflair
設計もしないで作業に入る人は、 すごく頭が賢くて周りの人から遠い存在の人と思われている人 か、 後先考えられない取りあえずで作業してしまう人 でしょうbomb

設計思想もなく実装していった仕様に対して1年後しっかりと記憶しておくことが出来るでしょうかsign02
どのような 意図があって何を目的として行うことなのか デジタル、アナログ問わないので必ず書面として残しておきましょうart
これが出来なければ時間と共にどんどん対処が出来なくなるひどい状態へ進むことになりますdash

しっかりとした 理念の元に設計されたシステムや各種データであっても 機能拡張や他のデータへの派生などしている内に元の情報は薄れていきます night
どこかのタイミングで立て直しをしたり、動作テストを行うための指針となるように情報を残しておきましょうmemo
これが出来ていれば すべての行動を設計者が起こす必要はなく 作業を分担して開発していくことも出来ます mail
また、 引き継ぎ時間も短縮できますので引き継ぐ方も引き継がれる方もお得 になりますclock

かなりプログラマ寄りの内容になってしまいますが・・・
最近のコンピュータは複数のCPUコアを使用してマルチスレッドで処理をしますrecycle
スレッド間のデータの保護もそうですが効率よく処理を実装していくこと 技術力として必要 ですrock
ここでも 大事なのは制御フローをちゃんと考えて設計すること に就きますsnow

チームの作業フロー なんかも 考えておく必要があります run
どこから仕様や依頼が来て誰がどのように対応して最終的なデータに変換されていくのか明記しますpen
作業フローに問題があると 作業 途中 で問題が発生してもスルーされてしまい 気付いた頃には後戻りできない ・・・ なんてことにならないようにしましょう wobbly

設計の方法は色々あります。
意見出しであれば、ホワイトボードや紙ベースに書いていっても良い でしょうpen
出来れば ブレインストーミングなど誰かとの情報共有が出来るアプリを利用してデジタルデータ化するのが素晴らしい ですsun
私は初期設計はXMindによる考案を行いますshine

マインドマップは考えをまとめるのに非常に特化しているので楽しく考えをまとめられますok

とりあえずで行動して後から後悔するような駄目作業フローから卒業して 将来を見据えた開発が出来るように今すぐ行えることから実践していきましょう heart04


投稿者

おとは@開発隊長  

カテゴリー

全般

タグ

開発職 極意
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

第9章 正解は1つじゃない

投稿日時 2015/05/13 01:40:51

こんにちはsun

このウェブページでは開発者を目指す人や開発者になってこれから開発職を全うしていこうと思っている人に向けて私、おとはが思うことを綴っていこうと思います。

この記事に書いていることを鵜呑みにしたり、書いていることだけを実践しても結果を保証するものではありません。
大事なことはこれからあなたが 「どんな人になりたいか(キャリア)」 「何をしたいのか(ジャンル)」 「どこを目指すのか(目標)」 です。

中級者向けの第4段ですsign01
新人を卒業して数年の歳月を経てしっかりと自分の力で仕事をこなしていける人向けの内容ですよhappy01

それでは、 「第9章 正解は一つじゃない」 についてお伝えしますね。

ゲストさんも 普段の生活のなかで 色々な選択をしているかと思います paper
例えば、ご飯を食べるタイミング何かを購入するタイミング起床就寝もすべて 実行する・しない 遅らせる・早める などあるかと思いますrecycle

仕事においても同じように たくさんの分岐の1つを選択 したり、 複数の分岐から良いところを集めた選択 をしたりしますよねsign02

早速結論ですが、 何事も正解は一つじゃない のですよ。
計算式など問題の答えは1つかもしれないですが導き出される答えが1つしか無いものなんてごくわずかですslate

では、 たくさんの正解があるものに対してどのように解答を選ぶのでしょうか?

仕事であれば、最初に立ちはだかるものとしては 時間や予算と言うコスト です。
これに関しては制限があれば乗り越えるのはかなり難しい事です。

もし、 時間も予算も余裕のある作業となった場合に
ゲストさんはどうしますかsign02

私はある程度のリスクがあっても新しいことに挑戦する方向で考えますsign03
結果として良くなれば完璧ですが、 悪くなることもありますdown
でも、 たとえ 悪くなったとしてもそれを吸収することが出来るのであれば実践 した方が経験が積めます snow

行動しなければ結果は出ないし 出来る時にしなければ何時まで経っても実行されることはありません bearing

中級者の方であれば、周りのチームメンバーや上司や先輩からの信頼は得ているはずですheart04
勝手に事を進めて自爆するのはやってはいけませんbomb
周りの人を巻き込んでフォローしあいながら進められる環境にしておくのも大切ですgood


お話内容を変えてもう少し紹介しますね。
普段の作業をしている時に発生する問題の対処。
これもかなり厄介な事柄です。

トラブルを事前に察知して煙が上がる前に止められれば素晴らしいですが、 時には煙が上がる し、 炎上することもあります
特に仕事上での色々なミスによって発生するトラブルが一番多くありますsweat01
人為的なミスは発生しないように環境を整備しておくべきですが、基盤のシステムの変更利用するツールの変更など 大きな変化が発生した後にやってくるトラブルはかなり厄介 です。

未然に防ぐことが出来なければ気付いたeye時点で拡散しないように抑えて secret対策を練ったうえで対処していきますwrench
トラブルの内容にもよりますが、対策方法や対処方法に関しても選択肢がたくさんありますsign01
今後の作業をしていく上で、 チームや会社にどれだけの影響があるのかを考えた上で正しい対応をして欲しい と思います。

ほとんど発生しないトラブルにたくさんの時間を掛けるくらいなら 炎上してダメージが出てしまうような部分に取りあえずのパッチ修復ではなく 根本から治すような時間配分が出来るようにしてほしい ですね。



日々のたくさんの分岐に対してどのように進めていくのかは、一個人ではなくチームや会社レベルで考えられるようになると色々スムーズに進むかと思いますbuilding
一番は分岐など発生しない完璧な仕事を全員でこなすこと だと思いますが ミスのない行動なんて不可能 ですので テストをしてみるなりレビューし合う なりして 効率のよいワークフローでやって行きたいですねbasketball

 


投稿者

おとは@開発隊長  

カテゴリー

全般

タグ

開発職 極意
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

第8章 無知は恐怖である

投稿日時 2015/05/13 00:46:46

こんにちはsun

このウェブページでは開発者を目指す人や開発者になってこれから開発職を全うしていこうと思っている人に向けて私、おとはが思うことを綴っていこうと思います。

この記事に書いていることを鵜呑みにしたり、書いていることだけを実践しても結果を保証するものではありません。
大事なことはこれからあなたが 「どんな人になりたいか(キャリア)」 「何をしたいのか(ジャンル)」 「どこを目指すのか(目標)」 です。

中級者向けの第3段ですsign01
新人を卒業して数年の歳月を経てしっかりと自分の力で仕事をこなしていける人向けの内容ですよhappy01

それでは、 「第8章 無知は恐怖である」 についてお伝えしますね。

世の中には無限の情報がありますmemo
ゲストさんは どんな知識 どんな情報 を持ってますか?

言葉では言い表せないたくさんの事を知ってますよねsign02
例えば、一般常識は置いておいて、趣味の分野仕事の分野などは 知識豊富ですよねsign01
ゲストさんとは違う趣味や仕事をしている人とは がありますよね?

では、 同じ趣味の人や同じ仕事をしている人たちとの差はどうでしょうか?

もし、 差があるとしたらその差はどこから生まれてくるのでしょうか?

仕事であれば実行した作業の内容によったり、クライアントから来た仕事のジャンルなどによって身に付く知識は大きく違ってきますcoldsweats02
仕事をこなしていく上で色々な事を知っている人は重宝されますloveletter
ただ単純な知識でなく、経験・ノウハウを持っている人ならなおさらですheart04

ゲストさんは 知識のない、又は知識の薄いジャンルの仕事が来たら どのように対応していこうと思いますか?
まず、始めにすることって情報集めですよね?


知らないことを知らないままにして進むなんて怖いはずですsweat01
先の見えない道があったとしてその道に落とし穴があるって知ってるだけで用心しますし正確な情報があれば危険を避けて通ることが出来ます。

情報集めにも色々な方法がありますが、手っ取り早いのはインターネットで調べることです。
まずは、 自分自身だけで全体像を把握する ところから始めて 難しいと感じたところや時間が掛かりそうなところについては詳しい人に聞く のが良いです。

こて先の知識や技術で対応できる事も世の中たくさんありますwrench
作業時間等のコスト・予算によっては仕方なくこて先の作業を行うこともありますclock
でも、 今後の拡張性やメンテナンス性を考えたら本当に今ある知識だけで進めるのが良いのかを判断する必要が出てきます。
なので、仕事も趣味もなんでもそうですが 新しいことに挑戦したり、調べたり、見たり、聞いたり して 新たな知識と言う引き出しを日々増やしていくことが大切 です。

行動した人は行動した分の結果が付いてきますnote

プログラムネタですと、プログラムを組むための言語は多種多様であり、 プログラムの書き易さ、安全性、実行速度、保守のし易さ、拡張性や環境依存など色々な得意不得意 がありますcd

グラフィックネタであれば、プロとして絵を書くのにWindowsのペイントだけを使い続ける人は居ないはずで、CLIP STUDIO PAINTPhotoshopIllustratorGIMPSAIなど 予算や使いやすさに応じて使い分けている かと思いますart
漫画を書く人はCLIP STUDIO PAINTを選ぶ と思いますし 写真を加工する人がSAIを選ぶことはほぼない でしょうcoldsweats01

仕様をまとめたり企画を考える人は XMindのようなマインドマップを使ったり Office製品(Word, Excel, Powerpointなど)を利用したりする でしょうpc


周りの人より ゲストさんの知識が優れていようがいまいが情報収集が止まっているようであれば今すぐにでも新たな情報を集めに行くべきだと思いますbook
但し、 注意してもらいたいのは 何でもかんでも知識を蓄えれば良いわけではありません sweat02

ゲストさんにとって 有益となる情報をしっかりと見極めてから取り組んで欲しい と思いますsign01

無駄な知識を得る必要はありませんので頭がパンクしないように自分のペースで進んで下さいrun
 


投稿者

おとは@開発隊長  

カテゴリー

全般

タグ

開発職 極意
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

第7章 遥か彼方に

投稿日時 2015/05/12 02:53:31

こんにちはsun

このウェブページでは開発者を目指す人や開発者になってこれから開発職を全うしていこうと思っている人に向けて私、おとはが思うことを綴っていこうと思います。

この記事に書いていることを鵜呑みにしたり、書いていることだけを実践しても結果を保証するものではありません。
大事なことはこれからあなたが 「どんな人になりたいか(キャリア)」 「何をしたいのか(ジャンル)」 「どこを目指すのか(目標)」 です。

中級者向けの第2段ですsign01
新人を卒業して数年の歳月を経てしっかりと自分の力で仕事をこなしていける人向けの内容ですよhappy01

それでは、 「第7章 遥か彼方に」 についてお伝えしますね。

今回の題名はかなりアバウトにしてみましたhappy02
色々な思いを込めているってことですよheart01
前回のような精神論ではなくもっと現実的なところについての紹介です。

ゲストさんはどんなお仕事されていますか?
このページを見ているのであれば、もしかしなくても 開発職ですかsign02

少しだけ前回の内容から派生していますが・・・
お仕事でも趣味でも調べ物をする時ってどうやって実行しますか?

例えば、「 関連書籍を購入する 」だったり「 図書館へ出向いてみる 」だったり「ンターネットで調べる 」だったり「 詳しい人に聞く 」などあると思います。
「詳しい人に聞く」 は周りに詳しい人がいないと難しいですが、「 インターネットで調べる 」や 関連書籍を購入する 」や「 図書館へ出向いてみる 」は 行動さえすれば実行出来ますよ happy02
最近は「詳しい人に聞く」ってことで ”teratail” なんてエンジニア向けの質問サイトもありますnote (私は参加するか考え中ですけドも)

個人レベルであれば”teratail”もありだと思いますが業務ではちょっと機密もあるし難しいですよねcoldsweats01

唐突ですが調べ物する時って日本語だけですよね?
日本人なら日本語でしょ sign01 」って考えるのが普通なのかもしれません。

でも、 開発職をしている人なんて世界中にいくらでもいるんですよ。
世界vs日本国内で考えたら 圧倒的に世界の方が強い でしょdanger

結論を書いちゃいますが、 日本語サイトだけを調べているだけじゃ 足りないですcoldsweats01 (足りない事の方が多い「特にプログラムはsign01」)

最低限、 目的を持った調べ物をした際に英語のサイトくらいは流し見でもGoogle翻訳などとの併用であってみるべき です。
自分の知らない言語だからと躊躇したり拒否してはいけません
目の前に答えがあるかも知れないのに遠回りすることになるかもしれないからです。

私は英語のサイトは普通にアクセスして内容を可能な限り理解しようと努力はします。
ちなみに、 英語は話せませんし学生時代の成績もかろうじて卒業出来る程度の最低レベルでしたよ sweat02

ちょっと話がそれますが、私は学生時代に可能な限り費用を抑えて3Dモデルにアニメーションを付けたいと考えたことがありますrun
日本国内でもある程度のソフトがありましたがしっくりくるものが見つからず英語圏まで手を伸ばしましたairplane
結果として当時$25dollar と言う比較的安い値段で手付けのアニメーション製作が出来るソフトを見つけて自らの手で購入しました cd
ほとんど、通販経験の少ない私でしたがかなり直感的だったので思い切って手を出しましたpaper
特に金銭トラブルもなくソフト自体も不備なく満足の出来る就職作品が製作出来ましたheart04

プログラマーに限らず、 世界中に開発者が居て色々な人がいますshadow
先人の知恵は上手に吸収して、真似にならないように自分で工夫して組み合わせてみたり派生させてみたりして自分の物にしていくことが大切 です。

1つ注意して頂きたいことは公開されている情報に 著作権があるかないか 、知識や技術に対して 特許などがないか 、自分の知識として吸収して利用する行為に問題がないかをよく見極める必要がありますsign03  (これは国内でも同じです)

グローバルな社会への進んでいるこのご時世なので狭い島国の情報に固執せず色々な考え方を持つ人の知識・ノウハウに触れてみるのは非常に有意義だし周りの人があまりしないことですnew
 


投稿者

おとは@開発隊長  

カテゴリー

全般

タグ

開発職 極意
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

第6章 前を行く人

投稿日時 2015/05/12 01:55:07

こんにちはsun

このウェブページでは開発者を目指す人や開発者になってこれから開発職を全うしていこうと思っている人に向けて私、おとはが思うことを綴っていこうと思います。

この記事に書いていることを鵜呑みにしたり、書いていることだけを実践しても結果を保証するものではありません。
大事なことはこれからあなたが 「どんな人になりたいか(キャリア)」 「何をしたいのか(ジャンル)」 「どこを目指すのか(目標)」 です。

中級者向けの内容へと切り替えていきますよsign01
新人を卒業して数年の歳月を経てしっかりと自分の力で仕事をこなしていける人向けの内容です。

それでは、 「第6章 前を行く人」 についてお伝えしますね。

突然ですが、「 前を行く人run 」ってどんな人だと思いますか?


ゲストさんは前を行く人ですかsign02
かなりアバウト質問なので”そうだ!”とも”違う!”とも言えるかなって思いますsweat01

私は前を行く人であると思っていますscissors
思いこんでいるだけと言われるとどうでしょうか・・・think
もし、実際違ったとしても 私は周りの人よりは「前を行く人」になろう としていますwink

なぜか?と言いますと、 簡単に言ってしまえば色々な事に貪欲だから ですnew
仕事以外でも、 傍から見れば仕事っぽいこと をしますpc
たとえば、ウェブサイトの開発やアプリやツールの開発などがそうですgame
でも、 これって仕事のため会社のためだと思ってやっていることか ・・・sign02

実際、そんなことを感じたことは全く無く、 非常に楽しい時を過ごせているshine と感じてます。
プログラマー的な事以外に絵の事だったり漫画の書き方だったりお話の構成の仕方のような グラフィックデザイナー寄りの事 から 企画職寄りの事 もしてます。
音響機材を買ってミキシングしてみたり録音してみたりDAWソフトをいじってたこともありますmusic

色々な知識を取り入れるってかなり楽しいheart04ことなんですsecret
新しい発見もあるし、他の職種で仕事をこなす人と濃い話も出来ます。
私の勤める会社では「デザイナーに近いプログラマー」として評価を得ていたりしますnote

色々書きだして行けばもっとありますけど、 自慢話か sign01って怒られちゃいそうなので止めますcoldsweats02

人生の楽しみ方は人それぞれだし、同じ時間をどのように過ごしたって良いわけですclock
でも、人生って長くも短くもあって1度しかないんですよねnight

子供の頃にあこがれた職業を目指して手に入れた人もいれば、別の道を見つけて違う楽しみを見出している人もいますhappy02

大切なことを書きますpen
今、あなたがしていることは最終的にあなた自身が決めたことです。
誰かに命令されたとしても従うも抗うもあなたが決めること。
親や友達や先生や先輩に「駄目な奴」とか「使えない」なんて言われようが自分は駄目な奴だって決めるかはあなたが決めること。
そしてあなたが決めたことやあなたの起こした行動はあなたの責任なんです。
ポジティブに考えればあなたの未来を
あなた自身が あなたの責任で 自由に決めることが出来るのです。
誰にも決定権はありませんのでそこを履き違えないでくださいね。


ちょっと話がそれたので戻しますよ。

「前を行く人」 どんどん知識を吸収しそしてそれを仕事に生かして結果を得ている人 です。
そして、 周りの人たちを良い方向へと引っ張って行ける人 です。

そんな「前を行く人」になりたいと思いませんか?
結果を得ればmemo お給料も増えるしdollar 出世もしますshadow
実力で色々な物をつかんでいくことが出来るnote

「前を行く人」になりたいって思った
ゲストさん 今から何をしますか?
何も思い浮かばないって言うのならあなたにはまだ早いかもしれませんbearing

でも、 早いからと言って何もしないよりは何かをすべき です。
何も浮かばない人は自分に足りないと思う知識について少しインターネット検索でも良いから調べてみましょうeye

何かを思いついた人は 今すぐ小さな事からで良いので実行 しましょうsign03
出来る限り、 その道のプロに並べるように頑張りたいと思うような好きなことが良い でしょう。

小さな結果の積み重ねで少しずつでも前に進むことが出来ます。
少しでも得た経験はあなたを確実に前進させ前を行く人にしてくれます。


投稿者

おとは@開発隊長  

カテゴリー

全般

タグ

開発職 極意
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

スレッドを利用した分散処理

投稿日時 2015/05/04 00:46:26

ゲストさん、こんにちはhappy01

高級アプリ製作の極意 ~WPF編~のお部屋へようこそ。
このお部屋では 第17章 の「 スレッドを利用した分散処理 」についてお話したいと思います。

アプリ製作において どうしても避けられないのは CPU負荷の高い処理 です。
たくさんのデータの中から検索したり難しい計算を繰り返し行ったりするとCPUをたくさん使用することになります。

高級アプリは基本操作する人を待たせないことが要求されますsign03
どうしても待ってもらう必要が出てきた時は「 処理を行っている状態を常に表示する 」や「 バックスレッドを使用して他の作業が出来るようにする 」などの対策が必要です。

バックスレッドは便利で表向きのUI操作とは別に自由に処理を行うことが出来ます shine
そして、スレッドの処理のタイミングで表向きのUIへ表示を反映させることが出来ます
scissors

バックスレッドをたくさん使用すればその分CPU負荷も上がるので全部スレッドを分ければ良いのかと聞かれたらそうではないので 本当に高負荷の処理に合わせて利用するのが好ましい

サンプルで実装しているスレッド処理は、「 Threadクラスを使用した高度なスレッド制御 」と「 Taskクラスを使用したシンプルなスレッド処理 」の2種類ですheart04


特に .Net framework 4.5から用意されたTaskクラスのスレッド処理は本当に実装が楽で扱いやすい 処理ですnote
1分掛かるアプリがあってそこへ10行程度のTask分散処理を記述したところ10秒程度になったなんてこともありますhappy02
お仕事で200人以上の人が使うアプリとかをちょくちょく作る私は 特に処理速度は気を使っていますよ

仕事でも下の単純な計算式を周りの人にしっかり伝えています。
アプリ利用者の作業コストdollar アプリによって待たされる時間clock ×人数shadow ×使用頻度pc

待ち時間が1分10人1日に10回使用するとしたら100分の作業時間が掛かるわけで、10秒の待ち時間なら10分で済むわけです。

1日に平等にある作業時間を とりあえずで組んだへなちょこプログラムで浪費しないように sign01


clip サンプルダウンロード
 


clip サンプルイメージ画像

おとは@開発隊長さんの投稿画像
解析用のボタンを2種類用意しました。
「解析」 のボタンはバックスレッドを使用しないので ボタンを押した瞬間から数分間、アプリの操作を一切受け付けません
「解析(スレッド)」 のボタンはバックスレッドを使用します。
バックスレッド処理のため処理中でも操作を行うことができます。

サンプルプログラムは2種類のスレッド処理を記述しています。
ソースコード内にマクロで機能の切り替えが出来るようになっていますのでUSE_THREADの定義を探して有効無効に切り替えてみて下さい。

サンプルの中では C言語向けのAPIをDLLから参照して呼び出しする少し高度な処理 も書いています。
独自制御のスレッド処理の場合はCPU割り当てもしたいことがあるので使用するCPU割り当てを行うための処理も参考になるかと思います。
 


投稿者

おとは@開発隊長  

カテゴリー

C#言語

タグ

Windows C# WPF
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

データの入出力の簡略化

投稿日時 2015/05/03 22:49:23

ゲストさん、こんにちはhappy01

高級アプリ製作の極意 ~WPF編~のお部屋へようこそ。
このお部屋では 第16章 の「 データの入出力の簡略化 」についてお話したいと思います。

アプリケーションの製作において 必然的になるものと言えばデータ入出力 もその一つです。
ここまで読み進めているゲストさんはもうアプリの1つや2つ作ったことがあるかもしれないですねnote
データの入出力処理はどうしていますかsign02

昔、私は自分でCSVや手書きのXMLなどで入出力を行っていましたdanger

プログラムを組んで1つ1つの入出力処理を書くって かなり重労働 なんですよねthunder
今回紹介する簡略化を行うとデータの入出力のための処理は 短めのコード2行sign03 で出来ますshine
(共通コードとして数十行書いたコードがあることが前提ですが)

今回紹介するのは XMLのシリアライズとデシリアライズによるファイルの読み書き についてです。

XMLシリアライズの利用の有無でどう違うのかまとめます。

heart04 XMLシリアライズを利用する

  1. クラス構造を書くだけでXMLファイルにメンバ変数の情報が入出力できる(利点)
  2. ファイルの入出力に関するコード記述が1度だけで使いまわせる(利点)
  3. 読み込みトラブルが発生しにくい(利点)
  4. クラスのインスタンスを直接変換されるので扱いやすい(利点)
  5. クラス構造に名前を付けておくことで自由なタグ名やアトリビュート名が付けられる(利点)
  6. クラス構造にルールを設けて記述を行う必要がある(難点)
  7. 読み込みトラブルに失敗した時に何が原因か分かりにくい(難点)
  8. ファイルサイズが大きくなりやすい(難点)


heart03 XMLシリアライズを利用しない

  1. 自由な形式のフォーマットで出力できる(利点)
  2. ファイルサイズを小さく出来る(利点)
  3. 読み込みトラブルが発生しても原因を特定しやすい(利点)
  4. 実装にコストが掛かる(難点)
  5. メンバ変数追加の度に変数からの読み込みや書きだし対応が必要(難点)
  6. 複雑なデータ構造にするとメンテナンスが大変(難点)


clip サンプルダウンロード
 


clip サンプルイメージ画像

おとは@開発隊長さんの投稿画像
4つのメンバ変数を持つクラスをUIに割り当てました。
開くボタンでXMLファイルを読み込みUIへ直接反映します。
保存は入力されている情報をXMLへ書き込みします。

おとは@開発隊長さんの投稿画像
XML中身はこんな感じです↑(横長だったので改行入れてます)

今回はシンプルなデータでしたので4つのアトリビュートを持つ1つのクラスで構成されています。
エレメントを持たせたり階層構造にするとより 複雑なXMLファイルが入出力出来る ようになります sign01
コードを見て頂くとお分かりになると思いますが、変数名とXMLに出力されている名前は別扱いしています。
変数名直接だと見難くなったりもするのでアトリビュート名を記述して分かり易くしています

 


投稿者

おとは@開発隊長  

カテゴリー

C#言語

タグ

Windows C# WPF
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

データの保護

投稿日時 2015/05/03 21:37:46

ゲストさん、こんにちはhappy01

高級アプリ製作の極意 ~WPF編~のお部屋へようこそ。
このお部屋では 第15章 の「 データの保護 」についてお話したいと思います。

アプリケーションの開発が進み設定データや各種データの保存を行うようになってくると色々と気になってくることがあるかと思います。
前回のデータサイズもそうですが、 データの構造 ってあまり 外部公開すべきではないことがあります
特に ノウハウが詰まったデータ構造をしていると言うのであればなおさら です。
データサイズの記事でもデータの安全性について述べていますが今回はよりデータを保護するために暗号化を施していきます。

今回は、 TripleDES を使った簡単な暗号化についてサンプルを紹介します。
TripeDESは安全面でいえばややSHA-2などに比べれば劣るのですが.Net Frameworkで簡単に利用できるAPIが用意されているので紹介 しています。
24bitのキーと8bitの初期ベクタの2つの情報を使用して暗号化、複合化を行います。
この2つの情報が暗号化時と複合化時に必要になります。
なので 暗号化した外部ファイルなどどこかに情報として保持しておく必要がありますのでご注意 ください。

clip サンプルダウンロード
 

clip サンプルイメージ画像

おとは@開発隊長さんの投稿画像
今回のサンプルでは 文字列を相互に暗号化・複合化するための処理 を作成しました。
単純には解読できないデータになりますので秘密の文章交換などにも利用できそうですね。

内部の処理ではバイナリデータを取り扱いしていますので、 バイナリデータとして出力したファイルを暗号化 したり、 ネットワークの通信で利用するデータを暗号化 したりするなど応用が利きますよ。


投稿者

おとは@開発隊長  

カテゴリー

C#言語

タグ

Windows C# WPF
  • Yahoo!ブックマークに登録
  • このエントリーをはてなブックマークに追加

ページ切り替え


ページビューカウンター
145146
ウェブページ
+ハードウェア編
+ソフトウェア編
+ノウハウ・技能編
+道具・雑貨編
+初級編
+中級編
+上級編
+番外編
+初級編
+中級編
フリースペース
☆ハイレゾ音源☆

☆お絵かきするなら☆

☆カスタムPC☆

ギャラリー
カテゴリー
ほびぃ~
くりえいてぃぶ
電子回路 (14)
ぷろぐらみんぐ
C#言語 (21)
C++言語 (4)
PHP言語 (3)
あいてぃー・こんぴゅーた
ぷろふぇっしょなる
全般 (16)
れびゅー
お気に入りたぐ
ツイッター
お問合わせ
ぶろぐ管理者にお問合わせしたい時は専用フォームから連絡が行えます。


  • ipv6 ready
Blogle Storeet Core System v2.0a
おとはうぇぶあぷりぶ (IPv4) v2.6a
Copyright (C) 2014-2018 Blogle Storeet Development Team.