サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
体力トレーニング
www.happiese.com
第二の基本は、「共通化」「正規化」です。 共通化は、同じものは一つにまとめることです。正規化とは、データの冗長性を排除し、データの一貫性と整合性を持ったデータ構造にする手法です。通常、データモデルにおいて用いられますが、ここでは便利な言葉なので、処理に対しても用いています。 なぜ、共通化が重要なのかというと、重複をなくすことができるからです。処理やデータに重複があるというのは、物事が整理されず、単純なものが複雑に見え、理解しづらくなります。一緒にしてしまえば一回追えばすむものを、両方を見なければならなくなります。 そして、1つにまとめられていれば、変更は一箇所で済みます。重複があると、複数直さなければならないのです。そして、もし重複があって、片方を直し忘れたりすることがあると、不整合が起きます。たとえば、生年月日を管理していてある箇所では西暦で保存し、別の箇所で同じものを和暦で保存していて
SE/PGの仕事は、システムを開発することです。その際、必要となる能力、あるいは性格とも関連してきますが、以下のものです。 1.問題解決能力/創造性 SE/PGは、与えられた課題に対して、解法を見つける必要があります。システムを組み合わせるマクロなレベルから、関数をコーディングする中でアルゴリズムを見つけたりすることです。どうすれば、効率的な処理を思いつけるか、という点です。時にはパズル的な能力が必要になります。この点では、数学に強い人間の方が有利です。問題解決能力は、どんな仕事でも必要なことですが、SE/PGにおける問題解決は、数学的な問題が絡んでいます。 できる人間のソースは、非常にスマートで、無駄がありません。ところが数学力の低いプログラマーの場合、だらだらと長ったらしいソースになります。問題を解決するために、最も無駄の少ない、シンプルな解法を生み出すのではなく、力仕事でごり押しで結
プロジェクトを成功させる上で、重要なのは、工数管理です。工数を正確に見積もり、スケジューリングし、また機能追加や修正要求に対して適切に対応することです。不確定な要素が多い中で、プロジェクトを期間内に成功裡に終わらせるのは、奇跡に近いものがあります。 プロジェクトの失敗の多くは、工数管理ができていないことにあります。 客が時間を取れずに要件がまとまらない 頻繁な仕様変更・機能追加 工数の過小評価 無理なスケジュール 仕様のバグ 設計ミス 拡張性のない設計 実装方針ミス 要員のスキルの低さ 無理な要件(性能要件など) など、プロジェクトの進捗を妨げる多くの要因があります。 工数の過小評価 なかでも、工数の過小評価は重大なものです。見積もりの段階ではざっくばらんに見積もってしまうため、実際プロジェクトが始まってみたら作業量は数倍になんてこともあります。また簡単にできると思われたことが、プラットフ
[ホームへ戻る] [戻る] ここではWeb上で使えるちょっとしたツールについて紹介したいと思います。ネットワーク関連や変換程度のものですが、役に立ちます。 ヘッダの表示です。これぐらいのものはだれでも作れると思いますがよく使います。 xhaus.com HTTP header check 確認くん(VIA the UGTOP) Pingの送信ができます。 photobox ping server test receiver window pingチェックテスト【外部からのping接続確認】 DNSのLookupをレポートします。 DNS Report 外から自宅サーバへのアクセスを確認します。用途が違いますが。 Excite エキサイト 翻訳 英語翻訳>ウェブページ翻訳 Mailのリレーのテストができます。メールサーバが踏み台にされないかどうかの試験に使えます。 Mail relay te
ある本のカバーに、「十年後も通用する基礎を身に着けよう」というフレーズが載せられていました。これは、次々と新しいことが出てきて、絶えず勉強をし続けなければならないことに嫌気が差している、プログラマーにとっては興味をひきつけるものです。 「もう五年後にはJavaなんてないだろう」 「コーディングなんて誰でもできるようになって価値を引き出すことはできない。次の時代に必要な能力は云々」 などということが巷で言われると、今自分が学んでいることがすごく無駄なように見えてきます。 確かに時代は変化します。とはいえ、システムの本質は変わっていないのではないか、と思えます。アプリケーションを作成するにあたって、重要なポイントがあります。これはどのようなシステムを作るうえでも、理解し習得しなければならない大切なことです。 この業界で仕事をしていくうちに共通項が見えてきます。それはどんな分野であっても、またソ
[ホームへ戻る] [前へ] [上へ] [次へ] システムの構築 ここではアプリケーションのアーキテクチャー、設計を行うための指針について考えたいと思います。 システムの構築はいろいろな要素から成り立っています。機能を実現するための、アプリケーションだけでは成立しません。アプリケーションを支える、アプリケーションサーバなどのミドルウエア、それを支えるOS、さらにその下にハードウエアがあります。デスクトップアプリケーションであればミドルウエアは不要で大体アプリケーションとOSを考えればいいでしょうが、サーバアプリケーションとなると考えることはいろいろあります。 そのマシン単体では動作せず、クライアント機についても考える必要があります。そのクライアントとの接続にはネットワークが用いられます。ネットワークではケーブル、スイッチ、回線等いろいろ考慮することがあります。また一台のサーバですべてをこなす
追記:量が多い場合にはエラーになる場合があるため、なるべく細かく期間を区切って実行してみてください(ファイル名は同じで上書きになるためDL時にリネームしてください)。200程度の記事であれば大丈夫です。
プログラミングスタイル プログラミングをするスタイルには以下の二つがあります。 1.行き当たりバッタリのプログラミング できるところから、思いつくところから、思いつくままに進めて試行錯誤しながらやっていき、共通化できるところをメソッド、クラスにしていく。 2.クラス・メソッドのの構造をあらかじめきちんと設計してから行う。 優秀なプログラマはすべて2のタイプで、1は初心者だと思っている人が結構います。しかし、実際には優秀なプログラマでも1のタイプの人は結構います。パッと思いついたことをダーッと書き、それを修正して、結果としてきちんとしたクラス構造ができているといった感じです。ある程度経験のあることなら、頭の中に設計図があるので、それに沿ってプログラムを書き、外部にクラス設計などを書くことはありません。 最初にきちんと設計をしたつもりでも、実装段階では想定したとおりに行かなかったり、抜けがあっ
[ホームへ戻る] [前へ] [上へ] [次へ] Webアプリケーションの作成の一例(家計簿のアプリを作ろう) ここでは、アプリケーションの作成の一例として、家計簿のWebアプリケーションを題材にして、開発プロセスを説明したいと思います。データ中心指向的なアプローチで進みます。 (詳細には立ち入らず要点をさらっと流していきます。また機能面についてのみ進めます。) 要件を明確にする まずは、どんなアプリケーションを作成するのかを明確にします。アプリケーションの概要、目的、特徴を列挙します。 家計簿をWeb上で記帳できるようにする マルチユーザ(セキュリティに配慮)、マルチグループ 携帯からの利用 CSVから取り込み可能 CSV出力可能 様々な統計可能 銀行口座、クレジットカードをサポート(数無制限) 固定的な出費はあらかじめ表示 家計の単位は、グループとします。グループは階層的に構成できるよう
新規ドメインの取得に伴い、これからより情報、サービスを充実させて行く予定です。 小生の本職はSEですが、これまで学んだこと、経験したことを整理して、HP上で公開したいと思い、 このページに掲載することにしました。入門と言いながら対象は中級者以上です。これは小職のレベルが入門レベルでありながら、説明の仕方が初心者向けになっていない、というのが適切かもせれません。走り書きが多いので意味不明な点やおかしな点はどしどし指摘してください。小職はJavaが専門でした、Javaを基本にして内容の説明をしています。 当ホームページの内容は、私個人の独断が含まれていますので、了承の上ご賞味ください。 もし指摘や質問がありましたら、 まで ご連絡くださると、ありがたいです。 ■作者について VB, C, Java,ネットワーク関連のプロジェクトに関わる。
ソフトウエアのテストは、一般的に、次のフェーズからなります。 単体テスト 結合テスト システムテスト 運用テスト 1.単体テスト 単体テストとは、UT、Unit Testを意味しますが、何をUnitと見なすかは、プロジェクトによって異なります。最小はメソッド単位(場合によってはその中のブロック内)で、さらにクラス単位、画面単位のいずれかになります。単体といってもある程度は結合した状態で行うことがあり、プロジェクトによって何を指すかは微妙に違います。画面の場合、1クラスから成っている場合もあれば、複数クラスから成っている場合もあります。 Webアプリケーションで1画面という場合、次の3つのテストが絡んでくるので、どのように区分けをするか注意が必要です。 1.初期表示 前のページから渡されるパラメータやセッションその他の情報によって同じサーブレットもしくはJSPでも表示が異なってきます。 2.
オブジェクト指向プログラミングとは、オブジェクト(もの)を中心に考えていくプログラミング手法のことで、数年前から特に注目を集めているものの、実際にはもっと古くからある手法です。 巷にある本の解説には、「もの」ということを取り上げて、解説していますがが、それではオブジェクト指向が何を意味しているのかわかりづらいものです。 オブジェクト指向に対するプログラミング手法には、手続き型プログラミングがあり、それと対比をするとわかりやすくなります。 以下の説明はまだ洗練されていないので、時々内容がアップデートするかもしれませんがご了承ください。 オブジェクト指向と手続き指向の違い オブジェクト指向:Java, C++, Smalltalkなど 手続き型:Basic, C, COBOL, アセンブラなど プログラミングとは、コンピューターに対する一連の命令を作成することです。 例えば、画面に文字を表示す
ここでは主に業務アプリケーションで、データを扱うときに、注意する点について述べます。 削除パターン 親子関係にあるとき、親が削除されたときに子をどうするか決めておきます。 RESTRICT 子があるとき削除できない CASCADE 子もすべて削除される SET NULL 子の参照をNULLにする 論理削除 削除フラグを立て子はそのままにする 論理削除を行なう場合の注意点 データを削除する際、実際物理的にはデータベースから削除せずに見かけ上消す論理削除がしばしば用いられます。この利点は、誤削除しても復活させる手立てを残しておくことや、削除されたものを後で参照できることなどがあります。削除というよりは無効化という方が適切な場合があります。 例えば、案件テーブルに担当者を入れる項目があったとしてます。論理削除であれば、担当者が退職した場合でも、あとで誰が担当者であったかを分かるようになります。一
ここでは、システムを開発していくことについて触れていきたいと思います。例の如く、ここに書いてある内容は、私の経験から出たもので、一般的に列挙されている内容と異なる場合があります。 目次 システムを作成する上での重要なポイント 3つの基本(分類・共通化・抽象化) リファクタリングについて オブジェクト指向入門 デザインパターンを読み解く データ中心指向とオブジェクト指向 開発プロセス テストについて ドキュメントについて データを扱うアプリケーションの注意点 セキュリティについて フレームワークについて アーキテクチャ、設計について Webアプリケーション作成の一例 補遺:ブログから転載 SE/PGのための学習ガイド
オブジェクト指向プログラミングと対比されるものとして、手続き型のほかに、データ中心指向があります。データ中心指向は、大量のデータを扱う業務アプリケーションで適用される方法論で、機能や処理を中心に考えるのではなく、データを中心に考えていくアプローチです。機能や処理に比べてデータは不変であるため、データが重要な意味を持ってくる業務アプリケーションでは、この考え方が適しています。 オブジェクト指向との違いは何かというと、簡単に言えば、オブジェクトを中心に考えるか、データベースを中心に考えるかの違いです。 ドメインを中心に考えている点では、どちらも一緒です。ドメインとは、アプリケーションが解決しようとしている問題領域のことです。ドメインを明確にする際、モデルが作成されます。モデルは、その問題領域で扱うデータを構造化し、関連を明確にし、アプリケーションの本質的な部分、骨子を明確にしていくものです。そ
ポリモーフィズム(サブクラスによる切り替え、抽象化) ここに分類されるのは、オブジェクト指向の第3原則、ポリモーフィズムを使用したパターンです。ポリモーフィズムを使用すると、動的に使用するクラスを切り替えることができます。<参照> 他に分類されているものでも、ポリモーフィズムが重要な位置を占めているものもありますが、ここではそれしか使われていないものを扱います。 ただデザインパターン全体を通して強調されているのは、インターフェースでプログラミングするということです。実装への依存をなくし、そうすることによって設計の骨組みを明らかにするのです。 Template 次のようなメソッドがあった場合に、処理Bのところを条件によって変えたい場合があるとします。 class Hogehoge { void doit() { ... 処理A ... ... 処理B ... ... 処理C ... } }
このページを最初にブックマークしてみませんか?
『www.happiese.com』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く