Quantcast
Channel: web pakun
Viewing all 247 articles
Browse latest View live

Eclipse のMarvenプロジェクト作成時にCould not resolve artifact archetypesのエラーが出る場合の対処

$
0
0

EclipseでMarvenプロジェクトを作る際には、「新規プロジェクトの作成」から、「new Maven Project」を選択し、その後、そのMavenプロジェクトのタイプを選択して作成します。

この際に、下記のようなエラーが出てプロジェクトを作成できない場合の対処法です。

Maven Error

 

Could not resolve archetype org.apache.maven.archetypes:maven-archetype-quickstart:1.1 from any of the configured repositories.

Could not resolve artifact org.apache.maven.archetypes:maven-archetype-quickstart:pom:1.1

Could not transfer artifact org.apache.maven.archetypes:maven-archetype-quickstart:pom:1.1 from/to central (https://repo.maven.apache.org/maven2): connect timed out

 

エラー原因

エラーの原因は環境によって異なるでしょうが、上記のようにConnetErrorが出る場合は、プロジェクト作成時にプロジェクトの雛形をネットに取得に行く際、接続ができなくてエラーになっている可能性があります。

確認の方法としては、お使いのPCのユーザディレクトリに、「.m2」という、Maven設定を置いていくためのディレクトリができていると思います。

この「<ユーザディレクトリ>\.m2\repository\org\apache\maven\archetypes\maven-archetype-webapp」に、通常、作成するプロジェクトの雛形のファイルをダウンロードしてキャッシュしているが、これが、きちんとダウンロードできていないと、プロジェクト生成に失敗する場合があります。

そして、ダウンロード失敗の原因ひとつは、ネット上のリポジトリアクセスできないことで、インターネットにつながっているにもかかわらずそのエアーが出る場合は、proxyの設定がうまく聞いていない場合が多いです。

私の場合、上記フォルダに出来た、中途半端なファイルを開いてみると、

#NOTE: This is an Aether internal implementation file, its format can be changed without prior notice.

@default-central-https\://repo.maven.apache.org/maven2/.lastUpdated=1470726500754

https\://repo.maven.apache.org/maven2/.error=Could not transfer artifact org.apache.maven.archetypes\:maven-archetype-webapp\:jar\:1.0 from/to central (https\://repo.maven.apache.org/maven2)\: connect timed out

といったエラーが吐かれていました。

 

対処法

上記原因から、対処法は、Mavenがリポジトリ情報を取得する際に使用するネットワーク情報に、きちんとproxyの情報を設定してあげる必要があります。

やり方は、「<ユーザディレクトリ>\.m2\」直下に「setting.xml」を置いて、下記のような設定を行います。

 

上記の設定で、「https」が非常に重要です。

その上で、

Maven Error2

 

Preferences->Maven->User Settings

に設定を行い、「Reindex」します。

これでもうまくいかない場合は、

<ユーザディレクトリ>\.m2\repository

ディレクトリにキャッシュされているフォルダを削除してから、再度試してみてください。

 


実行時に、Javaのクラスパスがきちんと設定されているかどうかを確認するTips

$
0
0

Javaのアプリケーションを実行したときに、エラーで落ちたり、想定していない動き方をすることって、たまにありますよね。

たいていの場合は、Class Not Found Exceptionが出たりしますが、動的にインスタンス化していたりして、そのエラーすら出ない場合もあります。

今回は、Javaのアプリに、クラスパスとして、そのjarが適用されているのかを確認するTipsをご紹介します。

エラーに限らず、以下のような場合にも使えますよ。

  • たくさんのjarが混在している環境で、複数の異なるバージョンのjarが適用されていて、どれが効いているか分からない場合に確認する。
  • どのクラスがどのタイミングでインスタンス化されているかをデバッグする

 

設定方法

 

バッチでの起動時

設定方法は、JavaのJVMの引数に「-verbose:class」を指定します。バッチとかでJavaアプリを起動している場合は、

java -verbose:class XXXClass

のような感じですね。情報はコンソールに表示されるので、ファイルにリダイレクトするほうが良いかもしれません。

 

Eclipseの起動時に設定

Eclipseをお使いの場合は、「実行の構成」から、「JVM引数」のところに設定して、実行します。

JVM指定

 

表示される情報

Javaアプリは、実行の際に、必要になったタイミングでクラスをJVMにロードします。ロードはクラスパスとして設定されているパスやjarの中から読み込んで行われますが、このオプションを指定すると、Javaアプリの実行時に、以下のように、ロードしたクラスと、そのクラスが含まれているjarファイルの情報が表示されます。

目的のクラスの名前がなければクラスパスがうまく設定されておらず、ロードできないということですし、バージョンの異なるjarファイルから読み込まれているかどうかも確認できます。

Maven Error2

 

台湾土産にもOK 定番お菓子の「可楽果」

$
0
0

台湾人なら誰でも知っている、昔からあるエンドウ豆のスナック菓子「可楽果」。

可楽果と書いて「クラッカー」と読ませる、聯華食品の人気のお菓子です。

可楽果

 

少しピリ辛で、ニンニクの効いている、赤い袋の定番「原味」(オリジナル)以外にも、青い袋の「海苔味」や黄色などのシリーズがありますが、先日の台湾旅行でついに見つけてしましました。

緑の袋の「九層塔」味。一度、台湾で九層塔の炒め物を食べてから、ずっと病み付きになっていたのですが、その九層塔と可楽果という組み合わせなら、食べないわけにはいきません。

で、やっぱり期待を裏切らない味で、Goodでした。

ニンニクが嫌いな人には無理ですが、たいていの人は一度ははまってしまう可楽果。台湾のお土産としても喜ばれますよ!

どんなJavaアプリやjarライブラリでもデバックする方法(eclipseによるリモート・アタッチ)

$
0
0

今では、開発の様々なシーンでオープンソースのライブラリを使うことが多くなってきています。

そんなライブラリを使用する際に、想定しない動きをしたり、うまく動かないんだけど、中で何が行われているかわかりにくいこと、ありますよね。

自分で作成したクラスやアプリならEclipseのデバッグ機能を使えば、変数に何が入っているかなどを逐次実行できますが、オープンソースのスタンド・アロンアプリやWebサーバ上のWebアプリだと、そうは行きません。

そんなときに役立つTipsをご紹介します。

Eclipseで実行できないなら、実行中のJVMにつないで覗いてみる

その方法は、JVMに、リモートから接続してデバッグするというものです。

Javaのアプリやサーバはバーチャルマシン(JVM)上で実行されているというのはご存知ですよね。JVMにはもともと、デバッグ機能を外部に公開する仕様が備わっており、それを利用すると、Eclipseなど、他のJavaアプリから接続して、デバッグを行えるようになります

 

1.デバッグを外部から受け付けられる状態にする

外部からそのJVMに接続してデバッグを出来るようにするためには、JVMの起動時に、下記のようなオプションを渡す必要があります。

アプリやサーバの起動バッチファイルの中でJVMオプションを指定している部分があればそこに、なければ、Javaの実行時に以下の引数を指定します。(最後の「-jar remotedebugtest.jar」は実行するjarファイルの指定ですので、お使いの環境に合わせて変更してください。その前までの引数が重要です。)

java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y -jar remotedebugtest.jar

それぞれの意味を解説すると、

-Xdebug・・・このJVMでデバッグを行うという意味になります。

-Xrunjdwp:・・・これ以降が、デバッグの詳細な振る舞いを指定するオプションです。

transport=dt_socket・・・接続をソケット形式で行う指定になります。他に共有メモリーも使用できますが、多くの場合はソケット形式でしょう。

server=y・・・デバッグ情報をどこで生成するかの指定です。yだと、接続先のJVMで行うことになります。

address=8000・・・Eclipseとのデバッグクライアントからの接続をそのポート受け付けるかのポート番号です。8000番台等、他のサーバと重ならない、適当なポート番号を指定します。

suspend=y・・・これは、少し癖があります。「y」だと、デバッグクライアントから接続するまで、アプリが実行されずに待ったままになります。すぐに実行して終わってしまうアプリは「y」の方がよいでしょう。逆に指定しないと待たずに実行されます。サーバ上に配備されるWebアプリは、指定しないほうが良いと思います。

 

2.Eclipseから接続する

上記オプションでアプリを起動したら、今度は、Eclipse側の設定を行って接続しましょう。

はじめに、適当なプロジェクトを作成します。

次に「実行」⇒「デバッグの構成」を開くと、上記のような設定画面が開きます。ここで、「リモートJavaアプリケーション」を右クリックすると、新規に構成が追加できます。

image

 

追加する構成の設定で、接続プロパティーにサーバのアドレス(ホストの部分)、ポートを入力します。

上記の起動時の引数だと、JVM側は、8000番で待ち受けているのですよね。

 

3.デバッグ可能な状態にする

さて、こここからも結構重要なポイントです。

どうやってステップ実行するかということです。ステップ実行するためには、上記で作成したプロジェクトのクラスパスに、デバッグする対象のクラスが含まれている必要があります。

イメージでいうと、リモートJVMで実行しているクラスファイルと、クライアントのEclipse側のプロジェクトのクラスファイルを指紋のように比較して、同じ形があれば、そこが実行されているとみなす感じでデバックしていくからです。

また、同じ形があったら、そのソースを表示するので、jarに、ソースをアタッチする設定を行っておきましょう。

ソースの無いjarであれば、jad等を利用して、Eclipseでデコンパイルしたソースを作ってプロジェクトに含めておくと、どんなアプリでもデバッグできます。

スマホでのWifi時以外のYoutube再生の画質に制限をつけて、通信料を節約する設定

$
0
0

通勤の際に、Youtubeでお気に入り動画を見たりするのですが、先日ついに月の通信制限に引っかかってしまいました。

今まで、そんなに抵触したことは無かったのですが、最近ヘビーローテーションの曲を再生しすぎましたかね。。。。

そこで、WIFIにつながっている時以外は、Youtubeの再生の画質を制限する設定をしておけば、スマホにダウンロードされる画像データの容量がすくなくなるため、あまり通信料を気にせず動画を楽しむことができます。

まずはその設定を。

 

Youtubeアプリの設定

一番目は、Youtubeアプリ全体の設定です。アプリを起動して、右上の「・・・」(下図①)をクリックすると、下記のような画面が開きますので、そこで「(歯車アイコン)設定」(下図②)をクリックします。

設定

 

設定をクリックしたら、設定の詳細画面が開きます。 ここで、「Wi-Fi時のみHD再生」という項目を有効にしましょう。青くなると有効になっています。

設定

 

この設定により、Wifiにつながっている時だけ、自動で高画質となり、通勤時など、LTEや3/4G回線での接続時には低画質で再生されるようになります。

 

再生中の動画での設定

再生中の動画が、音楽など、あまり画質がよくなくてもいい場合、個別に設定することで、さらに通信を抑えることが出来ます。

設定

 

上記のように、再生中の動画の右上の「・・・」を、最初の例と同じくクリックします。すると、以下のような設定メニューが表示されます。

設定

 

ここで、一番左の「画質」を選択すると、下記のように画質を指定できる画面になります。

設定

 

数字の少ない方が画素数が少ないため、画質も粗く、容量も少なくなります。私が自分のiPhone5sで確認した限りでは、「360p」でも、それほど画質が粗くなったようには見えませんでした。

画質の粗さをどこまで許容できるかは個人差があると思いますので、好みに合わせて、快適な動画ライフをお過ごしください。

 

Windowsバッチのすぐ使える雛形サンプル

$
0
0

技術者の方であれば、多くのプロジェクトで、Windowsバッチを使いますよね。

お仕事としてプログラムをしていない方でも、コンピュータの処理を自動化する仕組みである「バッチ」を作れるようになっていると、自分のルーティーンの効率化が図れます。

基本的な部分は共通処理としてどこでも使うので、雛形として載せておきます。

 

雛形Windowsバッチ

TEST_MAIN.bat」みたいに、.batの拡張子のついた適当な名前でファイルを作り、保存してください。

その後、下記のような内容をそのファイルに記述します。

@ECHO OFF
REM +--------------------------------------------------------------------+
REM | DESCRIPTION: | このバッチの説明
REM +--------------+-----------------------------------------------------+

REM 変数設定
set HOGE=変数の値

REM このバッチが存在するフォルダに移動し、そこを基点にする
REM cd /d %~dp0
pushd %~dp0
cls


REM ここらへんに処理を書く

PAUSE
EXIT
REM 処理結果を戻す場合は、「EXIT /b」に変更。

いくつかポイントがありますが、まずは、

 

@ECHO OFF

コマンドやその結果を表示させないようにします。これを指定することで、すべてのコマンドが画面に表示されて分かりにくくなるのを防ぎます。

 

REM

これを書いた行は、コメント行として無視されます。

 

set HOGE=変数の値

変数のセットを行います。他に変数がある場合は、増やして行きましょう。

 

REM cd /d %~dp0

上記の例では、REMでコメントアウトしていて有効になっていませんが、バッチファイルの置いてあるディレクトリに移動します。

「/d」オプションをつけると、ドライブがCやDなど、別のところにあっても移動可能です。これがついていないと、現在Cドライブにいて、Dなど、別ドライブにバッチがおいてある場合に対応できません。

コメントアウトしているのは、通常は、下記の「」の方が汎用性があるからです。

理由は後述します。

 

pushd %~dp0

バッチファイルのあるディレクトリをカレントディレクトリとします。

「pushd」コマンドは、ディレクトリのスタックに引数のパスを記憶してくれるものです。

なぜこのコマンドの方を使うかというと、UNCなどのネットワーク・フォルダにも対応でき、また、後続のバッチの中で、相対パスを使うことが可能になるからです。

 

cls

これは、コマンドプロンプトの画面を一旦クリアするコマンドです。

開始前に、画面をきれいにしておくためですが、お好みでどうぞ。

 

実行してみよう!

これらの記述が出来たら、コマンドプロンプトを開き、このファイル名を打ち込んでReturnすると、実行されます。

まだ何もやらない雛形バッチなので、何もおきませんが、これがエラー無く実行できれば、後は具体的な処理を記述していくだけで、様々な処理が自動化できます。

 

「%~dp0」を理解すれば、Windowsバッチ中でディレクトリ名やファイル名を自由に使えるから便利

$
0
0

Windowsバッチを作成する際、もしくは、他の人が作ったWindowsバッチでよく出てくるのが、「%~dp0」みたいな記述。

「%」とか「~」沢山あって、何がなんだか分からない~!と毎回調べることになるので、ここにまとめておきます。

ちなみに、分からなくなったら、コマンドプロンプトを開いて、「help for」と打ってReturnすると、ヘルプメッセージが表示されるので、大体は確認できます。

さて、最初に、「%~dp0」を読み解くことにしましょう。

 

そもそも、Windowバッチでは、「%0」や「%1」など、「%数字」は、引数を表し、「0」は特別に、そのバッチファイル自身、それ以降は第一引数、第二引数となります

バッチ名が「TEST_MAIN.bat」だった場合、

「TEST_MAIN.bat aaa bbb」を実行すると、

 

D:\MyDownload\script\TEST_MAIN.bat
aaa
bbb

 

のように表示されることになります。

で、

のように「%」と「数字(たとえば0)」の間にある「~」や「d」が、それらをどのように加工して取り出すかのオプションになります。加工して取り出すことを、プログラムの世界では「展開する」といいます。

「~」・・・これは、ドライブ、ファイルパスから「”」を取り除きます。Windowsでは、「Program Files」のように、スペースを含んだパスも良く使われますので、これを引数に渡すときに「”C:\Program Files\Java”」のように囲ったりします。この「”」を取り除き、純粋なパス文字列にするのに必要になります。

それ以外の「d」や「p」などのオプションは、ドライブやファイル名の含まれた文字列から、何を取り出すかの指定を行います。

具体的には、下記のような情報を取り出すことが可能で、複数組み合わせることも出来ます。

%~d0 %0をドライブ文字だけに展開
%~p0 %0をパス名だけに展開
%~n0 %0をファイル名だけに展開
%~x0 %0をファイル拡張子だけに展開
%~dp0 %0をドライブ文字とパスだけに展開
%~nx0 %0をファイル名と拡張子だけに展開

 

組み合わせた場合

%~dp0 %0をドライブ文字とパスだけに展開します。
%~nxI0 %0をファイル名と拡張子だけに展開します。
%~fs0 %0を完全なパスと短い名前だけに展開します。

 

Windowsバッチ(.bat)で文字列の切り出しを行う(Substrみたいな)

$
0
0

Windowsバッチの中で、文字列を、切り出したりしたいことってありますよね。

その他多くのプログラミング言語ではSubstr()という関数が用意されている機能です。

もちろんWindowsバッチでも出来ますが、少し記述の仕方が変わっているので、まとめておきます。

文字列置換も出来ますので、それについては、以前の記事「Windowsのコマンドプロンプトやバッチ内で文字列置換を簡単な記述で行う」を参考にしてください。

基本的な構文は、

%[変数名]:~[開始位置],[文字数]%

 

のようになります。一覧にすると、以下のような感じですね。

ちなみに、開始位置の「m」は0から始まる数字で、文字の先頭から取得する場合は「0」となることに注意してください。

また、全角の場合は、全角一文字が1文字としてカウントされます。

%STR% 変数STRの値全体
%STR:~m% m文字目から、最後まで
%STR:~m,n% m文字目から、n文字分
%STR:~m,-n% m文字目から、最後のn文字分を除いたもの
%STR:~-m% 後ろからm文字目から、最後まで
%STR:~-m,n% 後ろからm文字目から、n文字分
%STR:~-m,-n% 後ろからm文字目から、最後のn文字分を除いたもの

 

「m」で開始位置を指定していますが、プラスなら前から、マイナスが付けば後ろから数えた開始位置の指定になります。

さらに、「n」の文字数が付けば、開始位置からその文字数分切り出されます。指定が無ければ最後までということですね。

 

実際に試せるソースを載せておきますね。

@ECHO OFF
REM +--------------------------------------------------------------------+
REM | DESCRIPTION: | このバッチの説明
REM +--------------+-----------------------------------------------------+

REM 変数設定
SET str1=abcdefghijklmn
SET str2=あいうえおかきくけこ

REM このバッチが存在するフォルダに移動し、そこを基点にする
REM cd /d %~dp0
pushd %~dp0
cls


REM 処理

ECHO ★もともとの文字列
ECHO %str1%
ECHO %str2%
ECHO ----------------------------------


ECHO □2文字目から2文字分
ECHO %str1:~1,2%
ECHO %str2:~1,2%
ECHO ----------------------------------


ECHO ★【文字数】の指定を省略すると最後まで
ECHO □4文字目から最後まで
ECHO %str1:~3%
ECHO %str2:~3%
ECHO ----------------------------------


ECHO ★【開始位置】にマイナスを指定すると、後ろからの位置指定
ECHO □後ろから3文字目から最後まで
ECHO %str1:~-3%
ECHO %str2:~-3%
ECHO ----------------------------------


ECHO 【文字数】にマイナスを指定すると、除外する長さの指定(後ろから)になる
ECHO □4文字目から最後の一文字手前まで
ECHO %str1:~3,-1%
ECHO %str2:~3,-1%
ECHO ----------------------------------


REM PAUSE
EXIT /b

 

上記のバッチを実行すると、以下のような実行結果になります。

バッチ実行結果

 


スマホ(GoogleMapやLine)で自分のいる場所を友人に送る方法

$
0
0

スマホで、自分の今いる場所を相手に送る方法をご紹介します。

友人と待ち合わせしたときに、待ち合わせ場所や自分の場所をおくったり、町中で気になった場所をメモがてら自分にメールで送るなんていう使い方ができますね。

今回は、多くの人が入れていると思われる「GoogleMap」と「Line」でのやり方です。

 

「GoogleMap」で今いる場所を送る

「GoogleMap」で送るには、まず、アプリを開いて、地図上で送りたい場所を「2秒程度長押し」します。この、少し長めのクリックがコツです。

そうすると、下記矢印部分のように、地図上に「ピン」が表示されます。

また、ピンが設定されると、画面の下の方に、そのピンの場所情報が表示されるので、それをタップしましょう。

地図

 

 

すると、そのピンに対する操作を行うことができる設定画面が表示されるので、そこで「保存」を選択します。

保存

 

 

すると、下記のように、どのように保存するかを選択できますので、好きな保存方法を選びましょう。今回はメールでおくることにしますが、ほかにいろいろな保存方法があります。保存というよりは、「共有」のイメージでね。。

保存方法

 

 

メールを選ぶと、メール編集画面が起動し、GoogleMapのURLリンクを送信することができます。これを受けとった人がクリックすると、受けっとった端末やPC上でブラウザが起動し、GoogleMap上でピンが表示されます。

GoogleMap上

 

 

「Line」で今いる場所を送る

Lineでも簡単に今いる場所や、指定の場所を送ることができます。

Lineを送りたい相手のトーク画面の左下の「+」ボタンを押すと、下の図のように、アクションを選択する画面になりますので、そこで「位置情報」を選択します。

位置情報

 

 

すると、以下のように、旗の立った地図画面になります。位置情報サービスの設定有効であれば、ここが自分の現在地ですので、そのまま「この位置を送信」して送ります。

この位置を送信

 

 

墾丁で食べる南台湾海鮮料理(迦拿庭園餐廳)

$
0
0

英語で「CANA Garden Restaurant」です。

カナとはキリスト教の逸話で、足りなくなったぶどう酒をキリストの奇蹟で満たしたという「カナの婚礼」をモチーフにしています。

とはいえ、ご主人がキリスト教信者というだけで、レストランの中身はいたって真っ当な南台湾料理のお店です。

ここ墾丁や高雄は港町ですので、台北に比べて魚介類を利用した料理がお勧めです。とくに、すぐ近くに小さな漁港のある墾丁では、素材の味を生かしつつ、素朴なメニューが一番美味しいと思います。

ここカナ・レストランでも、新鮮な魚介を使った定番の南台湾料理が味わえます。

私の一番のお勧めはこの1皿です。

 

 

 

そうめんと牡蠣をいためたもので、牡蠣スープ入り温麺のような味になっています。

初めて台湾で牡蠣を食べたときにはびっくりしたのですが、台湾の牡蠣は小粒です。日本の牡蠣の3分の1くらいの大きさだと思います。

そのため、日本のように牡蠣を1つ、じっくり食べて満足ーという食べ方よりは、いろいろな食材と一緒に食べることが多いです。身の厚いはまぐりのような位置づけをイメージしてもらえばよいかと。

この料理も、たんぱくなそうめんと牡蠣のうまみ、程よい塩味がマッチして、いくらでも食べられます。

それ以外にも、海草と梅の実を使った料理や、新鮮な海老を使った料理などがあります。↓

  

 

 

 

 

レストランの味はコックで決まるとはよく言ったものですが、地元出身の料理人が腕を振るってくれていますよ。

 

お店は食事のスペースと外に面したバースペースに分かれています。お料理はどちらでも同じものが注文できますので、お好きなスペースを選んでください。

 

中のレストランスペース

  

 

 

 外に面したバースペース

  

 

 

【お店の情報】

http://www.cana-restaurant.com/

住所:屏東県恒春鎮墾丁里大湾路20-1号

 

 

墾丁でバーでゆっくりしたいなら「2P’S PUB」がいいよ

$
0
0

南湾でのサーフィンを終えて、墾丁の大通りを歩いていると、通りから少し入ったところで開店の準備をしている気さくそうなマスターが目に入りました。

昔、高雄に「Pig&Whistle」という大きめのバーがあり、そこで過ごす時間がすごく好きだったのですが、そのマスターのお店はそれほど大きくないものの、なんだかそこにとても似た雰囲気を感じたので、思い切って、入れるかどうか聞いてみました。

するとまだ、開店までには時間があるということでしたが、思ったとおり、丁寧な対応をしていただいたので、もう少し時間をつぶして、18時ごろ、お店に入りました。

お店の中は こんな感じ↓

2P'S PUB2

 

 

2P’Sの由来は、お店の経営者のPhilipとPaulの頭文字をとったそうです。

墾丁はリゾート地として知られていることもあり、比較的大きなレストランも多いのですが、そんな中で、こじんまりと静かにカクテルやビールを飲みながら、昼間の観光の疲れを癒すにはとてもいい空間だと思います。

うるさい音楽も無く、私が入ったときには3グループくらいのお客さんたちがゆっくり話をしていました。

昔、伊豆にあるメキシコ民宿で手作りの「フローズン・マルガリータ」を飲んで以来、カクテルといえば「マルガリータ」で、なおかつ「フローズン」がお気に入りなので、その杯を注文してみました。

きちんとカキ氷状になったマルガリータを出してくれるお店は、仕事も丁寧で、出来合いのものを出さない!と勝手に思い込んでいるので。。

で、このお店はというと。。。きちんとしたフローズン・マルガリータを出してくれました!

 

 

うぅー。ウマイ。

とくに南台湾の暑い夜には合います。

 

カウンター脇に座ったので、私の視点からはこのようにカウンターが見えました。

2P'S PUB1

 

 

昼間に準備をしていたマスターは、日本にも行ったことがあるそうで、日本語も流暢です。

明日のために美味しいお店の情報もGetできました。

本日最後の2杯↓

   テキーラ

 

 

次に墾丁に来たときは、また寄らせていただきます。

 

【お店の情報】

住所:屏東県恒春鎮墾丁路通海港1号

 

 

台湾でのひとり鍋の楽しみ方

$
0
0

台湾の友人と話をしていて、すこしびっくりしたのが、

台湾ではひとりで鍋を食べることも少なくないということ。

もちろん、みんなで鍋をつつく習慣は台湾にもあり、メジャーな火鍋を食べに、友人同士や家族で行くことも多いのですが、

お昼にひとりで鍋を食べるひとも結構いるそうで。。

だから、大きなデパートの地下や、駅のフードコートには一人鍋専門店があるんですねー。

ということで、私も早速一人鍋2人で食べに出かけました。

 

↓ みんなこんな感じで食べてました。

 

 

(ひとりで鍋つつくのがさみしいというのは日本人特有の感情なのかもと思った。だって、定食と同じですもんね!)

 

ひとり鍋のお店は、日本の牛丼屋のように、カウンター形式が多いようです。

カウンターは、コの字もしくは楕円形で、そこに、ひとり用の小さな鍋が並んでいます。

 

 

空いている席を見つけたら、すばやく座ると。

ここらへんも日本の牛丼屋と同じです。

 

最初に、鍋底を選びました。

鍋底といっても、「なべそこ」ではありません。

「鍋のベース」という意味で、鍋の出汁の種類ということらしいです。

お店によってはベースを選ぶことができ、

「トマト鍋」「カレー鍋」のように違った味を楽しめます。

 

 

次に、1人前の具のセットを選びます。

豚肉か牛肉のスライスと、写真のような野菜、肉団子、湯葉を揚げたもの、とうもろこしの輪切り

などがセットになっています。

 

 

 

一通り注文し終わると、目の前に上の写真のようなセットが並びますので、

後は個々人で随意にしゃぶしゃぶしていくだけ。

 

昼間っからの鍋、やみつきになりそうです。

 

Windows7~10のHomeエディションでもRemoteDesktop(遠隔操作)を行う

$
0
0

Windows7から、HomeエディションではRemoteDesktopのホスト(受け側)になれなくなってしまいました。

つまり、RemoteDesktopでそのPCにほかの端末から接続できなくなったということで、その機能を使うには、Profassional以上のエディションを使う必要があります。

自宅では少し古いWindows7のHOmeエディションのPCに書類や動画をストックしており、いつも持ち歩いている端末から接続して使うことが多いため、遠隔操作を行いたいと思っていろいろと探していたところ、 次の2つの方式に落ち着きました。

どちら方法も得意な分野と苦手な分野がありますので、自分が使う目的の機能が得意なものを使うのがお勧めです。

 

仕事や作業での使いやすさを重視・・「RDP Wrap」

remote

 

仕事等で、そのホストPCにログインして、文章を入力したり、Webで調べ物をしたり、Officeを操作したりするなど、キーボード、マウス操作を快適に行いたい場合には、RemoteDesktopと同じような使い心地の「RDP Wrapが良いのではないでしょうか。

その名の通り、RemoteDesktopのプロトコルをフラップしたソフトウェアなので、見た目も使い勝手もRDPそのもののように見えます。

他の方法だと、動きが緩慢だったり、キーボード操作に難があったりしますが、これは非常に操作に対する反応が良く、画面もきれいです。

 

導入方法

ここのページからzipファイルをダウンロードして、解凍後、「install.bat」をダブルクリックすれば、インストールされます。

status

 

ダブルクリック時には、右クリックから「管理者として実行」を選択して、管理者権限でインストールします。

きちんと起動しているのかを確認するには、解凍した同じディレクトリにある「RDPConf.exe」をダブルクリックして起動し、行います。

起動した画面上部のServidceStateがRunningで、ListenerStateがListeningとなっており、どちらも緑色だったら、サービスが動いているとみなして良いでしょう。

files

 

音や動画などの再生のなめらかさなど、メディア機能を重視・・・Splashtop

Splashtop

 

Splashtopは特に、DVDなどの動画ファイルやYoutube再生が快適な遠隔操作環境です。。

iPhoneやAndroidなどのスマホからでもアクセス可能です。

無料版では、ホストとクライアントが同一LAN上にある必要ありますが、月100円程度の利用料金で、インターネットから自宅や会社のパソコンに接続して、操作することも可能になります。

無料版だと、キーボード操作が少し癖がありますが、それでも、メディア再生のスムーズさは、RDP Wrapより格段に快適かと思います。

Splashtop

 

導入方法

操作される側のPCに「Splashtop streamer」、操作する側のクライアントに「Sllashtop Personal」をインストールします。

このページから両方がダウンロードできます。

途中で無料のユーザ登録が必要になります。

http://www2.splashtop.com/ja/download

金庸の新旧「射鵰英雄伝」の無料動画配信・DVD情報

$
0
0

射鵰英雄伝

 

ついに金庸の名作武侠時代劇「射鵰英雄伝」<新版>が動画配信サービスU-Nextに登場しましたね~。

全50話の全話が「見放題」となっています。ということは、U-Nextに契約すれば、いつでも好きな時に「射鵰英雄伝」をみれるということ。

さらに、U-Nextは31日間の無料お試し期間がありますから、その間に全部見てしまえば、無料で日本語字幕の射鵰英雄伝を楽しめるということになりますね。

最近、TVや配信サービスでも中国のドラマを目にすることが多くなってきました。

今まではケーブルテレビかDVDで見るのがメインだったので、ずいぶんと手軽に視聴できるようになってきましたよね。

 

 

さて、このドラマは2008年の新版となっています。

フー・ゴー(胡歌)が主人公の郭靖(かく せい)を演じています。フー・ゴーといえば、このドラマの撮影中に交通事故にあい、俳優生命を絶たれるくらいの顔面のけがをしながらも、復活したことで話題になりました。以前の世界が仰天ニュースでも取り上げられていましたね。

また、ヒロインの黄蓉(こう・よう)を演じるのは『蘭陵王』のアリエル・リン。

笑顔がとってもキュートな女優さんです。

 

 

 

なお、「射鵰英雄伝」は金庸の小説の中でも最も人気のある作品の一つで、今までに何度も映画化、ドラマ化されています。

最近では、2002年の 李亞鵬(リー・ヤーポン)版が日本のケーブルテレビで放映され、一大武侠ブームを巻き起こしました。

かくいう私も、この作品で初めて武侠物に触れ、すっかりファンになってしまったひとりです。

最近武侠物や華流ドラマに興味を持った方は、是非、見てみてください!

 

 

サクラエディタでのマクロの設定方法・使い方

$
0
0

テキストエディタには、マクロを使えるものが数多くあります。

繰り返しの処理をするときには、マクロを使うと、作業がものすごく早くなることも多いので、うまく使いたいですよね。

お気に入りのエディタでのマクロの設定方法や設定場所、定型マクロなどを知っていると、いざというときに便利なので、この記事ではサクラエディタでのマクロの使い方をご紹介します。

 

マクロ概要

いろいろ使えるマクロの記述言語

サクラエディタでは、マクロの記述に様々な言語を使用することができます。また、記述したマクロはファイルに保存しておき、実行時に読み込んで使用します。

サクラエディタは、このマクロ・ファイルの拡張子でマクロの種類と記述されている言語を判断するので、適切な拡張子をつけてファイルを保存しておきましょう。具体的な内容は以下の通り。

 

マクロの種類と拡張子
  • キーマクロ(キーボードマクロ)(拡張子:.mac)・・・キーボードの操作やメニュー操作を記録・保存したり、記述して操作を自動化することが出来る。
  • PPAマクロ(拡張子:.ppa)・・・「Poor-Pascal for Application」の略。Pascalを使用して記述。
  • WSHマクロ(拡張子:.js/.vbs)・・・言語エンジンがあれば、Perl/Python/Rubyなども使用できるが、基本的には、JavaScript(.js)かVBScript(.vbs)で記述することが多い。

 

マクロの作り方・実行方法

マクロ・ファイルを置く場所

作成したマクロ・ファイルは、Wndowsの場合、デフォルトでは「C:\Users\<ユーザ名>\AppData\Roaming\sakura\」に置かれます。

全ユーザ共通でおく場合には、どこかディレクトリを作成して、そこにファイルを置いてもよいでしょう。

image

 

この場所は、メニューの「設定」→「共通設定」→「マクロ」タブで、「マクロ一覧」という項目があり、そこで設定します。

image

 

 

キーマクロの作り方

キーマクロを作るには、録画のように記録させて雛形を作ったほうが簡単です。

まず、適当なテキストファイルを作成し、何か文章を入力して保存してみましょう。

その後、メニューの「ツール」→「キーマクロの記録開始」で、キー操作の記録が開始されますので、文字列置換を行ってみます。

置換が終わったら、再度、メニューの「ツール」→「キーマクロの記録終了&保存」を選択すると、マクロの記録が終わり、その結果を.macファイルに保存することができます。

image

 

このマクロファイルを「test.mac」という名前で保存したとしましょう。

 

マクロの実行のさせ方

保存したマクロ・ファイルは、メニューの「ツール」→「名前を指定してマクロ実行」から、ファイル指定で実行させることができます。

毎回、上記のように指定しても良いですが、特に頻繁に使うマクロは、特定のキーに割り当てておくと、便利です。

メニューの「設定」→「共通設定」→「マクロ」タブで名前とファイルを設定しましょう。

 

JavaScriptでのWSHマクロの作り方

次に、簡単なWSHマクロを作ってみましょう。サンプルはエディタで選択している文字列を、HTMLリンク形式に変換するマクロです。

「replace_for_link.js」という名前でファイルを作り、以下の記述を行います。

//エディタで選択した文字列を取得
var text = Editor.GetSelectedString(0);
// 変換後のテキストを出力
if ( text !== '' ) Editor.InsText('

‘ + text + ‘

');

記述後、保存したら「C:\Users\<ユーザ名>\AppData\Roaming\sakura\」に置いておくと、実行できますよね。


ExcelやVBAマクロからPython関数を利用したり、Pythonから操作する方法のまとめ

$
0
0

ExcelでVBAを作って処理を行ったり、逆にJavaなどのほかのアプリからエクセルをオートメーション操作することは、作業の効率化のために良くやりますが、エクセル標準の関数だけではなくて、 自作の関数だったり、オープンソースのライブラリの関数を呼べたら便利ですよね。

最近はPythonを使うことも多いので、エクセルのマクロの中からPython関数や機械学習のライブラリ、Rの統計関数など呼びたいと思って調査したときのメモです。

あと、使い方としては、エクセルを設定シート兼GUIに利用して、エクセルボタンからPythonで作ったWebサービス呼び出しの関数をCallして、取得した結果をまたエクセルの表に出来たら便利だなーとも思って。

各アプリの具体的な使い方は、もう少し使い込んでから別記事でご紹介します。

 

エクセルのVBAマクロからpythonを呼ぶ

PyXLL

image

 

この目的のためには、「PyXll」が良いと思います。 ExcelのVBAとかからPythonの関数を呼んだりする用途が得意。しかも高速です。

エクセルのセルに数式としてPython関数を記述することもできるのは、利用価値が高いと思う。 複数のバージョンのPythonがある環境下でも設定ファイルをいじることでちゃんと動くのも良いですね。

※有料となっていました。残念。30日は評価版は使えます。となると、関数として使うには「xlwings」か「ExcelPython」ですかね。

 

pythonからエクセルを読み書きしたり、グラフ作ったりする

xlwings

image

 

このアプリは、Pythonからエクセルの操作を行ったり、データをセルに埋め込んでエクセルグラフを作ったりするのが得意です。 この機能はWindowsでもMacでも動きます。

逆のこと(UDFs)も出来るけど、PyXllより遅い感じかな。このUDFs(USER DEFINED FUNCTIONS)の機能はWindowsオンリー。

 

上記以外でPythonとエクセルを連携するソフト

Pythonも人気の言語ですし、エクセルも企業内では多く使われているので、目的によっていろいろなソフトがあります。 上記2つが使いやすそうでしたが、他にも以下のようなプロジェクトあるので、メモしておきます。

 

DataNitro

結構、米国の大きな企業内でも使われており、良さそううだが、フリーではなくなってしまった。 個人で利用するのは、今となってはちょっとなーという感じ。

 

Pyvot

これもPythonからエクセルを操作するのが得意。

 

ExcelPython

こちらは、エクセルの中でPython関数を呼ぶ

MavensMateとSublimeText3でサクサクSalesforce開発環境を構築!まとめ

$
0
0

今まで、Salesforceの開発環境といえば、DeveloperConsoleか、EclipseのForceIDEを使ってきました。

どちらもいいツールなのですが、前者は

  1. ・Webベースなので、動きがまったりしている。
  2. ・ネットワークなどの調子により、書いたソースが保存されず、無駄になったことも何度か。。。

など、Webでの開発環境であるがゆえの使いづらさがあったり、後者は

  1. ・Eclipseという統合開発環境ゆえ、開くまでに時間がかかる。
  2. ・ソースのSFDCへの反映がどうもうまくいかない場合がある。
  3. ・Apexログの確認やデバッグがやりにくい。

などの不満がありました。

SublimeText3

 

最近、「SublimeText3というすばらしいテキストエディタがあって、Salesforceの開発環境も構築できるよ。しかも軽いから快適!」ということを教えてもらったので、早速試してみました。

 

開発環境の全体構成

最初に、開発環境の全体的な構造を理解しておきましょう。

この仕組みには2つのアプリのインストールと設定が必要です。MavensMate(MavensMate-Desktop)SublimeText3です。

SublimeText3は基本的にはテキストエディタですので、ソースの編集などに使用します。SublimeText3のコード補完機能や便利なマクロが利用できるので、快適なコーディング環境が用意できるというわけですね。

MavensMateはSublimeText3とSalesforceの中に位置し、両者をつなぐプロキシ・サーバのような役割を担います。

SublimeText3から要求やコマンドを投げると、代わりにSFDCにログインしてメタデータ情報を取得したり、データを更新したりします。

 

開発環境の構築手順

MavensMate-Desktopのインストール

まずはMavensMate-Desktopをこのページのリリースページからダウンロードしてインストールします。特に難しいところは無いと思います。

SublimeText3から利用するときには起動させておかないと、SFDCに接続できませんので、そこは注意しましょう。

 

proxyの中の環境からアクセスするには

環境によってはProxyServerを経由してSFDCにアクセスする必要があります。そんなときには、MavensMateのグローバル設定でプロキシを設定しておきます。

下記の矢印のように、「歯車」アイコンをクリックして設定を表示し、「HTTP PROXY (MM_HTTP_PROXY)」と「HTTPS PROXY (MM_HTTPS_PROXY)」にサーバを指定します。

どちらもhttpであることに気をつけてください。(環境によるでしょうが。)

MM_HTTPS_PROXY

 

SublimeText3のインストールと設定

次にSublimeText3をここからダウンロードしてインストールします。

その後、SublimeText3を起動して、いくつか設定を行います。

まずは、パッケージコントロールの仕組みを導入しましょう。開発環境は「MavensMate」というパッケージを使うので、それをインストールするためです。

 

Package Control のインストールは「View > Show Console」でコンソールを開き、このページの赤枠のテキストをコピーして、コンソールに貼り付け、Enterを押します。

コンソール

 

下記の図の矢印のように、PreferanceにPackageControlがあればインストールされているはずです。

PackageControl

 

OKでしたたら、「MavensMate」パッケージをSublimeText3に追加します。

Preferance->PackageControlを選択し、「Insta..」と入力して表示される「Install Packages」を選択します。

すると、パッケージ管理の状態になるので、ここで「Mavens..」と入力して表示される「MavensMate」をインストールします。(MavensMate-Desktopは起動しておかないとエラーになるので、きをつけてください。)

こんな感じでメニューに「MavensMate」が表示されていれば成功です。後は、「Create Project」で新しいSFDCプロジェクトを作って開発を開始しましょう。

MavensMate

 

具体的な開発過程やTipsはまた別の記事で。

 

よくあるエラーと対処法

開発環境構築時に良く遭遇するエラーとその対処法をまとめておきます。まぁ、「良く」というか、私が遭遇したエラーですが、、、。

 

MavensMate-Desktopが起動してない

[ERROR]: Could not contact local MavensMate server, please ensure MavensMate-app is installed and running.

このエラーはMavensMate-Desktopが起動していないためにおきます。直訳すると「ローカルのMavensMateサーバに接続せきません。インストールされて動いているか確認してください。」ということなので。。

 

SublimeText3.exeへのパスが間違っている

[ERROR]: result.resolve is not a function

または

[ERROR]: Could not open project. mm_sublime_text_executable_location path does not exist, please check your user plugin settings.

のエラーが出る場合は、SublimeText3.exeのパスを疑ってみましょう。お互いにそのパスを知らないと、コマンドの起動とかができないために上記のようなエラーが出ます。

設定場所は、

MavensMate側はグローバルセッティングの「SUBLIME TEXT LOCATION (MM_SUBL_LOCATION)」の項目

SublimeText3側は、「MavensMate」->「Setting」->「User Plugin Settings」から開いた設定ファイルの出「mm_sublime_text_executable_location」の項目です。

ここに、SublimeText3.exeへの絶対パスを指定すればOKです。

Eclipseで、Mavenに対応したWebアプリプロジェクトを作成するときの手順

$
0
0

Eclipseで、Mavenプロジェクトに対応したWebアプリ(webapp)プロジェクトを作成するときの手順をまとめておきます。

というのも、作成までは簡単ですが、実際に使うとなると細かい設定が必要なので、一通りエラーなく動く状態にするまでの一連の手順があった方が個人的に便利なので。

 

Mavenタイプのプロジェクト作成

まずは、とにかくMavenタイプのプロジェクトを作成します。

image

 

上記でプロジェクト名とその配置場所を設定します。

デフォルトのworkspaceの場所でOKでしょう。

image

 

次にArchtypeを設定します。(上記左の図)。maven-archetype-webapp でフィルタしましょう。

archetypeをネットに探しに行くので、少し表示されるまで時間がかかる場合があります。

右下にRetrieving archetypes…. と出ている間は、待ちましょう

その後、名前空間が一意になるようにArtifact Id(とGroup Id)を設定します。(上記右の図)。

最後に「Finish」ボタンを押して、Maven対応のプロジェクトの出来上がりです。

 

コンパイルエラーの修正

作った最初は、以下のエラーが出て、プロジェクトのコンパイルエラーになっているので、修正しておきます。

 

The superclass "javax.servlet.http.HttpServlet" 
was not found on the Java Build Path	
上記のエラーを解消するには、 Pom.xmlに

 


	javax.servlet
	javax.servlet-api
	3.1.0

を追加します。以下の図が、追加したイメージです。

image

 

エラーの赤い印が消えるので、ここでビルドしておきます。

Maven形式のプロジェクトのビルドなので、プロジェクトを右クリックして「MavenBuild…」を選びます。

ビルド時に設定を行いたいので、「…」が付いている下の方を選択しましょう。

image

 

すると、以下のようなダイアログが開きます。

ここでは、ターゲットは「clean install」にして、きれいに最初からインストールすることにして、オプションで「Skip Tests」にチェックしてテストをスキップするのがミソです。

image

 

そして、ダイアログ下の「Run」ボタンを押すとビルドされます。

「BUILD SUCCESS」が表示されると成功です。

 

javaソース関連のフォルダの作成

もうひとつ、重要な修正があります。

ビルドパスの設定を見ると、Sourceフォルダがmissingで見つからないため、エラーになっています。

Webプロジェクトでソースを作成してもコンパイルされなかったり、ビルドに失敗したりして反映されないのはここの設定が一因なので、修正しておきます。

image

 

プロジェクトのディレクトリ配下のsrc\mainディレクトリに行くと、下記の2つのディレクトリしかないので、「java」ディレクトリを新規に作成します。

また、src配下に「test/java」ディレクトリも作成しておきます

その後、「F5」か何かでプロジェクトをリフレッシュして、ビルドパスのエラーがなくなっていればOKです。

 

ひととおり修正完了。稼動確認!

では、Tomcatを起動して、Webアプリが動くか、確認しましょう。

「Run As」->「Run on Server」でTomcatを起動させて、 http://localhost:8080/SampleSite/ にアクセスにて、以下のようになれば、成功です。(Run on Serverだと、自動でEclipse内臓のブラウザが開くと思います。)

image

 

SalesforceのProcessBuilderからApexクラスを呼ぶためのクラス定義とその設定

$
0
0

Salesforceのプロセスビルダーはフロー図を描くようにビジネスフローを定義でき、

あるオブジェクトの作成時や更新時の項目の値などをもとに、他の項目の値を更新したり出来ます。

使いこなすと非常に便利な機能で、ワークフローよりもメンテナンスも楽に設計することも可能なのではないかと思います。

また、オブジェクトの項目設定だけではなく、メールアクションを呼んだり、Apexクラスを呼んだりすることも出来るので、複数のオブジェクトを更新したり、外部のWebサービスを呼んだりなど、もう少し複雑なビジネスロジックを処理したい場合も重宝します。

ただ、最初にオブジェクトの種類を決めて、そのオブジェクトの項目値によって条件分岐等を行うので、複数の種類のオブジェクトが作成・更新されたときに、汎用的にログを書いたりするのは難しいかと思っていましたが、引数の渡し方も結構フレキシブルにできる方法がありましたので、ご紹介しておきます。

 

ProcessBuilderからApexクラスを呼ぶためのクラスとその設定

Apexクラスの記述方法

はじめに、呼ばれる側のApexクラスを作成します。

InvocableLoggerというクラスにします。

内容は、デバッグログを吐くだけのクラスですが、ログ出力の部分を変更して、ビジネスロジックを入れれば、様々なことができます。

global class InvocableLogger {
             
        global class LoggingRequest {
        
               @InvocableVariable(required=true)
               public ID objId;
               
               @InvocableVariable
               public String strComment;
       
       }     
       
       
       @InvocableMethod(label='Called Method for Logging')
       global static void createLog(List<LoggingRequest> requests){
       
           for(LoggingRequest requestObj:requests){        

               System.debug('requestObj.objId@@:'+requestObj.objId);          
               System.debug('requestObj.strComment@@:'+requestObj.strComment);
               //Do something for business logic
               
           }
             
       }
      
}

簡単に解説すると、

「@InvocableMethod」のアノーテーションのついたメソッドを、プロセスビルダーの中から呼ぶことができます。そのときの名称(見え方)は「label=」のところに記述します。

今回の場合は、「Called Method for Logging」ですね。

次のここがミソですが、引数のリストのクラスをグローバルで定義します。

「LoggingRequest」としました。なお、この引数の変数に「@InvocableVariable」アノーテーションをつけることで、引数として、プロセスビルダーの中で指定することができます。

今回は、「objId」と「strComment」を定義しましたが、好きなだけ増やすことも出来ますので、ご自由に。

 

上記クラスを呼び出すProcessBuilderの作成

では、上で作成したApexクラスを呼びだすプロセスビルダーを作成してみましょう。

はじめに行うのは、プロセス名と開始のタイミングの指定ですね。

タイミングの指定

 

それが終わったら、プロセスを開始する対象のオブジェクトを指定します。

今回は、「リード」オブジェクトにしました。

オブジェクトを指定

 

それが終わったら、発動の条件を設定します。

今回は、「メールアドレス」がNullで無かった場合 と指定しています。

発動の条件を設定

 

いよいよ、Apexの指定です。Apexクラスのプルダウンには「@InvocableMethod」のアノーテーションがついたメソッドが表示されますので、「createLog」メソッド(見た目は「Called Method for Logging」)を指定します。

すると、自動で、「@InvocableVariable」の必須項目である「objId」が表示されますので、値を設定します。

もうひとつの「strComment」は必須ではないですが、ログに設定するコメント文言を設定したいので、「行を追加」で追加して、任意の文字列を設定しておきます。

引数設定

 

以上で、設定は終了です。右上の「有効化」ボタンを押して、有効化し、リードオジェクトを作成して、メールアドレスがNullで無いように設定します。

これで、設定したプロセスが発動し、Apexが呼ばれることになります。

引数設定2

 

すると、デバッグログを確認すると、値が渡ってきていることが分かりますね。

debaglog

 

Salesforce移行ツール(Migration Tool)の最初の一歩

$
0
0

How to use Salesforce Migration Tool for the first time.

Salesforceでの組織間、本番⇔サンドボックス間のリリース、デプロイはMigration Tool (移行ツール)を使うと便利です。

ChangeSetでも可能な部分はありますが、リソースの管理が煩雑になってしまいがち。 その点、Migration Tool を使うと、リリース対象のリソースをファイルに記述しておけるので、リリース漏れも少なく、リソース管理も厳密に行えます。

この記事では、はじめてMigration Tool を使う人のために、その使い方をお伝えします。

 

Migration Toolの概要

Migration Toolは、Antで動く移行ツールです。Salesforce社がメンテしているので、公式ツールという位置づけですね。

Salesforceでは、本番へのリリースやサンドボックス間のデプロイを行うのに、チェンジセット(ChangeSet)を使ったりしますが、それをコマンドラインで行うツールだと思えば大丈夫でしょう。 コマンドラインで実行できるということは、バッチ化して、定刻実行したりも可能だということなので、使いようによっては便利ですよね。

Migration Tool はMetadataAPIを使ってデプロイ対象のリソースを取得したり、デプロイしたりするので、MetadataAPIと非常に密接な関係があります。 逆に言うと、MetadataAPIを解析すれば、いろんなことができるということなのですが、それはまた、別の機会に。

 

Migration Toolのインストールとセットアップ

最初にAntのインストール

Migration ToolはJavaのAntで動きますので、実行するためにはAntをセットアップしておく必要があります。

ここから、Antをダウンロードして解凍しておきます。

必要に応じて、ANT_HOMEやJAVA_HOME、PATHなどの環境変数を設定します。

その後、コマンドプロンプトで、「ant -version」を打って、下記のようにバージョン情報が表示されれば、インストール成功です。

ant version

 

いよいよMigration Toolのインストール

では次に、Migration Toolをインストールします。

ここからマイグレーションツールをダウンロードしましょう。

今回は、「 Winter ’17 release .zip (version 38.0)」をダウンロードしました。

インストールする手順はここのページに書いていますが、

手順を追うと、

ファイルを解凍したら、「ant-salesforce.jar」のファイルがあることが分かります。

これがAntタスクの定義のjarなので、これをAntディレクトリの「lib」配下にコピーします。 古いバージョンの「ant-salesforce.jar」がある場合は置き換えてください。

 

最初のプロジェクトの作成

解凍したフォルダの下に「sample」フォルダがあり、サンプルがあるので、まずはこれをコピーしてシンプルなマイグレーション用のプロジェクトを動かしてみましょう。

今回は「mytest」という名前で「sample」フォルダをコピーしました。「mytest」配下に、以下のファイルがあると思います。

build.properties・・・プロジェクトで使用する変数を定義するファイル

build.xml・・・実際のタスク(デプロイや情報取得など)を定義するファイル

まずは、接続情報を確認・設定するので「build.properties」を開きます。

sf.serverurl = https://login.salesforce.com

という設定がありますが、この設定は本番用なので、Sandboxなら、https://test.salesforce.com に変更しましょう。

次に、接続ユーザとパスワードの設定を行います。

sf.username = <Insert your Salesforce username here>
sf.password = <Insert your Salesforce password here>

上記のところに、ユーザ名とパスワードを設定します。

 

プロキシーの設定

もし、開発環境がプロキシー・サーバの背後だったら、その設定を以下のプロパティで追加します。

proxy.host = <Insert your Proxy host server here>
proxy.port = <Insert your Proxy port here>

設定を行ったら、その設定を使うための設定を「build.xml」の最後に追記します。

あとは、この設定を各Antタスクの

depends=”proxy”

で使うように設定します。(下の例に出てくるので参考にしてください。)

 

具体的なタスクを作ってみる

では、シンプルなタスクをコピーして、自分のタスクとして動かしてみましょう。

「retrieveUnpackaged」というタスクがシンプルにメタデータを取ってくるタスクなので、これを改造してみることにします。build.xmlの中を見ると、以下のような記述があるはずです。

これをコピーして

に変更してみました。

次に、unpackagedディレクトリに入っているpackage.xml をコピーして、「myproject」フォルダを作って、そこに入れます。

なお、上記のxmlのタスク設定に出てくるキーワードの意味は、

target name・・・このタスクの名前です。「ant 」で実行します。

depends・・・このタスクが依存するタスクを指定します。この例では、プロキシー・サーバを経由してSFDCに接続するので、「build.xml」の最後に追記した「proxy」を設定します。

retrieveTarget・・・ここには、retrieveしたリソースを置くフォルダを指定します。ここに指定したフォルダにメタデータがダウンロードされます。

unpackaged・・・ここに指定したxmlファイルを読み込んで、リソースの取得を行います。

では、

作成したmytestフォルダにコマンドプロンプトで移動して、プロンプトから「ant retrieveMyProject」という風にタスク名を指定して起動しましょう。

「ant retrieveMyProject -f build.xml」のように「build.xml」ファイルを指定しても実行可能です。環境を切り替えたりする場合に使えそうですね。

Renta

 

こんな感じにBUILD SUCCESSFUL になったら成功です。

「retrieveMyProject」ディレクトリにpackage.xmlで指定した内容のファイルがダウンロードされているはずです。

次回は、このシンプルなタスクを元に、もっと実践的なタスクを実行していくことにしましょう。

Viewing all 247 articles
Browse latest View live