iOSでボタンを角丸にする方法

今回はiOSのボタンを角丸にする方法を紹介する。 (実装環境:Xcode 7.3.1) 1.ButtonをView上に配置する 2.Buttonの大きさと背景色を変更する (角丸になったことが分かりやすくするための手順で必須ではない) 3.ButtonにUser Defined Runtime Attributesを追…

AdroidのToastを自作する方法

Androidアプリでユーザへの通知によく利用されるものの一つが「Toast」である。 簡潔なコードで記述でき、ユーザの注意を引くことができる。今回はToastの様なものを自作する方法を紹介する。元々存在するToastを自作する理由としては、自作する事により自由…

Android StudioのプロジェクトにAARを取り込む方法

一昔前はAndroidアプリで使用するライブラリといえばJAR形式が一般的であったが、最近はAAR形式が用いられる事も多くなってきた。 今回はAAR形式のライブラリをAndroid Studioに取り込む方法を紹介する。 1.サブプロジェクトとしてaarファイルをプロジェクト…

Androidアプリで1次元バーコードを作成する方法3

今回も前回に引き続き、ライブラリを使用せず1次元バーコードを作成・表示する方法を紹介する。 前回はライブラリを使用せず「CODABAR(NW-7)」規格のバーコードを作成・表示したが、今回は「CODE39」規格のバーコードを作成・表示する方法を紹介する。「CODA…

Androidアプリで1次元バーコードを作成する方法2

前回は「ZXing」ライブラリを使用して、Androidアプリで1次元バーコードを作成・表示する方法を紹介した。 今回はライブラリを使用せず、全て自前で1次元バーコードを作成・表示する方法を紹介する。今回も1次元バーコード規格は「CODABAR(NW-7)」に限定する…

Androidアプリで1次元バーコードを作成する方法1

今回はAndroidアプリで1次元バーコードを作成する方法を紹介する。 バーコードの作成は、Googleが開発した「ZXing」というライブラリを使用する。1次元バーコードには様々な規格が存在するが、今回は「CODABAR(NW-7)」規格の作成方法を紹介する。 1.Gradleの…

Androidにおける遅延実行の実装方法

今回はAndroidにおける遅延実行の実装方法について紹介する。 遅延実行とは、名前から予想できる通り、遅らせて処理を実行することである。 Handlerクラスの「postDelayed」メソッドを使用して、指定した時間後に、指定した処理を実行する。postDelayedメソ…

メインスレッド以外でUIを変更する方法

Androidアプリにおいて、メイン(UI)スレッド以外のスレッドで、UIを変更しようとすると、実行時に下記の例外が発生する。 これは「UI部品の操作はUIスレッドから行わなければならない」というAndroidの制約のためである。今回は、メイン(UI)スレッド以外から…

WebView上でのリクエストをフックする方法

Androidアプリ上でWebページを表示したい場合は「WebView」を使用することになる。 今回はWebViewで表示したWebページ上のリンクがユーザによりタップされた場合に、それをアプリで検知する方法を紹介する。 1.WebViewでWebページを表示できる様にする 2.Web…

ブログを新設しました

ブログを新設しました。 以下の記事は「MoonMt.Lab IT開発技術 調査報告書」から移行したものです。

Android(Java)でメソッドの呼び出し元を確認する方法

