サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPad Air
www.limy.org
Java と異なる点を中心にいくつか。 セミコロン(;) 行末のセミコロンは必要無い。 複数の文を1行に書きたいときだけ、セミコロンを間に記述する。 val a = 5 val b = 5; println("debug") ダブルクォーテーション Scala は Java と同じく、文字列リテラルにはダブルクォーテーションを使う。 シングルクォーテーションは文字(Char)リテラル扱いである。 return Scala では、return キーワードは省略できる。 return を使わなくても全ての文は値を返す。 def func(b: Boolean) = { if (b) "TRUE" else "FALSE" } return を使う必要があるのは関数の途中で抜けたいときくらいだが これは Bad Coding Style なので、なるべく使わないようにしよう。 プリミティブ型 S
case class Scala では、特殊な class として case class というものがある。 case class は、いわゆるデータクラスを作るときに便利なクラス。 このクラスは定義されたフィールドに応じて自動的に equals(), toString(), hashCode() が生成される。 case class Person(first:String, last:String, age:Int) equals() は各フィールドをそれぞれ比較し、toString() は読みやすい形でPersonの内容を文字列化する。 また、変数の定義に val を書かなくても自動的に Getter が生成される。 もちろん var と書けば Setter も生成される。 このように何の関数も持たない純粋なデータクラスの場合、Scala ではクラス実体を省略できる。 つまり {} す
ファイルの変更 では、先ほどコミットしたファイルに変更を加えてみます。 $ echo "hello world2" >> file1 file1 の末尾に1行追加しました。 すぐコミットしてみましょう。 $ git commit -m "second commit" # Changes not staged for commit: # (use "git add <file>..." to update what will be committed) # (use "git checkout -- <file>..." to discard changes in working directory) # # modified: file1 # no changes added to commit (use "git add" and/or "git commit -a") はて、変ですね。
リポジトリの新規作成 では早速新しいリポジトリを作って Git に触れてみることにしましょう。 何でもいいので、作業用ディレクトリを作成してみます。 $ mkdir prj1 $ cd prj1 ここで、リポジトリ新規作成コマンドを実行します。 $ git init 以下のようなメッセージが表示されるはずです。 Initialized empty Git repository in /path/prj1/.git/ これでリポジトリが作成されました。 メッセージからわかるように、リポジトリが今いるディレクトリと同じ場所に作成されています。 そう、Git はリポジトリを「作業ディレクトリ内」に作成します。 WORK_DIR |-- .git |-- file1 `-- folder `-- file2 これが SVN などとは大きく異なる点です。 ちなみに SVN では各ディレクトリ内(上で
Git は、分散型のバージョン管理システムです。 いわゆる CVS や Subversion(以下SVN) などの集中型と言われるシステムとは概念が異なるので 最初とっつきにくいという印象があります。 ここでは、SVN を使ったことはあるけど Git をまだ使ったことがないという人を対象に Git の使い方をわかりやすく説明していきたいと思います。 最初に (2012/02/19) チュートリアル step 1 - リポジトリ作成、初回コミット (2012/02/19) step 2 - ファイルを変更してコミット、ステージ、diff、index(索引) (2012/02/26) step 3 - ブランチ、checkout、merge(マージ) (2012/02/26) step 4 - clone、pull、fetch、FETCH_HEAD、remote(リモートリポジトリのエイリアス
Scala (SCAlable LAnguage) は、JVM 上で動く言語。 感じとしては Groovy などに似ているが、Scala の大きな特徴は「関数型言語」を取り入れていること。 この記事を作成するにあたって大いに参考にさせてもらったページが IBM developerWorks の技術文書である。 感謝したい。 [多忙な Java 開発者のための Scala ガイド] なお、この記事は Java の基本知識は持っているものとして話を進める。 最初に (2012/02/10) 文法 (2012/02/18) クラス定義 (2012/02/11) 関数 (2012/02/11) case class とパターンマッチング (2012/02/11) タプル(Tuple): 複数の値を返す (2012/02/11) Option と Some (2012/02/11) パッケージ宣言、
Android は独自の2Dグラフィックライブラリ、および OpenGL ES 1.0 を使ったハイパフォーマンスの3Dグラフィックをサポートしています。 二つの選択 2Dグラフィックを描画するとき、大きく分けて二つの方法があります。 View View オブジェクトにグラフィックやアニメーションを描画します。 この方法では、View が持つ一般的な描画規則に基づいて描画を行います。 Canvas Canvas に直接グラフィックを描画します。 この方法では、draw() や drawPicture() のメソッドを状況に応じて呼び出す必要があります。 View に描く方法は、動的に変化しないシンプルなグラフィックを描きたいときには最適な選択となります。 Canvas に描く方法は、アプリケーションが定期的な再描画を要求するときは良い選択となります。 一般的に多くのビデオゲームは Canv
Activity には、4種類の起動モードを割り当てることができます。 standard これがデフォルトです。 新しい Intent に応答するとき、新しいインスタンスが生成されます。 ※ 覚えていますか? Activity は常に Intent によって起動します よって、この Activity は、複数のインスタンスを生成することができます。 singleTop 新しい Intent に応答するとき、もし自身の Activity が「現在のスタックにあり、しかも最上位である」 場合に限り、そのインスタンスが再利用されます。 具体的に言うと、連続して同じ Activity を起動したときに、直前のインスタンスを再利用します。 現在のスタックに無かったり、あっても最上位に無い場合、新しいインスタンスが生成されます。 以下の重要な事を覚えておいて下さい。 いかなる場合においても、Inten
アプリケーションを起動すると、メインの Activity が起動します。 この Activity は Task と呼ばれる場所(スタック)に格納されます。 ※ Activity は UI を持ったコンポーネント 次にこの Activity が別の Activity を呼び出すと、その Activity は 同じスタック上に積まれます(PUSH)。 App-A Activity-A App-B Activity-B1 App-B Activity-B2 App-C Activity-C このように、スタックは異なるアプリケーションの Activity をまとめて持つことができます。 これによって、アプリケーションを使うユーザはそれらが別々のアプリケーションであることを 意識せずに作業することができます。 上の状態で Activity-C が完了する、もしくは [戻る] キーを押すと、最上位の
全てのアプリケーションは、AndroidManifest.xml ファイルを持っています。 ここに、アプリケーションのあらゆる情報を記述します。 <manifest> Manifest File のルート要素です。 package アプリケーションのパッケージ名を Full Qualified Name で指定します。 これは以下の用途で利用されます。 基準パッケージ名 コンポーネントのクラス名など、このパッケージからの相対パス名で記述できます。 プロセス名 アプリケーションが実行するときのデフォルトプロセス名として使用されます。 Affinity コンポーネントのデフォルト Affinity として使用されます。 android:sharedUserId 他のアプリケーションと共有したいLinuxユーザIDを指定します。 これによって、他のアプリケーションと同じプロセスでアプリケーション
ここは Android のページです。 導入 はじめに インストール、Hello World (2010/12/25) マニュアル 本家開発サイトの和訳です。 直訳ではない箇所もあるので、間違ってるところがあるかもしれません。 基本知識 Android 開発の基本 (2010/12/25) コンポーネントの基本 (2010/12/25) Task の基本 (2010/12/25) コンポーネントの Life Cycle (2010/12/25) Activity の起動モード (2010/12/25) プロセス、スレッドの基本 (2010/12/25) Intent について (2010/12/25) AndroidManifest.xml 詳細 (2010/12/25) UI UI の基本 (2010/12/25) UIイベントの基本 (2010/12/25) レイアウトの基本 (201
Android は、図形やイメージの描画およびアニメーションをするための カスタム2Dグラフィックライブラリを提供しています。 それらは android.graphics.drawable と android.view.animation パッケージにあります。 ここでは、Drawable オブジェクトを使った描画の基本を説明します。 移動・伸縮・回転を使ったアニメーション、および 「パラパラマンガ」の要領で作るアニメーションについても紹介します。 Drawables Drawable は「描くことができるもの」を表す抽象クラスです。 BitmapDrawable, ShapeDrawable, PictureDrawable, LayerDrawable など様々なものが使えます。 もちろん、あなたはこれらをさらにカスタマイズ(サブクラス化)して使うことも可能です。 Drawable イ
Bluetooth とは、近距離の無線通信を行う規格の一つです。 これを使うことによって、他の Bluetooth 端末とデータの交換をワイヤレスで行うことができます。 point-to-point による1対1通信、および複数間通信に対応しています。 Bluetooth のAPIを使うことによって、以下のことが実現できます。 他の Bluetooth 端末をスキャンする(近くにいる仲間を探す) 他の Bluetooth 端末に問い合わせる RFCOMM チャンネルを確保する 他の端末に接続する データを他へ転送したり、他から受け取ったりする 複数の接続を管理する 基本 まず、Bluetooth API を使うときに必要な4大作業を説明します。 Bluetooth のセットアップ、他デバイスの検知、デバイスへの接続、そしてデバイス間のデータ転送です。 全てのAPIは android.blu
Intent について詳しく説明します。 Activity, Service, Broadcast Receiver の3つのコンポーネントは Intent と呼ばれるメッセージによってアクティブ化されます。 Intent によって同一、または異なるアプリケーションのコンポーネント同士を 動的に結びつけることが容易になります。 Intent はフィルタを持ち、これによって応答するコンポーネントを 動的に決定することが可能になります。 各コンポーネントへの Intent 配信メカニズムは、それぞれ独立しています。 Activity Context.startActivity() または Activity.startActivityForResult() によって Activity を起動、または既に存在する Activity を得ることができます。 ※ 後者の方法の場合、Activity.s
各レコードは、_ID という自身を識別するフィールドを持っています。 このフィールドは自身を識別すると同時に、他のテーブルとJOINする際にも利用されます。 問合せは、Cursor オブジェクトを返します。 これはJDBCで言えば ResultSet のようなものです。 ここから各行の値を取ってくることができるし、列の型を知ることもできます(ResulSetMetaDataのように)。 URI それぞれの Content Provider は、public URI を公開しています。 これが各データセットのユニークな識別子となります。 複数のデータセット(つまり複数のテーブルのデータ)は、それぞれが異なる URI によって公開されます。 URI は全て content:// から始まります。 この Scheme は、このデータが Content Provider によって提供されることを意
Webアプリケーションフレームワークの定番となったStruts 1。 しかしもはや過去のフレームワークとなり、次に来るのはおそらくStruts 2。 1と2はもはや別物と言ってもいい。 Webworkという革新的なフレームワークを手本として 独自の道を歩み始めたStruts 2。 使ってみれば、その良さがわかるはずだ。 Struts2 事始め (2009/04/01) Struts2 + Spring (2008/10/21) Struts2 Default Interceptor (2012/03/10) Struts2 Tips (2008/11/25)
render ビューで似たようなHTMLを何度も記述する場合、それを テンプレートファイルとして分離することができる。 まぁこれはどのフレームワークにでもある当たり前の機能。 新規投稿画面を以下のように変更してみる。 app/views/posts/new.html.erb <h1>New post</h1> <%= render :partial => "form" %> <%= link_to 'Back', posts_path %> 2行目がその部分。 render :partial => "テンプレート名" とする。 実際のテンプレートファイルは、先頭に _ を付けて以下のように。 app/views/posts/_form.html.erb <% form_for(@post) do |f| %> <%= f.error_messages %> <p> <%= f.label
Natureについて Natureとは耳慣れない言葉かもしれません。 各プロジェクトには、そのプロジェクトが持つ属性のようなものが用意されていて それをNatureと呼びます。 例えば、Javaプロジェクトは org.eclipse.jdt.core.javanature というNatureを持っています。 このNatureによって、JavaファイルをSaveしたときに 自動的にclassファイルを作成したりしているのです(実際にはNatureが持つBuilder)。 Natureは属性ですので、一つのプロジェクトが複数のNatureを持つことが可能です。 Propertyについて Natureを作る前にまず、Property(プロパティ)の説明から始めます。 プロパティはPreferenceとよく似ています。 後者が「ワークスペース単位」の設定であるのに対して、 前者は「エレメント単位」
Eclipse を使いこなす上で重要なコマンド、それが Quick Fix(Ctrl-1) です。 これによりキータイプ数が減り作業効率がアップします。 サポートされているQuick Fixの種類は相当あるので、ここでその一覧を紹介します。 Package Declaration クラスの package 宣言がディレクトリの階層構造と合っていない時のサポートです。 Add missing package declaration or correct package declaration package宣言を、ディレクトリの階層構造に合わせて修正します。 簡単に言えば、クラスの配置位置 を正とするパターンです。 Move compilation unit to package that corresponds to the package declaration クラスをpackage宣
Struts2 はWebに特化したフレームワークなので 通常は他のJavaフレームワークと組み合わせて使う。 今回は、Spring と一緒に使ってみる。 必要なjarファイルは以下の二つ。 spring.jar - 当然必要。Springのサイトからダウンロードしておく struts2-spring-plugin-X.jar - Struts2側に付属。これも必要 あとは設定ファイル。 まずはweb.xml。 <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-IN
LFS (Linux From Scratch) に関する情報を載せていきます。 LFSって? (2010/01/27) LFSのインストール (2010/01/27) bash (2010/01/27) w3m, XFree86 (2010/01/27) zsh, screen, emacs, rxvt (2010/01/27) GTK (2010/01/27) fluxbox (2010/01/27) java, eclipse (2010/01/27) skkinput, skkserv2 (2010/01/27) proftpd (2010/01/27) gdm (2010/01/27) Firefox (2010/01/27)
Struts2を使った開発とはどんなものなのか。 まずはプロジェクトを新規作成してみよう。 なお、今後単に Struts と記述した場合には Struts2 を指すものとする。 明示的に Struts1 / Struts2 と記す場合もある。 今回は、JSPではなくVelocityを使う。 Struts2はどちらにも対応している。 参考ページ : Velocityのススメ Velocityで使用するテンプレートファイルのことを 以下VMファイルを記述する。これは Velocity Macro の略。 ダウンロード ダウンロードするファイルは以下。 Struts2 - Full Distribution をダウンロードしておけば問題なし Velocity - Engine, Tools の両方をダウンロード そしたら恒例のWebアプリケーション構成を作成。 これは自由だが、僕は大体以下のよう
ここは、僕がOracleを使いたくない理由をどんどん挙げていこうというコーナーです(笑)。 とはいっても僕は実際現場ではOracleを使う羽目になっているので 実際に使ってみて駄目だと感じた点について紹介していきます。 新しく書いたものが「上」になるように並べていきます。 PreparedStatement で CHAR 型を使うとき Oracle の JDBC でも当然 PreparedStatement は使えます。 SELECT * FROM XXX WHERE NAME=? のように、? を使ったバインド変数によるSQL文発行ができます。 ところが、この機能にとんでもないバグがあります。 NAMEカラムが CHAR(10) だったとしましょう。 PreparedStatement stmt = conn.preparedStatement("SELECT * FROM XXX WH
Eclipseのプラグイン開発方法を紹介します。 3.4以降 Eclise 3.4 以降についての記事です。 Eclipse Extensions (2010/01/27) Eclipse SWT (2010/01/27) 3.2以降 Eclise 3.2 以降についての記事です。 各種Tips (2010/01/27) Eclipse RCP (2010/01/27) Preferenceページの作成 (2010/01/27) Nature(Builder)の作成 (2010/01/27) Markerの作成 (2010/01/27) メニューの作成 (2010/01/27) Builderの作成 (2010/01/27) キー割り当ての方法 (2010/01/27) Jobの使用 (2010/01/27) Editor関連 (2010/01/27) JDT関連 (2010/01/27)
Markerについて Markerとは、Javaファイル内で警告があるときなどにエディタの左側に出るマークの事です。 ここでは既存のマーカーを流用する形のやり方を紹介します。非常に簡単です。 まずは plugin.xml に記述を追加します。 <extension id="SampleMarker" point="org.eclipse.core.resources.markers"> <super type="org.eclipse.core.resources.problemmarker"> </super> <persistent value="true"> </persistent> </extension> こんな感じです。 problemmarker の記述をしておくと、マーカーの内容が Problems ビューに表示されます。 それと、org.eclipse.ui.edito
Mavenには、フィルタリング(Filtering)という概念があります。 簡単に言えば、ビルド時に動的なテキスト置換を行うことです。 例えば、リソースファイルに # application.properties application.name=${pom.name} application.version=${pom.version} のような形式の記述があった場合にそれを # application.properties application.name=Maven Quick Start Archetype application.version=1.0-SNAPSHOT に置き換えてビルドを行います。 もちろん、通常のファイルでフィルタリングをしては困るので デフォルトではこのフィルタ機能はOFFになっています。 フィルタ機能を有効にするには、pom.xml の resource
Builderについて Nature のところでちょっと説明した Builder についての詳細です。 あるプロジェクトの Nature 内で Builder を定義すると、 プロジェクト内のファイルが保存されるタイミングで毎回 Builder が実行されます。 また、プロジェクトのフルビルド時にも呼び出されます。 Builder の実装メソッドはたった一つです。 @Override protected IProject[] build(int kind, Map args, IProgressMonitor monitor) throws CoreException { } 色々引数が渡されてきますが、特に使わなくても大丈夫です(笑)。 通常使うのは、2つのメソッドだけです。 とりあえず簡単な例を載せてみます。 @Override protected IProject[] build(i
Coding コーディングチェックを行います。 ArrayTrailingComma 配列宣言時、最後の要素の後ろにカンマが「付いていないこと」をチェックします。 int[] a = new int[] { 1, 2, 3, }; 上の文が、このチェックを有効にしたときに正となります。 最後の要素である 3 の後ろにカンマが付いています。 これを付けないと、今後要素を追加しようとしたときに 「3の後ろにカンマを追加して、改行を入れて、要素を追加する」 という手順を踏む必要があり、少々面倒な上にタイピングミスをする可能性も高くなります。 int[] a = new int[] { 0, 1 }; ただし、上のように中括弧同士が同じ行にあるときは このチェックを行いません。 よって、この文は正となります。 AvoidInlineConditionals インライン条件文の使用を拒否します。 s
次のページ
このページを最初にブックマークしてみませんか?
『Unlimited Island』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く