Home

あたまの中の文字

ソニータブレットでJavascriptが効かない謎

ソニータブレットSシリーズ(SGPT113JP/S)で、開発中のコードを確認した時にJavascriptが動かない事がありました。

HTMLとJSを極限シンプルにして、alertのメソッド1つにしても動作しないとか、ビビりました。
しかし、他のWebサイトのJavascriptは動作しているし、自分のコードも特有の問題も見当たらない。

外部のJavascriptの書類だけでなく、HTMLに直接Javascriptを設定してみたところ、動作しました。
それどころか、内部のJavascriptを書いたら、外部のJavascriptも動作しました。(そんな仕様あるの???)

1
2
3
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="js/sample.js"></script>
<script></script>

↑このように、空っぽのscriptのタグをつけるだけで、外部のJavascriptが動作し始めました。
スマートじゃなくスッキリしないけど、同じハマりをしている方、試してみてください。

研究部会というものに参加してきた

とある知り合いに「論文書いて見ませんか?」とお誘いを受けて、大学の講師として何か研究したいと思っていたし、論文を書くことで知見が広がるだろう思い、去年の12月くらいから書き始めました。

その知り合いに、仕事の合間合間に論文の指導をしてもらったり、情報交換をしてきまして、先日一応形にしました。
経営情報研究部会・経営ネットワーク研究部会という研究部会があると言うことで、そこで発表するために論文を書きまして、その内容を発表プレゼンしてきました。(研究部会は学会の分科会になるのかな?)

携帯電話端末のFlashコンテンツ技術の推移とリッチコンテンツの制作技術の変移、みたいな内容で論文を作成しプレゼンしてきました。論文に関しては、慣れていないところもあり苦労したのですが、作成してみて、プレゼンしてみて、反応を聞いてみて、自分の論文の「論旨」「伝えたい事」「考察」の構築がまだまだブレブレだなあと感じました。

論文を書くことも大事なのですが、読まないと、どういった書き方が伝わりやすいのか、まとめやすいのか等がわからな かったです。
次も書くのなら色々な論文や、論点に関わる本をもっと読まないといけないなあ、と感じました。

#プレゼン中、気がついたらろくろ回していたのはご愛嬌

Flashのシンボル名で昔ハマったこと

前に体験していて再現率100%だったので、メモとしてその内容を書いておきます。

  1. シンボル名に [1] ←みたいに、配列演算子と数値の組み合わたものを作成
  2. ステージに配置し、その後キーフレームを複製する
  3. 「ライブラリの競合の解決」ダイアログがでる
  4. 「既存のアイテムを置き換える」とする
  5. Flashが不安定になる

私が確認したのはWinXP環境のFlashCS5環境でした。
不安定な内容としては、描画されるシェイプが表示されなくなったり、シンボルを選択できなくなるなどです。
Flashが起動している間はどのファイルでもおかしくなりました。

ヒストリーとjsflの方での関係なのかなと思います。

Android2.1でCSSとかcanvasでハマったこと

スマートフォン向けブラウザの、HTML+CSS+JSで作るコンテンツで、Android2.1でのハマったのでメモしておきます。

日本で発売されて、Android2.1のOSとして存在する可能性ある端末って、多分以下の端末になります。

  • HTC-Desire(2.1-update,Softbank)
  • IS03 (2.1,au)
  • IS04 RegzaPhone(2.1,au)
  • T-01C RegzaPhone(2.1,docomo)
  • Xperia SO-01B(2.1-update,docomo)
  • LYNX 3D SH-03C(2.1,docomo)

実は、上記すべての実機が、2.2以上のアップデータが出ています。
ただ、docomoの初代Xperia SO-01Bだけは、日本でのアップデートを行なっていません。(海外のX10は2.3にアップデートを実施)
ホントは、みんなアップデートしてね、、って言いたいのですが、初代Xperiaは2010年4月発売なので、まだ使っている人もいるかと思います。

初代Xperia以外で、2.1と2.2では動作速度がかなり違いますので、周りで2.1を使っているレアな人がいたら、アップデートをオススメてしてあげてください。

今回ハマったものに共通する前提条件

  • Android2.1端末の特定機種
  • viewportでwidthをdevice-widthの値で指定
  • HTML+CSSは横幅を320px換算としてレイアウト

