<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>株式会社アプリ工房</title>
	<atom:link href="https://www.app-studio.jp/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.app-studio.jp</link>
	<description>Webサービス開発/Mobile(iOS,Android)開発ならお任せください</description>
	<lastBuildDate>Mon, 05 Jan 2026 09:54:33 +0000</lastBuildDate>
	<language>ja</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.9.40</generator>
	<item>
		<title>錬金術はじめました(ios版リリース)</title>
		<link>https://www.app-studio.jp/2015/01/27/344/</link>
		<comments>https://www.app-studio.jp/2015/01/27/344/#comments</comments>
		<pubDate>Tue, 27 Jan 2015 08:47:30 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[News]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=344</guid>
		<description><![CDATA[Androidで先行してリリースされていた「錬金術はじめました」のiOS版がリリースされました。 バランスも少し調整されて遊びやすくなっているので、まだやっていない人はぜひ遊んでみてもらえるとうれしいです。]]></description>
				<content:encoded><![CDATA[<p>Androidで先行してリリースされていた「<a title="錬金術はじめました" href="http://www.app-studio.jp/apps/alchemy/">錬金術はじめました</a>」のiOS版がリリースされました。<br />
バランスも少し調整されて遊びやすくなっているので、まだやっていない人はぜひ遊んでみてもらえるとうれしいです。</p>
<p><a href="https://itunes.apple.com/jp/app/id921148094"><img class="alignnone size-full wp-image-175" src="http://www.app-studio.jp/wp-content/uploads/2014/09/22009deec09afe12f95eabc358337a92.png" alt="alchemy_icon" width="100" height="100" /></a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2015/01/27/344/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Soomla-Storeライブラリを cocos2d-x v2.2.6に導入する</title>
		<link>https://www.app-studio.jp/2014/12/22/316/</link>
		<comments>https://www.app-studio.jp/2014/12/22/316/#comments</comments>
		<pubDate>Mon, 22 Dec 2014 02:08:09 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[ゲーム開発]]></category>
		<category><![CDATA[開発]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=316</guid>
		<description><![CDATA[http://know.soom.la/cocos2dx/store/store_gettingstarted/に説明が書いてあるが、cocos2d-x v3.*系の対応に伴いv2.*系はブランチが別になったようなので、 ...]]></description>
				<content:encoded><![CDATA[<p><a href="http://know.soom.la/cocos2dx/store/store_gettingstarted/" target="_blank">http://know.soom.la/cocos2dx/store/store_gettingstarted/</a>に説明が書いてあるが、cocos2d-x v3.*系の対応に伴いv2.*系はブランチが別になったようなので、git-hubのドキュメントを参照した。</p>
<p><a title="https://github.com/soomla/cocos2dx-store/tree/cocos2dx-v2" href="https://github.com/soomla/cocos2dx-store/tree/cocos2dx-v2" target="_blank">https://github.com/soomla/cocos2dx-store/tree/cocos2dx-v2</a></p>
<p>ブランチ切り替えは、「extensions/soomla-cocos2dx-core」と「extensions/cocos2dx-store」それぞれで「 git checkout cocos2dx-v2 」</p>
<p>また、cocos2d-x v2.2.6だと、cocos2d-xが64bit対応しているので、各ファイル「Cocos2dXCore.xcodeproj」と「Cocos2dXStore.xcodeproj」の「Build Settings」-&gt; 「Valid Architectures」を見直す。<br />
ちなみに、自分の環境では、こんな感じ。</p>
<p><a href="http://www.app-studio.jp/wp-content/uploads/2014/12/soomla-core.png"><img class="alignnone wp-image-317 size-full" src="http://www.app-studio.jp/wp-content/uploads/2014/12/soomla-core.png" alt="soomla-core" width="840" height="256" /></a></p>
<p><a href="http://www.app-studio.jp/wp-content/uploads/2014/12/soomla-store.png"><img class="alignnone wp-image-318 size-full" src="http://www.app-studio.jp/wp-content/uploads/2014/12/soomla-store.png" alt="soomla-store" width="841" height="342" /></a></p>
<p>もし、link時に「Linker error &#8220;_OBJC_CLASS_$****&#8221;, referenced from: …」とか出てきた場合は、objectファイルに該当architectureの物が含まれていない可能性があるので、「Build Active Architecture Only」を「No」に設定すると恐らく通るはず。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2014/12/22/316/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>zncで複数サーバーを設定</title>
		<link>https://www.app-studio.jp/2014/01/28/123/</link>
		<comments>https://www.app-studio.jp/2014/01/28/123/#comments</comments>
		<pubDate>Tue, 28 Jan 2014 02:01:27 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[Server]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[znc]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=123</guid>
		<description><![CDATA[IRC Proxyにzncを利用しているのですが、複数サーバーへ接続しないと行けない状況になったのでその時の設定めも。 設定に関しては、以下を参考にやってみた。 http://blog.handlena.me/entry ...]]></description>
				<content:encoded><![CDATA[<p>IRC Proxyにzncを利用しているのですが、複数サーバーへ接続しないと行けない状況になったのでその時の設定めも。</p>
<p>設定に関しては、以下を参考にやってみた。</p>
<ul>
<li><a href="http://blog.handlena.me/entry/2013/01/20/185717" target="_blank">http://blog.handlena.me/entry/2013/01/20/185717</a></li>
<li><a href="http://gongo.hatenablog.com/entry/2013/11/25/083056" target="_blank">http://gongo.hatenablog.com/entry/2013/11/25/083056</a></li>
</ul>
<p>この後、分からなかったのが、設定したNetworkをどうやって確認するのか？と該当Networkへチャンネル作ったりするのはどうやるのか？という事だったんですが、普通にzncのコマンドを使ってやるらしい。</p>
<ul>
<li>Network設定の確認
<ul>
<li>/msg *status ListNetwork</li>
</ul>
</li>
<li>設定したNetworkへの切り替え
<ul>
<li>/msg *status JumpNetwork (&lt;Network ***&gt; で設定した***部分)</li>
</ul>
</li>
</ul>
<p>以下コマンド確認時参考にしたサイト。</p>
<ul>
<li><a href="http://kawamuray.hatenablog.com/entry/2013/08/12/213005" target="_blank">http://kawamuray.hatenablog.com/entry/2013/08/12/213005</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2014/01/28/123/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>アプリのリンクを作成する</title>
		<link>https://www.app-studio.jp/2013/11/24/102/</link>
		<comments>https://www.app-studio.jp/2013/11/24/102/#comments</comments>
		<pubDate>Sat, 23 Nov 2013 16:17:27 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[開発]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=102</guid>
		<description><![CDATA[AppStoreやGoogle Playのリンクをサイトの載せる際に、それぞれリンクを作るのに使うサイト。 AppStore https://linkmaker.itunes.apple.com/jp/ Google P ...]]></description>
				<content:encoded><![CDATA[<p>AppStoreやGoogle Playのリンクをサイトの載せる際に、それぞれリンクを作るのに使うサイト。</p>
<h6>AppStore</h6>
<p><a href="https://linkmaker.itunes.apple.com/jp/">https://linkmaker.itunes.apple.com/jp/</a></p>
<h6>Google Play</h6>
<p><a href="http://developer.android.com/intl/ja/distribute/googleplay/promote/badges.html">http://developer.android.com/intl/ja/distribute/googleplay/promote/badges.html</a></p>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2013/11/24/102/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cocos2d-xでandroid端末で音量ボタンでメディア音量を調整するには</title>
		<link>https://www.app-studio.jp/2013/11/22/90/</link>
		<comments>https://www.app-studio.jp/2013/11/22/90/#comments</comments>
		<pubDate>Thu, 21 Nov 2013 15:27:53 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[cocos2d-x]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=90</guid>
		<description><![CDATA[Android側のソースにsetVolumeControlStreamを書いてあればOK。]]></description>
				<content:encoded><![CDATA[<p>Android側のソースにsetVolumeControlStreamを書いてあればOK。</p>
<pre class="brush: java; highlight: [11]; title: ; notranslate">
package hoge;
 
import org.cocos2dx.lib.Cocos2dxActivity;
import android.os.Bundle;
import android.media.AudioManager;
 
public class Hoge extends Cocos2dxActivity {
 
    protected void onCreate(Bundle savedInstanceState){
        super.onCreate(savedInstanceState);
        setVolumeControlStream(AudioManager.STREAM_MUSIC);
    }
    
    static {
         System.loadLibrary(&quot;cocos2dcpp&quot;);
    }
}
</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2013/11/22/90/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mac OS X MavericksにしてAndroid SDK Managerのxmlパースが失敗した場合</title>
		<link>https://www.app-studio.jp/2013/11/20/85/</link>
		<comments>https://www.app-studio.jp/2013/11/20/85/#comments</comments>
		<pubDate>Wed, 20 Nov 2013 13:06:42 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[開発]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=85</guid>
		<description><![CDATA[開発用のMacをMavericksにアップデートした際に、Android SDK Manaerで更新出来なくなった。 こんな感じのエラーが出たので調べたところ、javaのバージョンが変わってssl関係でエラーが出てたみた ...]]></description>
				<content:encoded><![CDATA[<p>開発用のMacをMavericksにアップデートした際に、Android SDK Manaerで更新出来なくなった。</p>
<pre class="brush: plain; title: ; notranslate">
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
Fetched Add-ons List successfully
Fetching URL: https://dl-ssl.google.com/android/repository/repository-8.xml
Done loading packages.
Fetching https://dl-ssl.google.com/android/repository/addons_list-2.xml
Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-2.xml, reason: peer not authenticated
Fetched Add-ons List successfully
Fetching URL: https://dl-ssl.google.com/android/repository/repository-8.xml
Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-8.xml, reason: SSLPeerUnverified peer not authenticated
Done loading packages.
</pre>
<p>こんな感じのエラーが出たので調べたところ、javaのバージョンが変わってssl関係でエラーが出てたみたい。<br />
なので、SSLをオフにして通信する設定をして解決した。</p>
<p>具体的には&#8221;~/.android/androidtool.cfg&#8221;に以下の設定を書くだけ。</p>
<pre class="brush: plain; title: ; notranslate">
sdkman.force.http=true
</pre>
<p>とりあえずこれでアップデートできた。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2013/11/20/85/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cocos2d-xにScoreCenterを入れてみる</title>
		<link>https://www.app-studio.jp/2013/11/19/70/</link>
		<comments>https://www.app-studio.jp/2013/11/19/70/#comments</comments>
		<pubDate>Tue, 19 Nov 2013 11:38:25 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[android]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[cocos2d-x]]></category>
		<category><![CDATA[ScoreCenter]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=70</guid>
		<description><![CDATA[cocos2d-xにScoreCenterを入れた時のメモ。 使い方的にはc++のクラスからjniで呼び出す形で実装した。 javaのメソッドに関しては面倒だったんで全部staticにした。 手順など 基本的にはSDKに ...]]></description>
				<content:encoded><![CDATA[<p>cocos2d-xに<a title="ScoreCenter" href="http://scorecenter.jp/" target="_blank">ScoreCenter</a>を入れた時のメモ。</p>
<p>使い方的にはc++のクラスからjniで呼び出す形で実装した。<br />
javaのメソッドに関しては面倒だったんで全部staticにした。</p>
<h5>手順など</h5>
<p>基本的にはSDKにDocumentが添付されているので、それに従っていけばOKでした。</p>
<p>1. proj.android/AndroidManifest.xmlを設定<br />
2. proj.android/libs/にSDKのjarファイルを置く<br />
3. c++側のコードを書く。(以下サンプル)</p>
<pre class="brush: cpp; title: ScoreCenter.h; notranslate">
#include &quot;cocos2d.h&quot;

USING_NS_CC;

class ScoreCenter : public CCObject {
public:
	static bool isAvailable();
	static void login();
	static void postScore(const char* key, const char* score);
	static void showRanking(const char* key);
};

</pre>
<pre class="brush: cpp; title: ScoreCenter.cpp; notranslate">
#include &quot;cocos2d.h&quot;

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
USING_NS_CC;

#include &quot;ScoreCenter.h&quot;
#include &lt;jni.h&gt;
#include &quot;jni/JniHelper.h&quot;

#define CLASS_NAME &quot;hoge/huga/SC&quot;

bool ScoreCenter::isAvailable() {
    JniMethodInfo t;
    if (JniHelper::getStaticMethodInfo(t, CLASS_NAME,
										&quot;isAvailable&quot;, &quot;()Z&quot;)) {
        jboolean result = t.env-&gt;CallStaticBooleanMethod(t.classID, t.methodID);
        if (result == JNI_TRUE) {
            return true;
            
        } else {
            return false;
        }
    }
    return false;
}

void ScoreCenter::login() {
    if (!isAvailable()) {
        return;
    }
    
    JniMethodInfo t;
    if (JniHelper::getStaticMethodInfo(t, CLASS_NAME,
										&quot;login&quot;, &quot;()V&quot;)) {
        t.env-&gt;CallStaticVoidMethod(t.classID, t.methodID);
        t.env-&gt;DeleteLocalRef(t.classID);
    }
}

void ScoreCenter::postScore(const char* key, const char* score) {
    if (!isAvailable()) {
        return;
    }

    JniMethodInfo t;
    if (JniHelper::getStaticMethodInfo(t, CLASS_NAME,
                                       &quot;postScore&quot;, &quot;(Ljava/lang/String;Ljava/lang/String;)V&quot;)) {
        jstring jkey   = t.env-&gt;NewStringUTF(key);
        jstring jscore = t.env-&gt;NewStringUTF(score);
        t.env-&gt;CallStaticVoidMethod(t.classID, t.methodID, jkey, jscore);
        t.env-&gt;DeleteLocalRef(jkey);
        t.env-&gt;DeleteLocalRef(jscore);
        t.env-&gt;DeleteLocalRef(t.classID);
    }
}

void ScoreCenter::showRanking(const char* key) {
    if (!isAvailable()) {
        return;
    }

    JniMethodInfo t;
    if (JniHelper::getStaticMethodInfo(t, CLASS_NAME,
                                       &quot;showRanking&quot;, &quot;(Ljava/lang/String;)V&quot;)) {
        jstring jkey = t.env-&gt;NewStringUTF(key);
        t.env-&gt;CallStaticVoidMethod(t.classID, t.methodID, jkey);
        t.env-&gt;DeleteLocalRef(jkey);
        t.env-&gt;DeleteLocalRef(t.classID);
    }
}

#endif
</pre>
<p>4. java側のコードを書く。(以下サンプル)</p>
<pre class="brush: java; title: hoge/huga/SC.java; notranslate">
package hoge.huga;

import android.app.Activity;
import java.lang.String;
import android.content.Context;
import org.cocos2dx.lib.Cocos2dxActivity;
import **********ScoreCenter; (※ここはDocument読んで対応してください)

public class SC {
    private static ScoreCenter instance = null;

    public static boolean isAvailable() {
        return (android.os.Build.VERSION.SDK_INT &gt;= 7); 
    }   

    private static void init() {
        if (SC.instance == null) {
            final Context context = Cocos2dxActivity.getContext();
            Activity activity = (Activity)context;
            activity.runOnUiThread(new Runnable() {
                public void run() {
                    SC.instance = ScoreCenter.getInstance();
                    SC.instance.initialize(context.getApplicationContext());
                    SC.instance.hello();
                }   
            }); 
        }   
    }   
    
    public static void login() {
        SC.init();
    }   
    
    public static void postScore(String key, String score) {
        SC.instance.postScore(key, score);
    }   

    public static void showRanking(final String key) {
        Activity activity = (Activity)Cocos2dxActivity.getContext();
        activity.runOnUiThread(new Runnable() {
            public void run() {
                SC.instance.show(key);
            }   
        }); 
    }   
}
</pre>
<p>こんなかんじ。</p>
<p>ちょっとハマった点として、ScoreCenterのinitialize()呼んだ時か、hello()を呼び出した時にログイン可否チェックが入ってログイン画面が表示されるのかなと思ってたんですが、<br />
show()を呼び出した後にログインして貰わないといけないらしい。<br />
まぁ、ログインする前にpostScoreしても送信NGとなって、ローカルに保存されていて、後からログインした時に送られるようなので問題ないと言えば問題ないですが、出来ればログインチェックのメソッドがあるといいな。</p>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2013/11/19/70/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iOSアプリ申請をする際に見たページやメモなど</title>
		<link>https://www.app-studio.jp/2013/11/07/51/</link>
		<comments>https://www.app-studio.jp/2013/11/07/51/#comments</comments>
		<pubDate>Wed, 06 Nov 2013 15:00:54 +0000</pubDate>
		<dc:creator><![CDATA[katsuji.otsuka]]></dc:creator>
				<category><![CDATA[iOS]]></category>
		<category><![CDATA[開発]]></category>
		<category><![CDATA[iOS申請]]></category>

		<guid isPermaLink="false">http://www.app-studio.jp/?p=51</guid>
		<description><![CDATA[iconや起動画面のサイズやファイル名など http://tande.jp/lab/2012/01/1635 申請方法 http://www.tamurasouko.com/?p=522 icon画像変換にImageMa ...]]></description>
				<content:encoded><![CDATA[<p>iconや起動画面のサイズやファイル名など<br />
<a href="http://tande.jp/lab/2012/01/1635">http://tande.jp/lab/2012/01/1635</a></p>
<p>申請方法<br />
<a href="http://www.tamurasouko.com/?p=522">http://www.tamurasouko.com/?p=522</a></p>
<p>icon画像変換にImageMagickを使ったのですが、その時のコマンドはこんな感じ。</p>
<pre class="brush: bash; title: ; notranslate">
#!/bin/sh
ORG_IMAGE=icon_1024.png
DIST_DIR=Resources
convert -resize 57x57 $ORG_IMAGE $DIST_DIR/Icon.png
convert -resize 114x114 $ORG_IMAGE $DIST_DIR/Icon@2x.png
convert -resize 72x72 $ORG_IMAGE $DIST_DIR/Icon-72.png
convert -resize 144x144 $ORG_IMAGE $DIST_DIR/Icon-72@2x.png
convert -resize 120x120 $ORG_IMAGE $DIST_DIR/Icon-60@2x.png
convert -resize 76x76 $ORG_IMAGE $DIST_DIR/Icon-76.png
convert -resize 152x152 $ORG_IMAGE $DIST_DIR/Icon-76@2x.png
convert -resize 29x29 $ORG_IMAGE $DIST_DIR/Icon-Small.png
convert -resize 58x58 $ORG_IMAGE $DIST_DIR/Icon-Small@2x.png
convert -resize 50x50 $ORG_IMAGE $DIST_DIR/Icon-Small-50.png
convert -resize 100x100 $ORG_IMAGE $DIST_DIR/Icon-Small-50@2x.png
convert -resize 40x40 $ORG_IMAGE $DIST_DIR/Icon-Small-40.png
convert -resize 80x80 $ORG_IMAGE $DIST_DIR/Icon-Small-40@2x.png
</pre>
]]></content:encoded>
			<wfw:commentRss>https://www.app-studio.jp/2013/11/07/51/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- ZenCache is NOT caching this page, because `$_SERVER['REQUEST_URI']` indicates this is a `/feed`; and the configuration of this site says not to cache XML-based feeds. -->