AWS で twitter でログインするWebサービス

AWS で twitter でログインするWebサービス

以前、ローカル開発環境で行おうとしたけど
うまく起動しないため、
AWSで環境を構築してリトライ

https://dev.twitter.com/
へアクセスして

http://dotinstall.com/lessons/tw_connect_php_v2/21902
の動画を参考に再度 twitter アプリの登録

ほとんど前回と同じだけど
一応新規にアプリを作成

ただし、アプリの名前に twitter と入れないこと

website
には、自分のドメイン、もしくはIPでOK
これはローカルのときとおなじ

次に
Callback URL
ここには
http://ドメイン/tw_connect_php/callback.php
というように
なるべくおなじになるように設定

まずは読みのみなので
Read only のままにしておく

次に、AWS側の設定
必要なものとして
codebird.php が必要なので
すでにダウンロード済みのものを scp 公開鍵認証で転送する

scp -i ~/.ssh/公開鍵 codebird.php ユーザ名@IPアドレス:/home/ユーザ名/

codebird.php の入手は
https://github.com/mynetx/codebird-php
から可能

転送完了したら、
必要なDBを作成する
ssh 公開鍵認証でログインし

すでに、以前 MySQL はインストール済みなので
mysql -u root -p
で mysql root パスワードを入力し
DB作成開始

DB作成は
http://dotinstall.com/lessons/tw_connect_php_v2/21903
を参考に行う
とはいっても、違いはパスワードくらいのみ

create database dotinstall_tw_connect_php;
でDB作成して

grant all on dotinstall_tw_connect_php.* to dbuser@localhost identified by ‘ パスワード’
;
でユーザ作成

use dotinstall_tw_connect_php;
で使用するDBを指定

create table users (
id int not null auto_increment primary key,
tw_user_id varchar(30) unique,
tw_screen_name varchar(15),
tw_access_token varchar(255),
tw_access_token_secret varchar(255),
created datetime,
modified datetime
);
でテーブル作成

作成内容は
id int not null auto_increment primary key,
が連番の主キー

tw_user_id varchar(30) unique,
がユーザIDの格納

tw_screen_name varchar(15),
がユーザ名の格納

tw_access_token varchar(255),
がAPIアクセスためのアクセストークン格納

tw_access_token_secret varchar(255),
がAPIアクセスのためのアクセストークンシークレット

フラグメンテーションの書き方

フラグメンテーションの書き方
とりあえずメモ
フラグメントのclass属性に
対応するfragmentクラスを指定
ちなみに
com.example.fragmentsample.MainActivity$PageListFragment
これは
完全修飾のクラス名
分類すると
com.examplesfragmentsample
がパッケージ名
MainActivity
がクラス名
PageListFragment
がインナークラス名
インナークラスは、内部クラスという意味
あと、idプロパティに
“@+id/titles”としてあるように
フラグメントにもユニークIDが必要
ちなみに、ユニークとは
ほかと被らないという意味
このIDは
DOM操作のときみたいに
フラグメントの特定以外にも
フラグメントの再生成するときにも使える
ということで、Activityのレイアウトの中へ
Fragmentを記述する

フラグメントのサブクラス

フラグメントのサブクラス
フラグメントには、4つの代表的なサブクラスがある
ダイアログウインドウを表示する
DialogFragment
一覧を表示する
ListFragment
設定情報を表示する
PreferenceFragment
WebViewへWebページを表示する
WebViewFragment
また、フラグメントにも
アクティビティのように、ライフサイクルが存在する
onAttach()
フラグメントがアクティビティと関連付けされたとき
1回だけ呼び出される
onCreate()
フラグメントの初期化
onCreateView()
フラグメントに関連付けされるビュー階層を作成
onActivityCreated()
アクティビティのonCreate()から
戻ってきたら呼び出される
onStart()
アクティビティのonStart()に基づき開始
onResume()
アクティビティのonResume()に基づき開始
onPause()
アクティビティがonPauseになったときや
フラグメントが捜査を受け付けなくなったとき
onStop()
フォアグラウンドてなくなったとき
onDestroyView()
フラグメントに関連付けされてビュー階層が
取り除かれたら呼び出される
onDestroy()
フラグメントが破棄されるとき
onDetach()
フラグメントとアクティビティの関連がなくなったとき

スマホてフラグメント

