iアプリでブラウザ
ということで、とりあえずiアプリでブラウザ作りを再開。
設計書となりえるぐらい長いものになってしまった。
昔は行き当たりで思いつく機能を実装しようと思っていたが、
ちょっと全体像を先に考えることにした。
当たり前っちゃー当たり前だが。
基本フロー
起動
↓
オープニング
↓
初回動作
↓
Homeの読み込み(SP)
↓
URLにReuqest
↓
HTMLパース
↓
レンダリング
まぁこんな感じだろうな。
さらっと書いたが、HTMLパースとレンダリングがかなり大変なんだがね。
別機能として、
アクション
- リンクをクリック
- Formを送信
ブックマーク等
- ブックマーク登録
- ブックマーク選択
- Home登録
スクラッチパッド
1本の長いメモリ領域と考えるのが良いといつも思ってる。
あまりスクラッチパッドの使用経験が無いのだが、
今のところは線形リストとしてデータを保持すれば良いんじゃないかと思っている。
線形リストのオブジェクトのフィールドとしては、
- データサイズ
- 接頭辞
- データ
- UniqeID
らへんを持っていれば良いんじゃないかな。
Objectをそのままって言うわけじゃなくて、
データサイズならgetLong、接頭辞ならgetUTF、データならgetBytesとかを使用して値を取得し、
(メソッド名はうろ覚え)
1データに対して、必ず4メソッドを行うという決まりにすれば、オブジェクトと同じように扱える。
っていうかScrtchPadのシングルトンでInterFaceとなるObjectにかならずそれらの値をいれて
返すようにすれば、InterfaceはObjectのように感じられる。
さらに、JdbcManagerみたいにupdateやdelete、insertのようにしてやれば、いいんじゃないかな。
外から見た感じが使いやすそうだな。
まだまだ遠い話だが、HTMLをパースする際に、各タグをObjectにするわけだが、
JSPのタグを参考にしてObjectの構成を行ったら良いと思う。
まぁ他にマウスのイベントとか考えなきゃいけないんだけどね。
そのうちぶち当たるであろう。
今思うのが、ScriptとStyleの適応がまったく思い浮かんでないのがまずい。
いまフルブラウザ作るとして、StyleとScriptが使えません とかなしだろうw
VBScriptとかはもう勘弁して欲しいが、JavaScriptは使用できないとなぁー。
JavaScript
JavaScriptはコンパイラ作るようなもんだから、
本当にぶち当たったらでいいや。
CSS
タグをどう管理するか分からないが、いくつかばらばらと保持している場から、
- 特定のタグ名だけを取得できるようなIF
- 特定のclassだけを取得できるようなIF
- 特定のidを持っているタグを取得できるようなIF(複数あるときはnullみたいな)
感じにして、各attributeに値をねじ込んでやれば、CSSの適応が出来るんではなかろうか。
タグ自身に書かれているもの→styleタグに記述されているもの→cssに記述されているもの
の順に、あれば上書かないようにすれば、仕様もまもれるであろう。
Attributeの保持はHashMapとかになるのかな、それようのObject:フィールド変数とかあると、
増減や実装未実装に弱そうだけど…、これはやってみてだな。
メモ
ScratchPadのライブラリ:シングルトン
HTTP通信するライブラリ:シングルトン
Mouseライブラリ:シングルトン(作ったのが昔過ぎてよく覚えてない)
今後の作業順序
- まず、パッケージとObjectを決める。
- 紙芝居を作成する(全てCanvasで)。
- ScratchPadライブラリの実装。
- HTTP通信するライブラリの実装。
- HTTPの受け側の実装→これどうしようかな…。
今のところ作業イメージがついて、かつ量的にこんな感じ。