Viewportでwidthをdevice-widthにすると、devicePixelRatioの値の倍数でピクセルを拡大表示されることになります。
例えば、解像度が横幅480pxスマートフォンで、devicePixelRatioが1.5であれば、100%のサイズの時に1ピクセルあたり1.5倍で表示されるので、横幅320pxのコンテンツが480pxのデバイスにぴったり表示されるわけです。
ただし、デバイスのピクセル数が変わっているわけではありませんので、320pxの画像が480pxのモニタに拡大表示されるのと同じですので、画像が滲んで表示されてしまいます。

そこで、HTMLで設定する画像においては、HTMLやCSSで画像のサイズを指定する以上の解像度で作成したりします。(私の場合は、色々なスマートフォンの解像度を考慮して、倍の640pxを基準にした画像、すなわち倍の解像度で作成をしています)

background-sizeについて

CSSで背景の画像を指定する場合も、上記の理由で解像度を高めで作ります。
しかし、CSS2.1までのプロパティで背景の画像のサイズの拡縮はできません。

そこでCSS3から使える、background-sizeというプロパティを使うことになるのですが、Android2.1ではベンダーの方で完全に対応をさせていない状況だったりします。
ベンタープリフィックスをつけることで、動作するようです。(知らんってw)

1
2
3
4
p.icon{
 background-size:50%;
 -webkit-background-size:50%;
}

canvas要素へのCSSのzoomプロパティの適用について

この話は過去にもポストした内容と同じ話ですが、Android2.1の特定の機種においてでる現象のようです。
canvasも通常の画像と同じように高い解像度で作成しないと、描画したラインや、ビットマップを貼り付けた時に荒れて見えてしまいます。
ここでも、解像度を高めに設定してCSSのzoomプロパティで要素の縮小することをします。
ですがここでも、環境の依存によってcanvasの要素のみ縮小できないことがありました。

1
<canvas style="zoom:50%" width="640" height="480"></canvas>

↓↓↓

1
<canvas style="zoom:50%;width:640px;height:480px" width="640" height="480"></canvas>

上記のように、CSSでwidthとheightプロパティを設定すると、zoomプロパティが効きます。

canvasのdrawImageで座標とサイズの誤解釈について

canvas要素に対して、javascriptでdrawImageメソッドを使うことで、画像ファイルの情報を貼り付けることができます。
Android2.1の特定機種において、Viewportで表示領域の変更行った場合、このdrawImageで貼り付けた画像の座標とサイズが誤解釈を起こします。(これ、ほんとにハマる・・)

私が対応した方法は、JavascriptのdevicePixelRatioの数値を基準に座標や、サイズの指定(縮小)をしました。

以下は、画像の読み込みをして、読み込み完了後に「customDrawImage」という関数を通して、「drawImage」させています。

1
2
3
4
5
6
7
graphContent = document.getElementById('GraphContent');
graphCxt = graphContent.getContext('2d');
var bgImg = new Image();
bgImg .src = "bg.png";
bgImg .onload = function() {
 customDrawImage(graphCxt,bgImg ,0,0,586,200);
}

以下が、「customDrawImage」関数になります。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function customDrawImage(cxt,img,x,y,w,h){
 var ua=navigator.userAgent;
 var uaFlag=false;
 var d = devicePixelRatio;
   
 if(ua.indexOf("Android 2.1")>0){
  switch(true){
   case (ua.indexOf("HTCX06")>0):   uaFlag=true;break;//HTC-Desire softbank
   case (ua.indexOf("T-01C")>0):    uaFlag=true;break;//REGZA Phone Docomo
   case (ua.indexOf("IS04")>0): uaFlag=true;break;//REGZA Phone au
   case (ua.indexOf("SO-01B ")>0):uaFlag=true;break;//Xperia SB-01B Docomo
   default:break;
  }
 }
 if(uaFlag) cxt.drawImage(img,0,0,w,h,x/d,y/d,w/d,h/d);
 else       cxt.drawImage(img, x, y);
}

上記では、Android2.1の特定機種のみに条件を分岐して、画像の貼り付け場所と位置を変更しています。
Android2.1の端末の中でも、LYNX 3D(2.1)の端末は、この誤解釈はおきませんでしたので、条件分岐の内容から外しています。

Flashコンテンツの成熟とHTML5コンテンツの今後について思うこと

