きゃべログ

プログラミングや電子工作などについての記事がほとんどです

【Android Studioとは】Android Studio 1.0 (正式版)リリース!

0 件のコメント

これまでテスト版として公開されていた、Androidアプリ開発用IDEである「Android Studio」の正式版が昨日の2014年12月9日にリリースされました。ロゴもドロイド君がモチーフとなっていたものから一新されてコンパスを象ったものになりました。今までEclipseを使ってきたのですが、これを期に試してみようかなと思ってます。ネットでの評判はいまいちなようですが。これまでベータ版だからとあまり関心がなかったのでAndroid Studioがどういうものか正直パッと答えられそうにありません。ということでAndroid Developersのサイトから要点をまとめていきたいと思います。

Android Studioとは

Android StudioはGoogleにより開発されている、Androidアプリケーション開発用の公式のIDE(統合開発環境)です。IntelliJ IDEAというIDEをベースとして開発されています。IntelliJの機能をいくつか引き継いで使用することができるようです。たとえば、以下のようなものです。

  • ドラッグ&ドロップで操作可能なレイアウトエディタ
  • 一般的なアプリを作るためのコードテンプレート
  • 多様なapkファイルの出力
  • Gradleに基づいた柔軟なビルドシステム
先にも書いた通り、GoogleとしてはAndroid StudioがこれからはAndroid開発の公式IDEと主張しています。しかし現状として、Eclipseユーザがほとんどで、ネットでのリソースは断然Eclipseの方がAndroid Studioより豊富です。今後はどうなるかわかりませんが、Googleは公式ドキュメントを充実させてAndroid Studioの普及を狙っていくでしょうね。

特色

インテリジェントコードエディタ

高度なコード補完、リファクタリング、コード解析が可能です。最近のエディタであれば割とどれでも実装されている機能ですね。

コードテンプレート

搭載されているコードテンプレートを使って容易にプロジェクト作成ができます。GoogleのコードサンプルをGitHubから入手することも可能なようです。

マルチスクリーン開発

様々なディスプレイサイズの端末のプレビューが可能です。Android OS搭載のスマートフォンやAndroid Wear、Android TVまで。リソース管理やプロジェクトの管理がより簡単に行えます。

仮想デバイス

あらゆるサイズ・形状のデバイスに対応した仮想デバイスを使用することが可能です。市販されているものに関する情報は仮想デバイスマネージャから選択することで簡単に動作を確認できます。かなり動作は重いです。

Gradleによるビルド

Gradleを使用するため、柔軟なビルドが可能になります。1つのプロジェクトから異なる特徴のAPKファイル(アプリの実行ファイル)を作成することが可能です。ビルドはAndroid Studio、コマンドラインのいずれからも可能です。

まとめ

正式版がまだリリースされたところなので、どうするかはとりあえず使ってみて決めようかなと思います。 まあまあスペックが要りそうなのでマシンに自信のある方は是非インストールしてみましょう。 せっかくだからインストールからHello Worldまでの記事を書いてみようかな。

スマートにプログラミング Android入門編 第4版 SDK5.x Lollipop対応
堀切 堤
リックテレコム
売り上げランキング: 60,786

0 件のコメント :

コメントを投稿

chromeでアドレスバーにフォーカスするショートカット

0 件のコメント
「Ctrl + L」

これは便利!と思ったのでシェア.
知っているとマウスを持ってポチ,という手間が省けて良いですね.
これが欲しいと思って調べたらだいたいある,そんな時代なんですねぇ.

[12/02 17:42追記]
検索に関してもう一つ便利なショートカットがあったので追記.
Googleの検索結果表示画面でフォーカスが検索窓にない状態で,
J: 次の検索結果を選択
K: 前の検索結果を選択
Enter: 選択した結果を表示
/: 選択窓にフォーカスを移す

もうマウスを持つ必要ないですね.
ちなみに検索窓からフォーカスを外すにはEscを押せばよいです.

0 件のコメント :

コメントを投稿

Arduino:tone関数を使わずに原始的な方法でスピーカから音を鳴らす,簡易シーケンサを作ってみた

0 件のコメント

昨日故障していたディスプレイを解体して,スピーカが取り出せたので何か作ってみようと思い立ち,とりあえずメロディを奏でてみることにしました. 身近にあるArduinoを使って何かできるかなと思ってブレッドボードにパーツを刺してコーディングしていきました.

回路

回路というほど大したものは組んでいませんが,紹介しておきます. Arduinoの13番ピンを信号出力用のピンにして,抵抗をかませてスピーカを配置します. それだけです!

プログラム

#include
const int signal = 13;

void setup(){
  pinMode(signal, OUTPUT);
}