スマホてフラグメント
以前ならtabHostクラスで
タブ表示してページの切り替えてきたけど
APIレベル13から変更になり
TabActivityは非推奨になったので
別の方法を使うことになった
今は、ActionBarへタブ表示して
アクティビティをナビゲーションするのが推奨
また、APIレベル13から
AlertDialogを表示するための
showDialog()も非推奨になったので
変わりにフラグメントのサブクラスの
DialogFragmentを使うことが推奨になった
このように、スマートフォンでも
タブレットみたいに、フラグメントを使うようになっている

フラグメントについて

フラグメントについて
Androidがタブレットなど大画面化対応のため
フラグメントが作られた
フラグメントは、アクティビティへ組み込む形で使う
アクティビティを複数の表示領域へ分けることで
画面の部分的更新を可能にする
使えるのは
Android4.0以降のスマートフォンと
タブレット

から送られてきた高速メモ帳

LogCatビューのログレベル

LogCatビューのログレベル
verbose
詳細なトレース情報を出力
Log.v()
debug
デバッグ情報を出力
Log.d()
info
アプリ操作の情報を出力
Log.i()
warn
アプリの復旧可能なレベルの警告を出力
Log.w()
error
アプリの続行不可能なエラーを出力
Log.e()
assert
アプリの致命的エラーを出力

Androidで利用可能なレイアウト

Androidで利用可能なレイアウト
LinearLayout
縦、または横の直線上に部品を配置
RelativeLayout
部品同士をお互いの相対的位置へ配置
TableLayout
部品をマス目状に配置
HTMLのtableタグのようなかんじ
GridLayout
部品をマス目状に配置
行、列を指定して直接的に配置可能
FrameLayout
部品を常に左上に配置
ビュー部品を重ねて配置する
AbsoluteLayout
部品を絶対位置へ配置
ただし、ほかのレイアウトと違い
画面サイズの補正をしないため
専用端末のレイアウトになるが
つくるほうはらくかもしれない

web アプリのテストツール

web アプリのテストツールは
大きくわけて2種類
ブラウザの操作を自動化するブラウザベース型ツール
そして
ブラウザをシミュレートすることで
ブラウザを使わずテストするヘッドレス型ツール
ブラウザベース型は
ブラウザを実際に使って
クリック
テキスト入力を自動で行なうタイプのツール
まるで、素早く操作しているようにかんじる
本物のブラウザを使うため
ブラウザエミュレータでは検出しきれない問題を検出できたり
IE
Firefox
Chrome などの環境依存問題も発見できる
Selenium などがこれに該当するツール
ヘッドレス型は
エミュレータの中でテストを完結するタイプの自動化ツール
本物のブラウザをつかわないからヘッドレスという名前らしい
本物のブラウザじゃないので
高速動作が可能
JavaScript の関数レベルでの論理レベルチェックができる
テストフレームワーク
継続的インテグレーションとの相性がよい
継続的インテグレーションは
Ci
(Continuous Integration の略)
ともいう
これはテストを定期的に実施して
開発中段階からアプリの品質を保つ手法のこと
実際に継続的インテグレーションをするなら
テストを自動化して
テストの実行自体も自動化する
有名なツールは
Jenkins

テスト技法について

テスト技法
テスト対象の設計情報を元に行なうテストが
ホワイトボックステスト
逆なら
ブラックボックステスト
抜け漏れがないように
まんべんなく行なう網羅的テスト

的を絞ってピンポイントに行なうテスト
これらを軸にテスト技法を分類したのが
テスト技法ポジショニングマップ
他にも
境界値に着目するテスト技法の境界値テストとか
直交表
オールペア法などがある
次にテストの自動化
アジャイル開発のプラクティスにあるテスト駆動開発では
テストを先に記述してから開発する
これはテストの自動化がないとできない
アジャイル開発とは
動くソフトウェアを重視し
計量で変化に柔軟に対応できるソフトウェア開発手法

Evernote API

Evernote API
Evernote も Dropboxと同じように
オンラインストレージを提供する
Dropboxとの違いは
Dropboxは、ファイルやフォルダーの保管に使われる
Evernoteは
メモなどのデータを保存するのに使われる
Evernote APIを使えば
オンラインストレージへノートを作り
保管できる
利用するには
ruby
python
Java
などで、Evernote APIを呼び出す
簡易なWebアプリを作るなら
レンタルサーバーとかを使うことで
オンラインストレージよりも
容易に利用できる