まず初めに、ここではHTML5とFlashのどちらが優れているかどうか、という事を書くつもりはありません。
両技術ともに優れている点(良い点)があり、中長期的な考え方や、ブラウザシェア、制作工数、未来への投資、、と、それぞれ色々な事を考えて選択すれば良いかと思っています。

私は1年くらい前に、何人からか「Flashはなくなるのか?」という質問をうけました。
その時僕は、「長い目で見た場合なくなる可能性はあるが、すぐには無くならないと思う」 という、受け答えをしました。

その時の理由の1つがコストでした。
Flashの技術で表現されるようなものを作成するにおいて、HTML+JSのコンテンツでも可能であったもしても、過渡期においては、同じようなクオリティのものを作成するのに、すごく時間がかかると思いました。
また、業界においてFlashコンテンツ制作者の多さも、コストを抑えることに繋がる事だと話しました。
その時の状況において、他の技術を使うことにコスト面でのデメリットが大きい事を 危惧したのでした。
(お金をかけてクオリティの低いものを作る強い理由が小さいということです。)

1年経ち、事情が変わりました。
スマートフォン、タブレットがインターネットコンテンツにおいてより重要視され、そのシェアが大きくなりつつあることがあります。また、それを危惧する空気がSNSなどを通じて蔓延し始めました。

いくつかの要因としては、AppleがiPhoneでの目覚しい成長を見せ、FlashPlayer導入をしない発表をし、デバイスやコンテンツの多様化からAdobeもモバイル版のFlashPlayerの開発を中止したことがあるでしょう。
Microsoftも今年にブラウザの強制アップデートをかけるという話しも、今後さらに影響を与えるかと思います。

私としては、中長期的には多くのFlashコンテンツが適正な箇所でHTML+JSコンテンツ(アンプラグドコンテンツ)にシフトしていくことが望ましいと思っています。(全部じゃないですよ)
しかし、現状では何か「危機感」「あせり」とも取れるような流れになっている感じが個人的にはしています。

「流行である」「PCとスマートフォンでリソース共有したい」「将来の技術のノウハウを早い段階で確立したい」「変革期なので新しい事をやらないと不安だ」

私には、ユーザーや制作者の意見が不在のまま、コンテンツ制作が進みそうな事が多い気がしてならないです。
もちろん、多くの現場でそういった事は無いのかもしれませんが、各技術やワークフローが未熟な状態で制作者が振り回されている現場があるのではないかと想像してしまうのです。

閑話休題

さて、気がつけば私はFlashに初めて触れてから、丸13年関わってきました。
HTMLやJavascrpt、CSSのコンテンツもわずかばかりですが携わってきました。

その経験の中で、Flashという技術やコンテンツ制作者が紆余曲折ありながら成熟していったのには、Flashというコンテンツや技術(コミュニティもそうかな?)特有の良さがあるような気がしています。

  • 簡単なコンテンツから複雑なコンテンツが作れる
  • アニメーター、デザイナー、デベロッパーといった多様な職種が関われてきた
  • オープンではなく、「できない」事が分かりやすかった
  • 技術の成長曲線が緩やかだった(いきなり高度な事はできなかった)
  • プラグインでありながらも、シェアが大きくあり続けた

AS3やFlexなどが入る前までは、Flashコンテンツを作成したければFlashというオーサリングツールを勉強すればよかったように思います。

  • 最初にタイムラインをつかったアニメーションを作り、gotoやタイムラインをつかったインタラクティブなものを作った
  • 使いなれれば、ActionScriptで複雑なことを順番に行ってきた
  • それぞれの過程や、レベルにおいて仕事が存在した
  • アニメーターさんはタイムラインをメインに多く使った
  • デザイナーさんはデザイナーさんの理解できる範囲で、モーションとインタラクティブなものを使いこなした
  • デベロッパーさんは 汎用的なデータの持ち方や、仕組みを作れるように考えた。

HTML+JSにも上記のようなものがあったのかもしれないのですが、少しのアプローチで、作り手それぞれに「面白い」「動いた」などの感動が、オーサリングツールを通してあったように思うのです。

私は、社会人向けにFlashの基礎を長年にわたって教えてきましたが、教室にデザイナーさん、デベロッパーさん、ディレクターさんが、それぞれの思惑をもって受講されたことが何度かありました。
それぞれの立場から、簡単なコンテンツを作る上での敷居の低さがあり、 共通認識が持ちやすい事は、独特の企画やワークフローが培われきたのではないかと思うのです。