//noteNum: MIDIのノート番号
//length:length×0.5秒だけ音が鳴る
//ms: 周期の半分(μs)
//temp: 型変換のための一時変数
void se(double noteNum, int length){
  int ms;
  double f,temp;
  
  f = pow(2, ( (noteNum - 69)/12 )) * 440;  //MIDI Tuning Standardの式より周波数を計算
  temp = ( 1 / f * pow(10,6) / 2);
  ms = (int)temp;
  
  if(noteNum == 145){
 for(long i = 0; i < 500000 * length; i += ms*2){
  digitalWrite(signal,LOW);
        delayMicroseconds(ms);
        delayMicroseconds(ms);
    }
  }else{
    for(long i = 0; i < 500000 * length; i += ms*2){
        digitalWrite(signal,HIGH);
        delayMicroseconds(ms);
        digitalWrite(signal,LOW);
        delayMicroseconds(ms);
    }
  }
}
void loop(){
 //カエルの歌
 se(60,1);
 se(62,1);
 se(64,1);
 se(65,1);
 se(64,1);
 se(62,1);
 se(60,2);
 se(64,1);
 se(65,1);
 se(67,1);
 se(69,1);
 se(67,1);
 se(65,1);
 se(64,1);
 se(145,1);
 se(60,1);
 se(145,1);
 se(60,1);
 se(145,1);
 se(60,1);
 se(145,1);
 se(60,1);
 se(145,1);
 se(60,1);
 se(62,1);
 se(64,1);
 se(65,1);
 se(64,1);
 se(62,1);
 se(60,1);
 se(145,1);
}
※69行目のmath.hの閉じタグは無視してください,よくわからないのですが勝手に追加されました…

使い方

原理とかは置いといて,まずはこのプログラムの使い方を説明します. seという関数は,指定した音程・時間を鳴らすためのものです.第1引数にMIDIのノートナンバー,第2引数に0.5秒単位で音の長さを指定します. なお,第1引数を145とすることで休符になります. loop関数にひたすらse関数を並べていくだけで曲が演奏できます.簡単!

原理とか

恥ずかしながら作り始めた当初,Arduinoに搭載されているtone関数を知らなかったので,高校の物理の授業で習う原始的な音程制御方法でプログラムを書きました. やっていることは単純で,MIDI Tuning Standardの計算式を基に周波数を計算して,そこから波形の周期を計算します. 図のように半周期ごとに波形をON・OFFしてやることで矩形波を作ることが可能です.この矩形波を指定時間以上で,指定時間に最も近くなるように繰り返すことで音の長さを制御しています.

演奏させてみた

見事に鳴ってくれました!感動!

まとめ

  • Arduinoで簡易シーケンサを作った!
  • 物理の理論が確認できた!
  • かえるの歌が演奏できた!
これ1冊でできる! Arduinoではじめる電子工作 超入門
福田和宏
ソーテック社
売り上げランキング: 8,143

0 件のコメント :

コメントを投稿

Android Eclipseを立ち上げたとき,いくつかのプロジェクトにエラーがつく現象

0 件のコメント
さあプログラムを組むぞとEclipseを起動すると,パッケージマネージャが真っ赤になってしまうことがあり,げんなりすることがあります.
Problemsビューでエラーを確認すると,どのプロジェクトを見ても,エラーの内容は
The project was not built since its build path is incomplete.
というようなもの.
以下のサイトで解決法が掲載されていました.
android - Yet Another 'The project was not built since its build path is incomplete' - Stack Overflow

要約すると

[File] - [Switch Workspace] (日本語の場合[ファイル] - [ワークスペースの切り替え] )から,異なるワークスペースに切り替え,再び元のワークスペースに切り替えるだけです.
私は今回きれいにエラーが全て無くなったので,お困りの方は一度試してみてください.
スマートにプログラミング Android入門編 第4版 SDK5.x Lollipop対応
堀切 堤
リックテレコム
売り上げランキング: 60,786

0 件のコメント :

コメントを投稿

良いコードへの道

0 件のコメント
読んでいて面白いサイトを見つけました.
良いコ-ドへの道―普通のプログラマのためのステップアップガイド:連載|gihyo.jp … 技術評論社
コードの可読性や性能を向上するためにはどんなコーディングを心がけるべきかを書いた連載記事です.現在は「良いコードを書く技術」というタイトルで本も出版されているようです.そこから気になったキーワードについて調べました.

ブロックスコープ

スコープとは変数が使用できる範囲のことを言います.ブロックスコープというのは,定義された場所からそのブロックが終わるまで,変数が使用可能ということです.
このルールはJavaやCなど多くの言語で使用されているのですが,JavaScriptにはブロックコープがないようです.普段JavaScriptを自分で書いたりしないので,知ってちょっと驚きました.

アクセス修飾子

フィールド変数などのスコープを指定するものです.public,private,package private,protectedが存在します.基本的にprivateで用いるのが基本らしいです.フィールド変数に外部や下位クラスからアクセスしたい場合には,セッタ・ゲッタなどのアクセサメソッドを用意して使うと良いです.

//フィールド変数
private int count

//セッタ
public void setCount(int count){
  this.count = count;
}

//ゲッタ
public int getCount(){
  return this.count
}

