WWDC ...
今年のDDWC、いろいろハードの新作に期待していただけにソフトウェアアップデートだけの発表だったのは少し残念 :(
今使っているMacBookpro2012モデルもそろそろ替え時。
2017年型MacBookProのキーボードがもう少しマイナーチェンジされたらなーと思いなかなか機種交換に乗り出せません。
しかし、やっぱり何と言ってもエンジニアがこだわるのはキーボードです。
毎日数時間使う訳で自分も最高のキーボードを求めています。
今、自分の研修クラスでも様々な外付けキーボードが持ち込まれていますが、いまだにどれが一番なのか、結論は出ていません。
しかーし。疲れのたまった社会人エンジニアは即決でこちらを購入してしまいました。
https://www.amazon.co.jp/gp/product/B00EN3DSS6/ref=ox_sc_act_title_1?smid=AN1VRQENFRJN5&psc=1
もうキーボードうつのつらいもの。。。
今後のブログ作成の為にも6000円の出費なんて屁でもないね!
New Week New Life
I love my City.
Yesterday and today, I reserched UTF-8.
Presentaion was really nervous but it's already gone :poop:
RestDay
巨象は踊る
RFP
リクエストフォープロポーザル。
ソフトウウェア開発の初期(超上流工程)に作成される。
ユーザがベンダー群にRFPを送る
開発工程の中のRFP(なにを作りた決める)
40%のプロジェクトは遅延する。
要件定義のために遅れる(ウォーターフォールの場合)
RFPとは.
ユーザビリティ
ユーザビリティ = 有用性
ラブレターの品質 =ユーザビリティー
ユーザビリティテスト:ユーザの心理をテスト webアンケートが主流。
My Presentation
制限時間は10分
日曜日リサーチしたことはすべては話せない
10分で語れるストーリーを作ろう。
ランニングコスとは.
ランニングコスト(Ring Cost). 運営にかかる費用
イニシャルコスト導入にかかる費用
ビッグデータ
- 3V
- Volume(量)
- Velocity(頻度)
- 1秒間で14万ツイート
Variety(種類)
- 非構造化データ
BigDataの効用
- 今まで知り得なかった情報を知ることができる
- 今の取り組み方では、経済的効果があまり得られていない
ビジネスモデル
- ビジネスモデルとは
- ビジネスとしてお金を継続的に稼ぐ仕組み
- ビジネスモデル作成
- どう戦略的にするのか
- 顧客にとって価値がどれくらいあるの
- ビジネスモデルキャンバス
- (書き直してもいいのか?)顧客設定が間違っていたら?
- 顧客設定はどれくらい詳細にやるべき
- ブラッシュアップができる。
- Business model you (神田さん)
- who what how (だれに なにを どのように)
- フレームワークは調べてみるといい
- IBMはコンサルティング会社に
- ITとビジネスは近い
ドメイン
- ドメインとは
- ネット上の名前
- ドメインを使わない場合: IPアドレスとドメイン名を変換する
- 名前解決
- ドメインの種類
- 無料ドメイン
- 独自ドメイン、お名前ドットコムなどで購入できる。 (一回払えばok?)
- ビジネス領域としてのドメイン定義もある
インフラ
- インフラとは
Infra + Stracture = 下部の構造
通信インフラ、交通インフラなど範囲を絞って話してね インフラ:産業インフラ:blush: 社会インフラ: :cowboy_hat_face: 絵文字使ってみたかっただけー
種類
- インフラエンジニアとは
- NWエンジニア。サーバエンジニア。DBエンジニア。ファシリティエンジニア
- インフラエンジニアは非常に幅が広いため、分業化している
- エンジニアの定年35歳説(とかとか)
- フルスタックエンジニアしか生き残れない説(とかとか)
- フルスタックエンジニア
- 技術の選択肢がLAMPだけでなくなった
- OS WEB DB など様々な分野の知識が必要
- OSI参照モデルでいうとどっからどこまで?(全部です)
- オフショア開発ー思ったよりコスト削減できなかったー品質が担保できなかった
- 1000人規模だと1人情シスの会社も沢山あるよ
- 1人情シスでやってきた人(現場の叩き上げがすごい)
ストレージ
- 貯蔵方式
- インターフェース
- SSD
- 基本的な作動方式
- Floating gate transistor.
- S/M/T Level Cell.
- HDD:Sector SSD page Block
- サーバーストレージ
- どうなってるの?
Iot
- InternetOfThing (of oは小文字では?) IoT
- Cassandra -IoT向け
- メリット
- 大量のデータ
- デメリット
- デバイスが乗っ取られる
- 自動運転車よりも現実的な例は?
- IoTに対する新しい給電方法はあるのか? -なんでPandGがIoTを言い出したの?
オープンデータ
Test,Test
Java Memo
拡張for文
for(型 変数名 : 式) 文; }
ArrayList
ArrayList(コレクション)のサンプルプログラム 拡張For文と合わせて
import java.util.ArrayList; import java.util.List; public class EnhancedForCollection { public static void main (String[] args){ List<Integer> numbers = new ArrayList<Integer>();//[1] for (int number = 1; number <= 10; number++) {//[2] numbers.add(number);//[3] } for (int number : numbers) {//[4] System.out.println("[5] number = " + number); } } }
[1] ArrayList型の変数numbersを宣言しインスタンスを生成する。 [2] [3] numbersに1から10の値を追加する。 [4] [5] numbersに含まれるすべての値の表示を繰り返す。
クラスの宣言
public class クラス名{ フィールド宣言 フィールド宣言 フィールド宣言 メソッド宣言 メソッド宣言 メソッド宣言 コンストラクタ宣言 コンストラクタ宣言 }
フィールド宣言
フィールドは、型と名前を持っています。staticを付けるとクラスフィールドになります.
int field; インスタンスフィールド static int classField; クラスフィールド
メソッド宣言
メソッドは、型と名前と引数列を持っています。staticを付けるとクラスメソッドになります。
int method(引数列){ インスタンスメソッド ・・・ } static int classMethod(引数名){ クラスメソッド・・・ }
コンストラクタ
コンストラクタは、インスタンスを生成し、初期化するために使われます。
MyClass obj = new MyClass();
復習、復習
かわいい
JavaMemo.
JUnit
Junitの基本的な仕組み
-TestRunner
- テストクラスを実行し結果を表示するインターフェース
-テストクラス
- テスト条件が記述されたクラス
- テスト担当者はこれを作成する
- 対象クラス
- テストクラスを通じてテストされる対象クラス
-JUnitの利点
- 以下の利点によりテスト処理が簡潔に記述できる
- 評価結果の表示結果は記述しなくても良い
- 1テスト1メソッドで記述される
- 値の比較メソッドが基底クラスで提供される
- Junitの起動
- テキストUIとGUIがある
- テストクラスの作成方法
- classのアクセス制御はpublicで定義する
- Junit.framework.TestCaseを拡張する
- testではじまるメソッド名を設ける
- testメソッド内にテスト処理を記述する
- Assertクラスの評価メソッドを使用する
- コンパイルする
- TestRunneraより呼び出す
JUnit best practice
- テストケースのコンストラクタでテストの準備をしない
- ソースコードとテストコードは同じ場所に置く
参照ページ
P118 テストクラスの作成方法
p116 Junitの動かし方 P139 演習問 p124テストクラスの作成
UML概要
Unified Modeling Language
- ソフトウウェアの設計/仕様に関する標準的表記方法
- ??さんによって考案
- 主にオブジェクト指向分析設計で使用される
- OMG(Object Management Group)により標準化作業が行われる
- 開発プロセスを取り巻く人々
- 要求。分析。設計。実装
UMLによる統一化
共通の表記方法はコミュニケーションを促進するUMLダイアグラムの種類
いろいろユーズケース図
- システムに対する要求を簡潔に表記
- アクター システムを取り巻く人や物
- ユースケース システムに期待される要件
- システム システムが網羅する範囲
- 線
- ユースケース記述
アクティビティ図
アクティビティその他の記号
- フォークノード/ジョイントノード複数の処理が同時に発生する状態を表現
コミュニケーション図
メソッド呼出し
クラス図
クラスの静的な関係性と構成を表記
リバースエンジニアリングもできる
クラス図 可視性
+ public
~ default
# protected
- private
クラス図 リンク
クラス図 多重度
シークエンス図
- オブジェクト間の動作相互作用を表記
ノート(注釈)で説明する(はじめのうちはもっとできる人が直してくれるよ)
分析時と設計時の詳細度の違い
- 分析時
- 各要素の概念を列挙する
- 日本語圏では日本語で要素を記述することが多い
- 詳細設計
- 分析モデルから導入する
- プログラムで使用できるような詳細を記述
- 詳細な引数や戻り値、初期値等を記述
- 開発言語への依存が強くなる
p18 クラス図 その他 P22 メモ
設計とかやりたければ、早い段階で勉強してもいいかもね。
できてあたりまえのことは
注意点
- できた、できないの報告は非常に重要。
- 実力があろうがなかろうが毎日の報告がなければ、
- プロジェクトからkickoutされます。
- 遅刻、これは非常に心象が悪い(遅れることがわかった時点で連絡)
先輩社員 kさん
UI/UX デザイナー
Jediとは
1.事業ごとの類似システムを統合
2.プラットフォーム化 を目指すプロジェクト
フロント。コール系システムの画面から改革。(Front First)
一目でわかるフロントデザインを作成
- デザインプロセス
- understand → diverge - decide → prototype - decide → 後工程へ
- 会社なので、チームで価値を出すためにはどうすればいいか?
- チームメンバーの得意なこと、苦手なところを理解する
- 新人のうちに挑戦しよう (失敗も経験です)
- やりたいことは口に出そう
- 得意分野を武器にしよう
- 自分の得意分野、不得意分野を洗い出そう
- デザインは設計のようにロジカルに学ぶことができる
- 基礎のITスキルはつけた上で言いたいことは行ってください
Java1のほうは何度も実機でやっておこう
コネクションフレームワークとジェネリックス
オブジェクトを効率よく扱う
- Javaプログラミングでは、数多くのオブジェクトを扱う
- オブジェクトを効率よく管理できる方法はないか
- 「配列」でオブジェクトを管理することが可能
- 問題点 予めオブジェクトの数が決まっている必要がある
- コレクションフレームワーク
- Java言語はオブジェクトを効率よく扱うための機能を提供している
- オブジェクトを効率的に管理できる
java.utilパッケージ
- プログラムがよく使うユーティリティクラスをまとめたもの
- java.utileパッケージには以下のクラスが定義されている
コレクション、エレメント、イテレータ
- コレクションフレームワークで使用する用語とその機能
- コレクション
- 複数オブジェクトの集合体
- エレメント
- コレクションに格納された一つ一つの要素(オブジェクト)
- イテレータ
- コレクションにエレメントを前方検索する反復子 -exクレーンゲーム
- ガラスの器 = コレクション
- 中のぬいぐるみ = エレメント
- クレーン = イテレータ
コレクションフレームワークの階層構造
- コレクションフレームワークは階層的に規定される
- コレクション格納形式のための規定
- Collection
インターフェース - Map<K,V>インターフェース
- コレクション操作形式のための規定
- Iteration
, Enumeration インターフェース
Collectionインターフェース
- Collection
インターフェースは、全てのコレクション機能の原点になるインターフェース - 書き方は別記
ArrayListクラス
- List
インターフェースを実装したクラス - 参照型を全てコレクションできる
- nullも格納可能
- 基本データ型は格納不可(使いたい場合はラッパークラス)
- コレクションするための様々なメソッドが定義
- オブジェクトを追加、削除
- オブジェクトの数え上げ、順序の並べ替えをする
ArrayListクラスのメソッド
- 別記
- 大量のエレメントを取り扱う場合には、iterator()メソッドを使用することが一般的です。
ArrayLIstクラスでコレクションする例
ジェネリクス
- クラスやメソッドに特定な型を関連づける機能
- 型変換が不要となり、読みやすくなる
- エラーをコンパイル時に検出できる
- コレクションに、型チェックを導入
- クラスやインターフェースにパラメータを指定できる
Vectorクラス
Enumerationインターフェース
- コレクションされたオブジェクトを列挙するための反復子
Setインターフェース
-オブジェクトの重複がないコレクション
Map<K,V>インターフェース
- インデックスの代わりにキーを用いてオブジェクトを管理する
HashMap<K,V>を使用してコレクションを追加する方法
- Map<K,V>インターフェースを実装したクラス
Hashtable<K,V>の概要
- Hashtable<K,V>クラス
- 同期されたマップ機能を提供
1-9 Iteratorインターフェースを取得
ドキュメンテーションコメント
Javadoc形式のAPIドキュメント
- Java標準APIドキュメントで使用されている書式
- HTMLファイル形式のドキュメント
- 作成したプログラムの仕様書をJavadoc形式のドキュメントとして生成可能
- ドキュメントはプログラムの共同開発時に有効利用
ドキュメンテーションコメント
クラス、インターフェース
クラス、インテーフェースに対するタグ @author 著者名 - フィールドに対するタグ
テストの重要
- ソフトウェアの目的は誰が決めるのか?
- 多くの場合「仕様」に定める
- 「仕様」は「契約」に定められる
- 開発者は契約を満たすべくプログラムを作成する
- 仕様が無い場合は検証ができない
- ソフトウェアが正しいことを示す。
- ソフトウェアが仕様どうりに動作することを確認する
- ただし、100%正しいと証明することはできない
- ソフトウェアからエラーを発見する
- ソフトウェアの「品質」を保証するためにテストは必須の作業項目
- 単体テスト
- ブラックボックステスト
- ホワイトボックステスト
- グレーボックステスト
受け入れテスト
「正しいプログラム」の一般的な認識は「仕様が満たされていること」
What happened my test ?
Java Memo
キレイだなー(過去)
インターフェース
- クラスの「型」の定義を行うために用いる
- クラスへの定義はextendsキーワードではなくimplementsキーワードを用いる
- メソッドは全てabstract
- クラスはインターフェースを「継承する」とは表現せず、「実装する」と表現する
インターフェースを用いる利点
- メソッドの中身は実装クラス側に委任
- インターフェースは多重継承が可能
- ひとつのクラスは複数のインテーフェースを実装できる(多重実装)
インターフェースの定義
- classキーワードの代わりにinterfaceを指定する
- インターフェース内でのメソッドは暗黙的にabstract,publicとなる
- インターフェース内のフィールドは暗黙的にpublic,final,staticとなる
インターフェスによる型変換
- 型に関して、抽象クラスと同様、異なったクラスを同一の型として構成でき、集約的な処理が可能になる
インターフェース内の変数定義
- 暗黙のうちにpublic,static,finalである
- 定数であり初期化されなくてはならない
なぜJavaにインターフェースがあるの?
- 一度書けばどこでも動く
- メソッドがどこでも動くように(DBやGUIなどで)
例外
例外処理とは
- 例外を発生させること、例外を他に渡すことを、「スローする」と表現する
- スローされた例外を受け止めることを、「キャッチする」と表現する。
例外クラスの階層構造
- Throwableクラス
- 全ての例外クラスのスーパークラス
- Errorクラス
- 実行環境内部で発生したハードウェア寄りのエラー
- 例外処理は行わない
- Exceptionクラス
- プログラム内部で発生した種々のエラー
- 例外処理が必須
- RuntimeExceptionクラス
- プログラム実行時に発生するエラー
- 例外処理は任意
例外処理
- 例外発生時の後始末処理や対処のことを例外処理という
- 2種類の例外処理
- try-catch文を使用する
- throws句を使用する
try-catch文を使用した例外処理
- try-catch文は例外処理を行うJava言語の文法
- 下に行くほどスーパークラスになる
finally節
- try-catch文の最後にfinally節を任意で記述することができる
- finally節は例外が発生してもしなくても必ず実行される
System.exit() メソッド
- catch節の例外処理コードの最後に、System.exit()メソッドを記述するといい
throws句を使用した例外処理
- throw句では発生する可能性のある例外を宣言する
ユーザが定義する例外
- JavaAPIで用意している例外クラス以外に、ユーザは独自の例外クラスを定義出来る
- アプリケーション固有の例外クラスが必要な場合は、ユーザは例外クラスを作成する
- Exceptionクラスのサブクラスとするのが一般的
パッケージ
大量のクラスを扱う際の命名規則の問題
- 名前が他のクラスと重複してはならない
パッケージ
- パッケージとはクラスをグループ化して管理すること
- パッケージ化の特徴
- 階層化して管理
- 完全修飾名で呼ぶ
- クラスファイルを置くディレクトリ
- アクセスの制御が可能
packageキーワード
- パッケージを行うにはpackageキーワードを使用
- package宣言の注意点
- ファイルの先頭に記述
- パッケージ名は.(ドット)で区切る
- クラスの外に定義する
パッケージ化されたクラスの利用方法
- 同一パッケージ内のクラスは単純クラス名で呼び出し可能
- 同一パッケージ外のクラスは単純クラス名だけでは使用できない
- 同一パッケージ外のクラスを呼び出す方法
- 完全修飾名
- importキーワードを使用する
アクセス制御
- アクセス制御とは、作成したクラスやインターフェース、またメソッドやフィールドの使用範囲を定義するためのセキュリテイ機能
- アクセス制御はパッケージや継承関係と密接な関係
- アクセス修飾子の種類
public修飾子
- public修飾子の場合、どのパッケージのどのクラスからもアクセス可能
失敗からどう立ち直るの?
1 Corinthians 10:13 New International Version (NIV)
13 No temptation[a] has overtaken you except what is common to mankind. And God is faithful; he will not let you be tempted[b] beyond what you can bear. But when you are tempted,[c] he will also provide a way out so that you can endure it.