今では、Flashの統合開発環境であるFlashProfessionalを使い始めなくても、FlashBuilder(FlexBuilder)、FlashDevelopといったアプリケーションや、wonderflといったサイトを通じて、Actionscriptを学習することができるようになり、ネット上のリソースもデベロッパーよりになり、昔に比べて気軽には参入はできなくなった感じを受けます。
決してそれが悪いことだとは思わないのですが、Flashコンテンツの表現できる技術の範囲が広がったと思うのと同時に、一部の人にしかできない難しいことになり、多くの職業の方が一緒になってアイデアを出す機会が減ったのだとしたら、それはすごく残念なことのようにも思いました。

私自身は、両方の技術に携わり続けるつもりです。
そこで、HTML5等の技術やコンテンツの進展がどのようになっていくのか、興味もあり怖い気もしています。
ブラウザベンダーのそれぞれの思惑、OSの進化、デバイスの多様化、それらは、技術の進化をもたらすものであり、HTML5、CSS3、Javascript、それぞれの技術の発展や、組み合わせのワークフローの多様化が生まれるように思います。
色々なイノベーションもおきそうでありながら、Flashという共通言語ありきで育ったコンテンツに比べ、HTML5コンテンツの発展は鈍化するのではないかと考えています。

ツールベンダーであるAdobeさんには、今後も期待したいと思います。
多くの人が色々な形で、コンテンツ制作に携われるようになることを願って。

学生とスケジュール感

ここ数年、学生へ制作指導をしている中で、学生にスケジュールを立てさせていますが、スケジュール通りに制作を進められない学生が非常に多いと実感しています。

私の指導力不足や、学生の目的への希薄さが原因だと考えていましたが、他の要因を考えるようになりました。

「学生にとって難しいことをしているのではないか?」

これについて、裏を返してみると

「社会人にとっては比較的容易な事だから、指導する側が勘違いして難しい事をさせていないか?」

いわゆる、社会人は働く事を通して、責任を意識し、行動しない事での危機感が想像できるようになります。
大抵は学生時代よりも、緊張感があったり、苦しい事もあったりするので、スケジュール感が自然と身に付き体が動くようになる、、、という考えができるのではないかと思いました。

目的意識が希薄、やりがいも希薄、責任感もない、危機感も希薄・・、もしもその状態でスケジュールを組んでいるのであれば、行動すること自体が大変難しいことなのかなと、、思うわけです。
学生によっては、目的意識ややりがい、色々な経験を通して、できないことへの危機感が成長しており、制作へのスケジュール感が立ちやすくなる子もいるかとは思いますけどね。

指導する立場の人間としては、「君たちは知らない事が多い。それにより、社会人よりもスケジュールを守ることが難しいことを自覚するべきだ!」と、できないこと、もしくは難しいと認知させることがスタートなのでは無いかと思うようになりました。

もしかすると、それは学生自身が自分で気がつく事が大事、という考え方もあるかと思います。
もちろん、なんでもかんでも私の方でサポートする事で、気づきが少なくなることは考えられますので、明確な目標ややりがい等が解るようなサポートが必要だと思っています。

今までも、それぞれの大事な事はそれなりにやってきたつもりだったのですが、それぞれがいかに連動性が高く、各大事な事がやりづらいものかわかった気がしました。

そんな2011年の年末でした。まだまだ、理解が足りない。

 

反省

筆不精もたいがいにします。12月は書くネタが色々とあったはずなのですが、実行できませんでした。

怠慢でした。反省します。

今年は文字をたくさん書きたいと思っているので、新年になったことだし、細々と気負わずにやることとします。

#ホントに反省しているのか?というツッコミがありそうですが・・

去年の後半は、悩んで、考えを沢山アウトプットして、色々と考えが整理できました。
色々と愚痴を聞いてくれた方や、意見を頂いた方には感謝で一杯です。
考えを進めてくれた中には、指導している学生から学ぶ事もたくさんありました。

今年は、昨年から得た事を元に、色々と形にする年にしたいなと思っています。

#今までは思い返してみると、口ばっかりですから具体的な行動を

具体的な行動としてはなんでしょうね?

  • アプリ作成
  • 論文作成
  • コミュニティへの積極参加
  • 勉強会の実施
  • 講座の内容・教材の見直し・改善
  • 大学課外活動を増やす