こんな感じで指定してやります.
アクセス修飾子を指定しない場合,JavaやC#ではprivateになるようです.

final変数の使用上の注意

final変数を使用することで,クラス変数を定数として使用することが可能になります.finalを付加することで外部からの値の書き換えが不可能になるため,アクセス範囲をpublicとしても比較的安心です.
しかし,変更が不可能になるのは値のみであるため,参照型変数の場合は参照先の値を変更することで実質的に書き換えが可能になってしまうので注意が必要です.もし参照型をfinal変数として使用する場合には値の書き換えが不可能なコレクションを使う必要があります.
【参考】
final変数とは : JavaA2Z

ユーティリティクラス

知らない用語だったので検索したところ,噛み砕いてわかりやすく書いてあるサイトを見つけたので掲載しておきます.ユーティリティクラスの定義は,メンバが全てstaticなクラスです.実際に作る場合にはインスタンスを作らせないように,privateなコンストラクタを実装する必要があります.
【参考】

クラスのネスト

クラスの作り方を変えてコードの保守性を向上する方法は,クラスを別ファイルに分ける以外にも,クラスをネストすることによる方法も存在します.スコープの管理をしっかり理解していれば,有効に働きそうです.

インナークラス

エンクロージング型のインスタンスに関連付ける必要があるため,そのインスタンス変数にアクセスする際には利用しやすい.わかりやすく書けば,ネストしたクラスで,かつ非staticなクラスです.
どういうものかわかっても使いどころが良くわからなかったのですが,GUIアプリケーションのイベントハンドラ定義などに使えるようです.使い道がやはりわからないので教えて偉い人….

無名(匿名)クラス

クラスに名前を付けずに利用するクラスのことをいいます.
コンストラクタが使えず,継承やインターフェースの実装なども行えないなど,制約が多いです.単純かつ,コンストラクタが必要でない,再利用しないクラスに有効です.

【参考】
話題がバラバラなのでまとめようにもまとめづらいのですが,保守性・可読性の高いコードを書くためには多くの基礎知識がいるのだと感じました.色んなコードを読んでいくうちにこういうテクニックが使えるようになったらいいなあ.

0 件のコメント :

コメントを投稿

C# ArrayListとListの違い

0 件のコメント

C#で可変長のリスト・コレクションを使うときに,ArrayListとListの使い分けってどうするのだろうかと疑問に思っていました.調べたら色々見つかったのでまとめました.

作って覚えるVisual C# 2015 デスクトップアプリ入門
荻原 裕之 宮崎 昭世
秀和システム
売り上げランキング: 2,540

ArrayList

言わずと知れた,可変サイズの一次元リスト・コレクションです.
.NET Framework 1.xで大活躍のコレクションですが,もちろん.NET Framework 2.0においても使用は可能です.

特色

ArrayListには格納するオブジェクトの型名の指定をせず,格納されるときにすべてObject型にアップキャストされる.(ボックス化される.)
【メリット】
同じArrayListに何でも突っ込める.
【デメリット】
値を呼び出して使用する際にはキャストが必要である.
foreach文などで順に処理する際,異なる方のオブジェクトが混ざっているとエラーになってしまうことがある.

List<T>

.NET Framework 2.0で,ジェネリックの仕組みを使ったListジェネリッククラスが導入されました.

特色

型の指定をしてインスタンス化します.
【メリット】
値を呼び出して使用する際,キャストが不要である.

おまけ:LinkedList

こちらも.NET Framework 2.0で実装されました.

特色

データの要素をリンクリストに繋げていくリスト構造です.
要素の挿入・削除がある場合,内部的にはリンクの付け替えをするだけです.
【メリット】
値の挿入・削除が高速に行える.
【デメリット】

インデックスによる参照ができないため,ランダムなアクセスが苦手.

猫でもわかるC#プログラミング 第3版 (猫でもわかるプログラミング)
粂井 康孝
SBクリエイティブ
売り上げランキング: 44,075

考察

明確に使う型が決まっている場合にはArrayListを使うより,Listを使う方が良いです.
多くの場合格納する型は決まっていると思うので,結局普段はListを使えばいいのかなと思います.
LinkedListとListの使い分けについては,要素の挿入や削除が多い場合はLinkedList,要素の参照が多い場合はListという感じでしょうか.
パフォーマンスを向上するためにも,こういったチューニングが自然にできるようになりたいですね.わかりやすい内部的な仕組みに関する説明は@ITに良いページがあったので以下に挙げておきます.

参考サイト


0 件のコメント :

コメントを投稿

Bloggerはじめました

0 件のコメント
以前までサーバを借りてちょっとしたwebページを運用していたのですが,こまめにHTMLやCSSをいじるのが面倒に思えてきたので,Bloggerに移行することにしました.
以前はデザインの自由度に拘りすぎていたのですが,今となってはそんなに気になりません.ゆるーく更新していきますので応援よろしくお願いします.応援されなくても適当にやってます.

0 件のコメント :

コメントを投稿