筆者は他人が作成したコードを分析する時によく使います。 呼び出し元の「クラス名」「メソッド名」「行数」が標準出力に表示されます。 StackTraceElement ste = Thread.currentThread().getStackTrace()[3]; System.out.println("caller class:" + ste.get…

iOSアプリ開発で日時を扱う時の注意点(暦と24時間表示の設定)

今回は、iOSアプリ開発で日時を扱う時の注意点を紹介する。 日付型である「NSDate」型を、文字列型である「NSString」に変換する際、「NSDateFormatter」クラスを使用することが一般的である。 ただ、NSDateFormatterの設定によっては意図しない変換が行われ…

REST風サービスをJavaEEで構築する方法13(SQLログ編)

今回はEntityManagerで実行したSQLをログに出力する方法を紹介する。REST風サービスをJavaEEで構築する方法09(DB接続設定編)で生成した「persistence.xml」を編集する。 プロジェクトツリー上の[構成ファイル]>[persistence.xml]をダブルクリックしてファイ…

REST風サービスをJavaEEで構築する方法12(DAO層編3)

前回はSQLを使用して、1つテーブルに対して検索する方法を紹介した。 今回はSQLを使用して、複数テーブルを結合した検索の方法を紹介する。 下記の記事を読了していること。 ・REST風サービスをJavaEEで構築する方法01(導入編) ・REST風サービスをJavaEEで構…

REST風サービスをJavaEEで構築する方法11(DAO層編2)

前回はDao層の基本的な実装方法を紹介した。 今回はSQLを使用したDB操作の方法を紹介する。 下記の記事を読了していること。 ・REST風サービスをJavaEEで構築する方法01(導入編) ・REST風サービスをJavaEEで構築する方法02(雛形プロジェクト編) ・REST風サー…

REST風サービスをJavaEEで構築する方法10(DAO層編1)

前回はDBに接続するための設定方法を紹介した。 今回は、その接続設定を使用して、実際にDBのデータを読み書きする方法を紹介する。 下記の記事を読了していること。 ・REST風サービスをJavaEEで構築する方法01(導入編) ・REST風サービスをJavaEEで構築する…

REST風サービスをJavaEEで構築する方法09(DB接続設定編)

今回はJavaEEからDataBase(MySQL)に接続する方法を紹介する。 下記の記事を読了していること。 ・REST風サービスをJavaEEで構築する方法01(導入編) ・REST風サービスをJavaEEで構築する方法02(雛形プロジェクト編) ・REST風サービスをJavaEEで構築する方法03…

REST風サービスをJavaEEで構築する方法08(Logic層編)

今回はLogic層の実装方法を紹介する。前回までサーバ側の処理はApi層のクラスある「SampleApi」に記述してきた。 しかし、Api層はRESTクライアントからの処理要求を受け付ける役割を行うクラスであり、詳細な処理を記述するべきではない。 詳細な処理はLogic…

REST風サービスをJavaEEで構築する方法07(JSON返却編2)

今回は前回に引き続き、REST風サービスからRESTクライアントへJSON形式を返却する方法を紹介する。 前回はJSON形式のデータを生成する前準備としてMapを利用したが、今回はより実践的なDTO(Data Transfer Object)を利用する方法を紹介する。 下記の記事を読…

REST風サービスをJavaEEで構築する方法06(JSON返却編1)

今回はREST風サービスからRESTクライアントへ、JSON形式のデータを返却する方法を紹介する。前回まで作成したREST風サービスは、処理結果として単純な文字列を返却するものであった。 REST風サービスの場合、処理結果をJSON形式で返却することが多いので、今…

REST風サービスをJavaEEで構築する方法05(パラメータの受け取り編)

今回はRESTクライアントからREST風サービスへパラメータを送信する方法を紹介する。 具体的には「@QueryParam」「@FormParam」「@PathParam」を使用し、受け取るパラメータを定義する。 下記の記事を読了していること。 ・REST風サービスをJavaEEで構築する…

REST風サービスをJavaEEで構築する方法04(各メソッド編)

前回までは、GETメソッドのみを対象としてきたが、今回はGETメソッド以外(POST、PUT、DELETE)の実装方法を紹介する。 簡潔に実装方法を説明すると、これまで「@GET」を指定していた箇所で、「@POST」、「@PUT」、「@DELETE」を指定することになる。 下記の記…

REST風サービスをJavaEEで構築する方法03(RESTクライアント編)

今回はJavaScript(jQuery)を使用して、簡単なRESTクライアントを作成し、前回作成したREST風サービスを実行する方法を紹介する。 下記の記事を読了していること。 ・REST風サービスをJavaEEで構築する方法01(導入編) ・REST風サービスをJavaEEで構築する方法…

REST風サービスをJavaEEで構築する方法02(雛形プロジェクト編)

今回は最低限のREST風サービスを構築する方法を紹介する。 下記の記事を読了していること。 ・REST風サービスをJavaEEで構築する方法01(導入編) Api層の実装を行う。 1.プロジェクトの作成 2.クラスの作成 3.クラスを記述する 4.ApplicationConfigクラスを自…

REST風サービスをJavaEEで構築する方法01(導入編)

これから何回かにわたりJavaEEを用いて、REST風サービスを構築する方法を紹介する。REST風と記述している理由 ここでは厳密にRESTfulと呼べるものを追い求めるのでは無く、業務としてのシステム構築を見据えて、各手法を紹介したいためである。 (厳密なRESTf…

iOSアプリ間でデータを共有する方法(Custom Paste Board)

今回は、iOSアプリ間で、データを共有する方法を紹介する。通常、iOSアプリはアプリ毎に独立した領域にデータを格納するため、別アプリのデータを利用することは出来ない仕組みになっている。 セキュリティ面を考えると、この仕組みは非常に有用であるが、利…

iOSアプリ開発でNSErrorの情報を出力する拡張NSLogを定義する方法

今回はNSLogを拡張して、NSErrorの情報を出力する識別子の定義方法を紹介する。わざわざ新しい識別子を定義しなくても、NSErrorの情報をログに出力することは可能であるが、記述が少々長くなってしまう。 今回紹介する方法を用いれば、NSErrorの変数を直接引…

iOSアプリ開発でログにログレベルを導入する方法

iOSアプリ開発でログを出力する場合「NSLog」を使用するが、Javaでログ出力に用いられるLog4Jのログレベルの様な考え方は存在しない。 今回はiOSアプリ開発でログにログレベルを導入する方法を紹介する。 Log4Jのログレベルは、設定値によって出力するログを…

iOSアプリ開発でログにクラス名とメソッド名を出力する方法

iOSアプリ開発でログを出力する場合「NSLog」を使用するが、「NSLog」の出力には出力したクラス名やメソッド名が含まれない。 これだとログに出力する文言に気を使っておかなければ、不具合箇所を特定するのに時間がかかることがある。 今回はログにクラス名…

iOSアプリ開発で画面のフリーズを抑止する方法

ユーザのUI画面へのアクションで、時間を要する処理(例:通信処理、DB処理)を実行すると、処理が完了するまで画面がユーザの操作を受け付けなくなる。この状態は良いユーザビリティとは言えない。 今回はiOSアプリ開発で画面のフリーズを抑止する方法を紹介…

iOSアプリ開発においてFrameworkを自作する方法【手順5】

今回は、前回の続編として、「.framework」ファイルを自作する方法の最終回として「手順5.Frameworkをビルドし利用する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている。 iPhon…

iOSアプリ開発においてFrameworkを自作する方法【手順4】

今回は、前回の続編として、「.framework」ファイルを自作する方法の「手順4.Frameworkで実行したい処理をクラスとして追加する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている…

iOSアプリ開発においてFrameworkを自作する方法【手順3】

今回は、前回の続編として、「.framework」ファイルを自作する方法の「手順3.Targetを作成し、Run Scriptを設定する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている。 iPhoneア…

iOSアプリ開発においてFrameworkを自作する方法【手順2】

今回は、前回の続編として、「.framework」ファイルを自作する方法の「手順2.Property Listを作成する」を紹介する。繰り返しになるが、「.framework」ファイルを自作する方法に関しては、下記のサイトで非常に丁寧に紹介されている。 iPhoneアプリ開発自作F…

iOSアプリ開発においてFrameworkを自作する方法【手順1】

Appleが提供するライブラリの多くも「.framework」ファイルで提供されており、iOSアプリ開発におけるライブラリの一般的な形式の一つと言える。 しかし、「.framework」ファイルを作成しようとXcodeのテンプレートを探しても該当するものが存在しない。 今回…

iOSアプリ開発におけるNotification(通知)の使い方

Notification(通知)は、任意のオブジェクトに対して、メッセージを通知する仕組みである。 今回はNotification(通知)の使い方を紹介する。 Notification(通知)は非常に便利な仕組みであるが、多用するとソースコードの可読性を損なう恐れがある。 特に複数人…

iOSアプリ開発においてデリゲートを自作する方法

デリゲートは委譲とも呼ばれ、あるオブジェクトの処理の一部を、別のオブジェクトに処理させることを指す。 Appleから提供されているライブラリにも、この仕組みは多用されているので、開発中に使用する機会は多い。 今回は、このデリゲートの仕組みを自作す…

iOSアプリ開発における定数定義の方法【最適解編】

過去3回iOSアプリ開発における定数定義方法を紹介してきた。 ・iOSアプリ開発における定数定義の方法【基本編】 ・iOSアプリ開発における定数定義の方法【環境毎設定編】 ・iOSアプリ開発における定数定義の方法【マクロ使用編】今回は現時点で筆者が考える…

iOSアプリ開発における定数定義の方法【マクロ使用編】

以前iOSアプリ開発における定数定義の方法として、「extern」を使用する方法を紹介した。 今回はマクロを使用した別の定数定義方法を紹介する。 1. 定数を定義する専用のクラス「AppConsts」を作成する 2. 「.h」ファイルに「#define」を用いて定数を定義す…

iOSアプリ開発における定数定義の方法【環境毎設定編】

本番環境・テスト環境で、アプリが接続するサーバURLが異なる事は少なくない。 この様に定数でありながら、条件により有効になる値を変更する必要がある場合の、定数定義の方法を紹介する。 (基本的な定数定義の方法は、「iOSアプリ開発における定数定義の方…

Xcode6でPCHファイルを追加する方法

Xcode6.xで新規にプロジェクトを作成すると、Xcode5.xまでデフォルトで作成されていた「-Prefix.pch」が作成されなくなっている。 今回はXcode6.xで「-Prefix.pch」を手動で追加する方法を紹介する。 1.プロジェクトツリー上でファイルを追加する 2.Prefix H…

iOSアプリでzipファイルの解凍を行う方法(SSZipArchive)

サーバからiPhoneに大きなファイルをダウンロードする場合、zip圧縮して通信容量を削減することは少なくない。 今回は、iOSアプリでzipファイルを解凍する方法を紹介する。 1.ライブラリSSZipArchiveをダウンロードする 2.ライブラリSSZipArchiveをプロジェ…

iOSアプリでXMLを解析する方法(NSXMLParser)【性能向上編】

前回はNSXMLParserを使用して、XMLデータを解析する方法を紹介した。 ただ、前回紹介した方法は、性能面で問題点がある。今回はその問題点に対する改善策を紹介する。 下記の実行結果からも分かるように、取得したいcountの値は4行目で取得できているにも関…

iOSアプリでXMLを解析する方法(NSXMLParser)【基礎編】

今回はiOSアプリでXMLをNSXMLParserを使用して解析する方法を紹介する。 NSXMLParserは「libxml2.dylib」を必要とするので、プロジェクトに追加しておくこと。 最初にNSXMLParserの主なデリゲートメソッドを紹介しておく。 これらのデリゲートメソッドを使用…

iOSアプリを実行しているデバイスの種類を取得する

iOSアプリから、そのアプリが実行されているデバイス(端末)の種類を取得する方法を紹介する。用途としては、サーバ連携があるアプリで、実行デバイスの情報を収集する等が考えられる。ソースコード> // 使用するクラスで「<sys/sysctl.h>」をインポートしておく size_t siz</sys/sysctl.h>…

iOSアプリ開発における別スレッドで通信する時の注意点(NSURLSession)

UI画面のカクつきを軽減するために、内部処理を別スレッドで実施することは少なくない。 その際、NSURLSessionでサーバ通信を行う場合、設定に気をつけないと通信結果がメインスレッドに返却されていまい、結果として画面のカクつきを引き起こしてしまう。今…

iOSアプリ開発でデータをgzip圧縮する方法

iOSアプリで端末からサーバに対して大きなデータを通信する際に、通信データをgzipに圧縮して通信を行うことがある。 今回は、iOSアプリでデータをgzip圧縮する方法を紹介する。具体的には、NSData型のデータを引数として受け取り、gzip圧縮したデータをNSDa…

iOSアプリが実行されている端末を特定する方法

今回は、作成したiOSアプリが実行されている端末を、一意に識別するためのIDを取得する方法を紹介する。取得したIDをサーバで保持し、同じIDでアクセスしてきた場合は、前回の続きから実行する等の使用方法が考えられる。 「UIDevice」の「identifierForVend…

VMware上のCentOS(Linux)にJava(JRE)をインストールする方法

今回は、以前VMware上に構築したCentOS上にJava(JRE)をインストールする方法を紹介する。今回関係するソフトのバージョンは下記の通りである。 ・Windows 7 Home Premium Service Pack1 ・VMware Player 6.0.1 ・CentOS 6.5 ・JRE(Java SE Runtime Environme…

Windows PCをGitのリモートリポジトリとして使用する方法

今回は、Windows PCをGitのリモートリポジトリとして使用する方法を紹介する。Gitとは、プログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムである。 故障率を抑えるため、通常はサーバマシンのLinux上に構築したGit…