風呂敷を広げてしまいましたね。
スケジュールを地味に進めないと、また口だけ番長になりそうな予感がしています。
今年もよろしくお願いします。

Adobeモバイル版「Flash Player」の開発中止

モバイル版っていうくくりよりは、タッチパネル端末におけるブラウザのFlashPlayerの開発中止というくくりの方がしっくりきますね。

スマートフォン上のブラウザでFlashの相性の悪さを感じているのは、前にポストした通りです。
ブラウザというアプリーケーションと、タッチパネルというハードを組み合わせた状態で、Flashを使う場合、インタラクティブな要素の動作はかなりキビシイですから。

個人的には、アニメーションとかにおいては、別にFlashが動いても良いと思っています。
短い時間でクオリティの高いアニメーションを提供できる技術ですからね。

ただ、その場合でも現在よりも高いバージョンのFlashは必要ないですよね。
大容量を扱うメディアとして捉え難く、時代としてiPhoneやiPadユーザーが多く存在するのであれば、ハンドリングしづらく、需要が減っているスマートフォンのブラウザ用のFlashPlayerを見きっても大きな問題ではないと考えます。

ブラウザのPlayerが発達しない以上、Air上のWebViewもダメですよね・・。
一つのサービスで、リソースを共有したい場面を考えると、ますますFlashコンテンツの需要が減りそうな予感。(アプリよりな感じになっていくのでしょうね~)

まだ何もやっていない

8~10月にかけて、色々と考えては空回りし、ネガティブ発言ばかりまわりにしていましたが、11月になって落ち着いてきました。

システムの有り様や、自分がやるより他の人がやった方が有益だ、なんて色々と考えて思ったりもしたのですが、自分の中でも正しい答えなんて定まっていないところで、持論を一人で爆発させることが非建設的だと考えるようになりました。

結局システムの中で、僕が必要かどうかなんて僕一人の考えて決めても良いことにはならないと思いますし、そもそも、僕自身もシステムを構築している一人なんだから。
もし、僕のような人が、長年に渡って機能不全に陥っていると周りが判断したら、テコ入れしたり取り替えれば良いことですしね。

#僕の授業内容や活動そのものが、学校にとって、学生にとって有益か、適正であると判断をするような仕組みは考えてもらえそうです。

僕は現状から考えていい方向を模索して自己完結していたのですが、問題の箇所で一体「何かしたのか?」という疑問に対して、自己完結していた部分以外では「まだ何もやっていない」という結論になりました。
何もやっていないのに、僕自身がどうこう言ってもしょうが無いでしょう。
やるだけやった上で、自分が学生にとって良いと思うやりたい事や、自分がやりたいと思う方向に、自分やシステムを変えられないのであれば、その時はその時で、また考えます。

大分すっきりした。

#手始めに、やりたいことを進めるために仲間を作り、色々な議論をたくさんかわしていこうかな。ここのところ一人で悩んで出た結論で良かったことは、あまり思い当たるフシがないしね(^^;

iモード端末でDateオブジェクトが効かない?

私がフィーチャーフォン向けに作成した、とあるサービスのFlashコンテンツがあるのですが、お客様の方からの問い合わせで、動作の不具合があったと報告をうけました。

とある情報のカレンダーを提供していたのですが、動かないと。
しかも、今現在の年月が1970年になっていますと来たのです。

詳しく聞く前は、古い端末の処理落ちかと思っていたのですが、比較的最近の機種(しかも、Flashlite3.1)だったのですよ。
しかも、1970年という数値は、ActionscriptでDateオブジェクトが、年月日時間を基準にする1970年1月1日と想定されます。
すなわち、Dateオブジェクトで現在の値が0ミリ秒扱いになっているっぽいのです。

結論としては、iモードブラウザ設定で端末情報利用設定を「利用しない」に設定してしまったようなのです。
FlashPlayerは時計を持っているわけではありませんので、内部的には端末の時間を取りに行ってコンテンツ内で使用しています。
端末情報利用の中にFlashplayerが携帯端末の時間を取得する行為が入っている場合は、携帯ブラウザ上のコンテンツ内で現在の年月日を取得できなくなっても不思議ではありませんよね。

結局、こちらの設定を利用するように設定してもらったら、ちゃんと動作するようになったようです。
なるほどね~。

Home

Search
Feeds
Meta

Return to page top