iアプリでブラウザ

ということで、とりあえずiアプリでブラウザ作りを再開。
設計書となりえるぐらい長いものになってしまった。


昔は行き当たりで思いつく機能を実装しようと思っていたが、
ちょっと全体像を先に考えることにした。
当たり前っちゃー当たり前だが。

基本フロー

起動

オープニング

初回動作

Homeの読み込み(SP)

URLにReuqest

HTMLパース

レンダリング


まぁこんな感じだろうな。
さらっと書いたが、HTMLパースとレンダリングがかなり大変なんだがね。

別機能として、

アクション

  • リンクをクリック
  • Formを送信

ブックマーク等

  • ブックマーク登録
  • ブックマーク選択
  • Home登録

Cookie

他に考えなきゃいけないのが、スクラッチパッドの使い方だ。

クラッチパッド

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の受け側の実装→これどうしようかな…。

今のところ作業イメージがついて、かつ量的にこんな感じ。