カテゴリー: News

  • 本の紹介「リーダブルコード」

    6月末頃にTwitterやFacebookで紹介されているのを見て、他に欲しかった本と一緒にAmazonで注文。
    ところがなかなか発送の通知がきません。どうやら人気の本のようで、入手までに2週間ほどかかりました。
    今回についてはさっさと書店に行ったほうが早かったかな。

    ということで、ざっと読みました。
    うーむ。普段のプログラミングにおいて、変数の名前の付け方が悪い例のようになっているかも…。
    (特に戻り値の変数名など)
    関数名も自分なりに工夫しているつもりですが、まだまだ言葉の選び方に余地がありそうです。
    確かに、変数や関数の意味を考えて特徴的な名前をつければ、それを見ただけで処理の内容が見えてきます。
    他にも、プロジェクトから独立した汎用的なコードの重要性など、要点をあらためて気づかせてくれます。
    最後のほうのテストの読みやすさについては、自分にとってこれからの課題です。

    今後、机の脇に置いておいて、プログラミングの合間に読み返したい本の一冊。

    リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice)

  • Androidのテストプロジェクト – JUnit test

    Androidのテストプロジェクトを試していたところコンストラクタのところで警告が出ました。

    public class MainActivityTest extends ActivityInstrumentationTestCase2 {
    
    	public MainActivityTest() {
    		super("package.name.hogehoge", MainActivity.class);
    		// TODO Auto-generated constructor stub
    	}
    
    

    Referenceを調べてみたところ、パッケージ名を指定するコンストラクタがdeprecatedになっていました。
    ActivityInstrumentationTestCase2
    ということで、下記のように修正。

    public class MainActivityTest extends ActivityInstrumentationTestCase2 {
    
    	public MainActivityTest() {
    		super(MainActivity.class);
    		// TODO Auto-generated constructor stub
    	}
    

    以上です。

  • Chrome Extension の セキュリティポリシー(CSP)

    GoogleのChromeウェブストアチームから Chrome extension に関するアップデートのお知らせが届いていました。

    詳細はこちら Manifest Version

    記事によると、Chrome機能拡張を作る際はマニフェストに、
    'manifest_version': 2:
    と書きなさい、とのことです。
    そして、これより前の Manifest version 1 は、今後リリース予定のChromeで動作しなくなります。
    また、スケジュールに沿ってウェブストアのウォールやカテゴリからも削除されます。

    このバージョン1と2の違いについて、上記ページにまとめられていて、
    Browser action や Page action の各種プロパティが変更されているようです。
    それと、セキュリティポリシー(CSP)の導入に伴って、HTMLとJSの分離が必要です。

    CSPの詳しい記事はこちら Content Security Policy (CSP)

    例えば “Inline JavaScript will not be executed” について。

    <button onclick="clickHandler(this)">

    HTML内に上記の記述があっても、デフォルトのポリシーでは動作しません。

    この様な場合、HTML内にはボタンを配置しておいて、

    <button>Click for awesomeness!</button>

    ボタンクリックの処理についてはJS側でイベントリスナを登録します。

    document.addEventListener('DOMContentLoaded', function () {
      document.querySelector('button').addEventListener('click', clickHandler);
    });

    それと “Only local script and and object resources are loaded” の部分。
    外部サイトのスクリプトを参照している場合は、デフォルトのポリシーのままでは動作しないので、

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

    パッケージ内に組み込む必要があります。

    <script src="jquery.min.js"></script>

    あるいは “Relaxing the default policy” にあるようにCSPの設定を緩めるなど。
    リリース済みパッケージのメンテナンスや今後のリリースの参考まで。

  • Lintチェックのエラーと旧バージョンのサポート

    以下、自分用の備忘録として
    Lint API Check
    の記事を読みながら簡単にまとめたものです。

    Androidアプリ開発において、API 4(Android 1.6) までサポートする際に、ターゲットのビルドバージョンによって呼び出すAPIを切り替えたい場合があります。
    しかし、マニフェストが、

    <uses-sdk android:minSdkVersion="4" />

    となっているので、API 4では対応していないAPIを呼び出すところで次のようなLintチェックのエラーになってしまいます。

    Call requires API level 11 (current min is 4):

    そのような場合に、@TargetApi というアノテーション(annotation)をつけることで回避できます。

    @TargetApi(11)
    @Override
    public void onBuildHeaders(List<Header> target) {
        loadHeadersFromResource(R.xml.hogehoge, target);
        }
    
  • 本の紹介 – リーダブルコード

    リーダブルコード – より良いコードを書くためのシンプルで実践的なテクニック
    (オライリー・ジャパン)

  • Androidのデバッグでソースが読めない – eclipse

    Androidのデバッグでソースが読めない – eclipse

    Androidのアプリ開発において、eclipseでステップ実行しようとしてソースが開けない場合。
    (Source not found となってしまう)

    上記の [Attach source] をクリックしてソースを置いているフォルダのパスを指定します。
    例えば、次のようにします。

    で、そうなるまえにソースのパスをセットしておく方法。

    [Project] -> [Properties] を開きます。

    次に [Java Build Path] -> [Libraries] を開いてターゲットの android.jar を展開します。

    そして [Source attachment] が (None) になっていれば、[Edit…]をクリックして先ほどと同様にソースのフォルダを設定します。

    あるいは、Package Explorerからターゲットの android.jar を右クリックで Build Path を設定することができます。

  • jQueryの今後のリリースについて

    jQueryの今後のリリースについて

    本日の(Twitterの)ホットな話題。

    来年2013年の1.9および2.0のリリースに向けて、ブラウザのサポート状況がアナウンスされています。

    BLOG » JQUERY CORE: VERSION 1.9 AND BEYOND

    • jQuery 1.9 (early 2013)
      IE 6/7/8 は、今までどおりサポートされる予定。
    • jQuery 2.0 (early 2013, not long after 1.9)
      IE 6/7/8 のサポートは削除されます。

    なので、jQuery 2.0を使いたいけどこれまでどおり従来のブラウザにも対応したい場合は、
    次のようなスクリプトで対応できるとのことです。

    <!–[if lt IE 9]>
    <script src=”jquery-1.9.0.js”></script>
    <![endif]–>
    <!–[if gte IE 9]><!–>
    <script src=”jquery-2.0.0.js”></script>
    <!–<![endif]–>

    ところでjQueryで何ができるの…?
    という場合の各種エフェクトはこちら。
    Effects – jQuery API

  • Facebookアプリ – WiFiで接続できない場合【その3】

    Facebookアプリ(for Android)がWiFiでなかなかつながらない件について追加の記事です。

    先週の7日に1.9.5がリリースされ、その数日前あたりから特に問題なくつながるようになりました。
    これまでにも同じような状況が何度かありましたので、例えばFacebookの公式アプリで問題が発生した場合はブラウザやSeesmicなど他の利用手段を用意しておいて、次のバージョンアップまでしばらく様子をみるのが良いのかも知れません。

    それと、3GからWiFiに切り替えた直後や電波の状態でWiFi接続が安定していないと
    「接続が切れました」
    という表示になって、そこからなかなかつながらなくなる場合があります。
    そのようなときに、WiFi Fixerを利用すると改善されるかも知れません。

    ネットワーク環境や機種によると思いますが、参考まで。

  • WP Super Cache の WPTouch 対応について – WordPress

    WordPressのキャッシュの状況を確認しようと思い、ダッシュボードからWP Super Cacheの設定を開いてみたところ、なにやら警告表示がありました。

    どうやら WP Super Cache が WPTouch を見つけている様子です。
    そこで、WP Super Cacheの設定画面からプラグインを開いてみると、
    WPTouchの設定(有効/無効)が見つかりました。

    ということで、早速この設定を有効にしておきました。
    ちなみに、WP Super Cacheをモバイル端末でも有効にするには詳細設定で
    Mobile Device Supportをチェックしておきます。

    参考までに WP Super Cache へのリンクを貼っておきます。

  • Facebookアプリ – WiFiで接続できない【その2】

    Facebookアプリ(Android)がWiFiで接続できなくなった件について
    追加の記事です。

    接続復旧の手順をいろいろ試してみました。
    サービスの停止までしなくても、もう少し簡単にできるようなので
    まとめておきます。

    ただし、アプリを閉じてしばらく時間が経つとやはりつながらなくなって
    また3Gからのやり直しが必要です。

    1. WiFiでつながらない状態を確認。
    2. WiFiをOFFにして3GをONにします。
    3. Facebookアプリを終了させます。
      「設定」->「システム」->「アプリケーション」->「アプリケーションの管理」
      を開いて「実行中タブ」を選択し「Facebook」をタップ。

      強制停止ボタンを押します。

      ※前の記事では関連サービスを止めたり、キャッシュを削除したりしましたがそこまではしなくても良さそうです。
    4. あらためてFacebookアプリを起動。

      3Gで利用できることが確認できたら、WiFiに切り替えます。

      これで、WiFiのみで継続して利用できると思います。

    ちなみに、アプリケーションの強制終了ですが、
    Androidの「設定」からだと結構階層が深いので手間がかかります。
    アプリを終了させる専用のアプリが便利です。
    Automatic Task Killerがおすすめ。

    • Automatic Task Killer
      アプリの一覧からFacebookを選んで長押しでタップすると簡単に強制終了できます。