エイバースの中の人

アプリとWEBサービスを作っているABARSのBLOGです。

Unityのシーン変更でメモリを解放する

iPhone5Sと6は、メモリが1GBしかないため、UIの巨大画像がメモリを圧迫し、シーンの遷移で落ちることがあります。

SceneManager.LoadSceneの第二引数にLoadSceneMode.Singleを設定したとしても、シーン移行のタイミングでは、遷移前のシーンと、遷移後のシーンの両方のメモリを専有するようです。

最初は、テクスチャの参照カウントを0にすれば、LoadScene内でも解放されるはずだと期待して、循環参照になりそうなGameObjectにOnDestroyでnullを代入したりしていたのですが、一向に参照カウントが減少せず、仕様だと諦めました。

2シーンの合計となると、半分のメモリしか使用できないため、ゲームのクオリティが落ちてしまいます。この問題を解消するには、空のシーン、俗に言うローディング画面を間に挟むとよいようです。

遷移開始時は以下のようにします。

SceneManager.LoadScene ("loading");
Resources.UnloadUnusedAssets();
System.GC.Collect();

Updateの中で、loadingに遷移したタイミングで本当に行きたかったシーンに遷移します。

if(SceneManager.GetActiveScene().name=="loading"){
SceneManager.LoadScene("next_scene");
Resources.UnloadUnusedAssets();
System.GC.Collect();
}

これにより、iPhone5Sでも落ちなくなりました。

2016年に買って良かったもの

2016年も年末ということで、今年、買ってよかったものをリストアップしてみました。

iPhone7


IMG_1870

昨年まではiPhone5Sを使っていて、iPhone7は大きすぎるかなと思っていたのですが、Suicaに対応したということで買い替えました。薄くなった分、大きさにもすぐに慣れ、逆にiPhone5Sが小さく見えるから不思議なものです。ホームボタンも慣れると逆にiPhone5Sが深く感じますね。今年、一番、満足度が高い買い物でした。

Apple Watch Series 2


IMG_2023

こちらもSuica対応ということで買い替え。残念ながら、Suicaはロック中に動作しないためほとんど使っていませんが、IDが指紋認証なしで使えて便利です。

Sony LED電球スピーカー


IMG_2018

SonyのLED電球スピーカーの二代目です。音楽を聞くにはモノラルなので厳しいですが、ポッドキャストを聞くには最適です。天井から音が鳴るので、講演会にいるような気分になれます。RebuildFM専用機。



ルンバ870


IMG_2019

ルンバ500のサポートの終了に伴い、安く買い換えられるということで購入。ブラシが新しくなって絡みにくくなったのと、スケジュールで自動的に掃除が始まるのが便利です。



Scan Snap IX100


IMG_2020

M1500からの買い替え。USB給電とScan Snap Cloudで場所を取りません。昔は自炊のためにM1500を使っていたのですが、Kindleのおかげでクレジット明細のスキャンぐらいにしか使わなくなっていたので、コンパクトになって満足です。名刺管理もEightに移行して、ペーパーレス化が進んでいます。



なめこ日めくりカレンダー


IMG_2021

2016年は、よつばとカレンダーがなかったのですが、なめこカレンダーのおかげで精神を健全に保てました。2017年版も、もちろん買いました。来年も出て欲しい!



IMG_2014


無印リュック


IMG_2025

バイヤーも使っているとうわさの無印のリュックです。最近はビジネスシーンでもリュックを使うようになってきたので、軽くてがっつり入る無印のリュックは最適でした。

Bose Quiet Comfort 35


IMG_2022

待望のノイズキャンセリング+ワイヤレス。2個買いました。電源を入れると自動的にペアリングされる、USBで充電できる、残電池量をボイスで教えてくれる、など、完成度がとても高いです。



ヤコブセンの置き時計


IMG_2027

限定色があまりに良かったので。ブラックモデルとくらべて、ムーブメントが静かになりました。



デロンギのケトル


IMG_2026

カッパーカラーがマイブームで、ずんぐりむっくりな形状に惹かれて買ってしまいました。保温性能は低いですが、デザイン優先で。



Apple MagicKeyboard


IMG_2024

Lightningで充電できるようになり、電池交換のストレスが大幅に減りました。来年、Touch Bar付きのモデルが出ないかなと期待しています。



iPad Pro 9.7


IMG_2031

最初に大きい方を買って、大きすぎたので小さいのに買い替えました。社外での打ち合わせは、Mac Book 12ではなく、こちらがメインになりました。軽さと小ささは正義です。キーボードがあると、ビジネス感が出ます。Apple Pencilも買いましたが、あまり使ってないです。



今年は年末にいろいろな機器を買い替えました。来年もよい製品がいろいろ出て欲しいです。

OneSignalを使ってUnityにPush通知を実装する

UnityでPush通知を実装する場合、OneSignalを使うと便利です。無料で任意のセグメントのユーザに通知を送ることができます。

iOSの設定

(1) アプリケーションフォルダにあるキーチェーンアクセスを開きます
(2) メニューの「証明書アシスタント」から「認証局に証明書を要求」してディスクに保存します
(3) iOS Dev CenterのProvision Portalへ行き、Certificatesの項目で、Apple Push Notification Authentication Key (Sandbox & Production)を作成します
(4) aps.cerをダウンロードします
(5) キーチェーンアクセスに取り込んで、右クリックし、p12で書き出します(左のタブをログインに合わせておかないとp12で書き出せません)
(6) OneSignalに登録します

証明書は毎年更新が必要です。

Androidの設定

(1) Firebaseのプロジェクトを作成してFCMのサーバーキーを取得します
(2) OneSignalに登録します

Unityの設定

(1) OneSignalのUnity SDKをインポートします
(2) 以下のコールバックを任意のスクリプトに登録します(ONE_SIGNAL_API_KEYは自分のものに書き換えます)
(3) OneSignalのサイトからPush通知を発行すると、アプリを起動している場合、ダイアログが表示されたあと、HandleNotificationOpenedが呼ばれます

using System.Collections.Generic;  
void Start () {
    // Enable line below to enable logging if you are having issues setting up OneSignal. (logLevel, visualLogLevel)
    // OneSignal.SetLogLevel(OneSignal.LOG_LEVEL.INFO, OneSignal.LOG_LEVEL.INFO);
  
  OneSignal.StartInit(ONE_SIGNAL_API_KEY)
    .HandleNotificationOpened(HandleNotificationOpened)
    .EndInit();
  
  // Sync hashed email if you have a login system or collect it.
  //   Will be used to reach the user at the most optimal time of day.
  // OneSignal.syncHashedEmail(userEmail);
}

// Gets called when the player opens the notification.
private static void HandleNotificationOpened(OSNotificationOpenedResult result) {
}

尚、Unityからアプリを書き出した後、XcodeのCapabilityでPushNotificationとBackground ModesのRemote notificationsを有効化する必要があります。従って、Unity Cloud Buildではビルドは通りますが、動作しません。

Apple Watch Series 2を買いました

Apple Watchのステンレススチール+ミラネーゼループを使用していたのですが、Apple Watch Series 2のNikeモデルを買いました。

IMG_1985

今回もステンレスモデルにするか迷ったのですが、結局、2年に一回は買い替えそうなのと、軽さ優先ということで、アルミニウムモデルにしました。心配していたミラネーゼループとの質感の違いは、思ったよりも気になりませんでした。それよりも軽くなったメリットの方が大きかったです。

ただ、当初の購入目的であったSuicaの使用は、iPhone7と異なり、ロック状態では改札を通れないという問題から、実用性は微妙でした。対して、コンビニでのID支払いは、iPhone7で必要な指紋認証が不要な分、便利でした。なので、コンビニでのID支払い専用機というのが、現在の評価です。

Apple Watchそのものの機能としては、時計・アクティビティトラッカー・電話の着信に気づかない問題の解消・当日のスケジュールの確認、あたりを便利に使っています。外出や打ち合わせが増えてくると、時計があった方が便利ですね。

結局、Nikeモデルにした意味はありませんでしたので、通常モデルでも十分かと思います。

UnityのuGUIの座標をスクリプトで指定する

UnityでuGUIを使用する場合、複数の解像度に対応するため、Canvas Scalerを割り当てます。

canvas_scaler

しかし、Canvas Scalerを与えたCanvasにおいて、子要素の座標をスクリプトから制御しようとした場合、transform.positionにCanvas Scalerの拡大率が考慮されないため、うまく制御できません。これは、Unity Editor上では、Canvas Scalerで指定した座標系で設定できるのが、スクリプトでは実座標系で設定することになるのが原因です。

スクリプトからも、Canvas Scalerで指定した座標系で値を設定するには、anchoredPosition3Dを使用します。

具体的に、
 gameObject.transform.position=v;
ではなく、
 gameObject.GetComponent<RectTransform>().anchoredPosition3D=v;
と記述することで、Canvas Scalerを適用しても、適切な位置に子要素を設定することができます。

Unityでコードを書かずにアプリ内課金が可能に

2016年10月31日にリリースされたUnity IAP Store package 1.9から、コードを書かずにアプリ内課金を行えるようになりました。



- [Beta] Codeless IAP tools. Implement IAP by adding IAP Buttons to your project (Window > Unity IAP > Create IAP Button) and configure your catalog of IAP products without writing a line of code (Window > Unity IAP > IAP Catalog). Preliminary documentation is available [here](https://docs.google.com/document/d/1597oxEI1UkZ1164j1lR7s-2YIrJyidbrfNwTfSI1Ksc/edit).

Unity IAP Store package 1.9 is now available

ドキュメントはCodeless IAP Getting Started Guideにあります。

ServicesからUnity IAPを1.9に更新すると、ウィンドウメニューに、Window -> Unity IAP -> Create IAP Buttonが追加されます。選択すると、IAP Button(Script)の追加された、uGUIのボタンが配置されます。

shop

次に、IAP Catalogに、iTunes Connectで設定した課金アイテムのIDを設定します。エディターで実行すると、Fake Storeの購入ダイアログが出ます。

editor

課金が成功すると、On Purchase Completeが、課金がキャンセルされると、On Purchase Failedが呼ばれます。

次に、実機で実行してみたのですが、ボタンを押しても反応がありません。Unity Cloud Buildでは詳細なエラーが分からないので、Xcodeプロジェクトを書き出してみた所、Add the In-App Purchase feature to your App IDというエラーが出ていました。


unity_iap


どうやら、iTunes ConnectのConrtacts、Tax、Bankingを登録しないと、課金APIのテストはできないようです。

You will not be able to test any StoreKit functionality until you have an iOS Paid Applications contract – StoreKit calls in your code will fail until Apple has processed your Contracts, Tax, and Banking information.

Part 1 - In-App Purchase Basics and Configuration

登録が終わったら、実機テストもしてみようと思います。

参考サイト:Unity IAPを使ってて思ったこと

コンピュートシェーダとピクセルシェーダの違い

GPUを使用してフィルタリングを実装する場合、ピクセルシェーダもしくはコンピュートシェーダを使用することができます。

ピクセルシェーダは最も基本的なシェーダであり、テクスチャとパラメータを入力して演算した後、1画素を出力することができます。例えば、ピクセルシェーダで5x5タップのフィルタを実装する場合、25画素を取得して、1画素を返すことになります。テクスチャはランダムリードはできますが、ランダムライトはできません。また、出力は1画素に限定されます。

コンピュートシェーダでは、ピクセルシェーダの機能に加えて、テクスチャへのランダムライトと、共有メモリが使用可能です。また、出力は1画素に限定されません。コンピュートシェーダで5x5タップのフィルタを実装する場合、複数画素の処理をまとめて行うことで、テクスチャのフェッチ回数を削減し、ピクセルシェーダよりも高速化が可能です。例えば、16x16画素をまとめて共有メモリに格納した後、スレッドIDに応じて、5x5タップのフィルタを並列で実行し、12x12画素を書き込むことができます。これにより、ピクセルシェーダでは25in:1outだったテクスチャフェッチ比率を、256in:144out=1.7in:1outまで落とすことができます。

compute

コンピュートシェーダの処理の単位はスレッドで、複数のスレッドが集まってスレッドグループを構成します。共有メモリはスレッドグループ内でのみアクセス可能です。シェーダコードには、3次元で何個のスレッドでグループを構成するかを記述します。共有メモリのアクセス管理はメモリバリアで、GroupMemoryBarrierWithGroupSync();を読んだタイミングで全てのスレッドが完了するまで待ちます。テクスチャのアクセス座標は、スレッドに割り当てられたIDから計算します。

コンピュートシェーダは、ピクセルシェーダよりも初期設定が面倒ですが、Unityを使うと簡単に実験することができます。テクスチャへのランダムアクセスもRenderTextureにrandomAccessフラグを付けるだけでよく、簡単です。ただし、Unityでコンパイル済みのシェーダを使用する方法が存在しないため、シェーダプログラムを秘匿したい場合は、Render PluginとしてDLLを呼び出して、中でfxcを読み込むしかなさそうです。

Render Pluginなど、Unityを使用せず、直接、Direct Computeを使用する場合、ランダムライトが発生するテクスチャには、ShaderResourceViewではなく、UnalignedResourceViewが必要です。UnalignedResourceViewはピクセルシェーダでは読めないので、1つのテクスチャに対して両方のビューを作っておくことで、コンピュートシェーダで書き込み、ピクセルシェーダで読み込むことが可能です。UnityのNativeTexturePtrからもUnalignedResourceViewは作成可能です。

少人数でソーシャルゲームを作るツールチェイン

フェイスブックが買収したWhatsAppが社員数50人で4億5000万人に対してサービスを提供できたように、開発環境の進化とクラウド化によって、少人数でも大規模なアプリケーションが開発できるようになってきました。

今回は、エンジニア視点で、少人数で大規模なソーシャルゲームの開発を行うために最適なツールチェインを考えてみます。

Unity5


昔はゲームを作るときはゲームエンジンから作っていたものですが、Unityの登場によって、ゲームのコアだけを記述すればよくなりました。iOSとAndroidのマルチプラットフォーム化が必須な今、開発環境としてのWindowsとMacの対応も考えると、Unityを使わないという選択肢はない気がします。nGUIとIAPの対応で、外部プラグイン不要で完結するようになってきましたし、どうしても不足する機能は自分でプラグインを書けば良いという安心感もあります。また、最新のMAYAのfbxへの対応など、何もしなくてもゲームエンジンがメンテナンスされていくというのは、自社エンジンにはない魅力です。

Maya LT でローポリキャラクタモデリングに挑戦して Unity で動かしてみた

Unity Cloud Build


Unity Cloud Buildを使うと、リポジトリにpushするだけで、自動的にiOSとAndroidのアプリをビルドすることができます。これにより、物理的に離れた場所にいたとしても、チームメンバー全員がいつでも最新版で動作確認することができます。開発はPCだけで行えばよく、実機を有線で接続する必要もないので、単純な開発効率も上がります。iOSアプリをWindowsだけで開発できるというのは革命的です。

Unity Cloud Buildの使い方

Bitbucket


GitのPrivateリポジトリを無料で作ることができます。Unity Cloud Buildとの連携を考えると、リポジトリはクラウドに持った方が便利です。

Unity向け .gitignoreの設定について

Slack


メールだと定型句が必要ですが、チャットだと重要な点だけを書けるのでコミュニケーションの効率が上がります。コミュニケーションの手段としてのメールは今後、衰退していく気がします。ChatWork、HipChatとも比較しましたが、Slackが一番、アプリの出来がよくできていました。

Google Docs


仕様書やドキュメントなどは、複数人同時に編集できるGoogle Docsで管理すると便利です。日付付きのWordファイルやExcelファイルをメールで送る必要はありません。ゲームのリソースもGoogle Driveでやり取りするとスムーズです。

Google AppEngine


少人数で運営することを考えると、サーバ運営をしているリソースはありません。Google AppEngineはDataStoreなど、プログラム側にかなり強い制約がかかりますが、その制約によって、原理的にAppEngineで動けば必ずスケールすることが保証されます。また、マネージドサービスなため、脆弱性の発覚による依存ライブラリのバージョンアップなども不要です。すなわち、サーバの保守が不要になります。

唯一、国内での実績が乏しいのが採用のネックだったのですが、メルカリ アッテがAppEngineを採用したことで、その障壁もなくなりました。さらに、2016年9月には待望の東京リュージョンが開設され、遅延が減ります。証明書なしでSSLが使えるのも魅力です。ゲームサーバなら独自ドメインがいらないので手軽です。

ゲームサーバへのサーバレスアーキテクチャの適用は、今後のトレンドになるのではないでしょうか。

SSL の設定
サーバーレスアーキテクチャという技術分野についての簡単な調査

第27回IGポート株主総会レポート(2016/08/26)

場所は久々の三鷹産業プラザです。参加者は80人程度。株主総会で初めてパワーポイントが使われました。パワーポイントの表紙の写真は丸井のIGストア、まほよ、攻殻VRの三つでした。

IMG_1842

業績概要の説明。映像制作赤字、出版と版権が黒字です。出版はまほよが250万部、劇場版効果でARIA関連グッズが好調。電子書籍比率が30%増加で利益率向上。来期は、映像制作とともに、VRアプリや渋谷丸井のIGストアでのグッズ販売をやっていく。

以下、質疑応答です。

ニコニコでの配信は収益目的なのか、盛り上げ目的なのか。アベマTVはどうか。


ニコニコでの配信の目的は先行配信の場合は宣伝。ニコニコユーザはアニメと親和性が高い。有料課金は収益目的。アベマTVも視野に入れている。先行配信の場合はロイヤリティを高く積んで頂ける会社もあるので総合的に勘案。

映像制作、制作期間の長期化による悪影響は今期限り?株価への影響の大きいVRの方針は?


映像制作は、製作委員会から依頼を受けて制作するが、クオリティが要求される。ここ2年、赤字が続いている。今期も。海外からの依頼は予算が大きい。今後は交渉によって制作費を上げてもらうなど、映像制作で利益を上げられるよう目指す。

VRは制作完了している。攻殻はさまざまな反響を頂いており、タッチポイントを増やす。アプリとしてはPSVRでの配信を予定しているが、カメラワークの酔いの問題を修正中。他のプラットフォームも検討。スマホアプリは12GBになってしまった。どのようにエンコードすればよいか調整中。

クオリティを高く置いているので制作費で収めるのは難しくなっている。グループとして、マッグガーデンが9年目にして、利益を出す仕組みを作れた。利益の循環を生み出すエンジン。多少、利益を超えたとしても、株主の期待に応えられる。

どの部分に権利を持っているかわからないと投資しにくい。開示予定は?


機関投資家からも同様の依頼を頂く。制作委員会のシステムで守秘義務がある。開示してしまうと、他社にわかり、業績に悪影響を与える。業績改善でいろいろな契約上の手を打っているが、他社に手の内がわかってしまう。

海外における事業展開について。


Netflix向けはIGが100%版権を持ってやる。フリクリをカートゥーンネットワークでという話など、版権ビジネスのよいスタートラインに着いている。

ガルムウォーズの収益は?


海外は18カ国。75万ドル。国内は動員1万2000人。2千万円弱。カナダの税制優遇を使って制作、ワールドワイドのプリセールスをやったが、見込んだ収益はあげられなかった。国内はDVDで回収していく。営業マスターは償却済み。

特別に力を入れていることは?


和田、森下が答える。IGポートの原動力となるウィットスタジオとシグナルエムディーの社長。

ウィットスタジオは企画を作ることに集中。面白いものを作るには面白い人が必要。そのためには企画がいる。カバネリをリリース。IGポートのサポートを受けながら人を集める場所を作る。

シグナルエムディーは設立から1年弱。デジタル作画を中心として人を集めて人を育てている。ひるねひめは、デジタル作画中心。意図としては、少子化が進む中で、より省力化、効率化が必要。デジタル作画はひとつのきっかけ。正社員という形でアニメーターを雇用。将来の中核になってもらうべく進めている。ビジネススキームとしては、舞台やスマホアプリなども設立時にかかげている。しかし、まずはデジタル作画に資本を投下している。

VRアプリのキャンペーンは?リターンは?


攻殻VRはカメラがかなり動く。ご年配が酔われる。ソニーが認めるか次第。出口としては他のHMDでの配信は開始している。戦略は、全世界配信を目指すために、制作委員会から離れた仕組みを作る。音楽や脚本の権利を買いきりにしておくことで、世界配信をできるようにする。

出版の社員数が2名減少しているが?


先月、募集をかけた。作家性を備えた若い編集者で社内でも企画を立てていきたい。関西に事務所を作った。作家の発掘。作品数を昨年はしぼったが、秋から増やす。ネットマガジンで連載予定。

その他事業の赤字の原因は?


その他事業の赤字は販管費の増加と、NHK向けのアニメのグッズの売上がよくなく、在庫を処分した。

映像制作はどの会社も赤字なのか?プロセスやツールの問題か?


制作の利益は、大きくは業界の問題。作画崩れや、お客の目、工程の労力が増えている。本数増加でクリエーターの奪い合いも起こっており、制作期間を超過する原因となっている。

プリプロの期間が延びてきている。工程を分析して管理する必要がある。1つの場所に集まって、内製化の方向に向かう。プリプロは出版事業で作ったものをアニメ化する方向になっている。

ウィットスタジオは進撃、カバネリ、まほよと、クオリティに関しては信頼がある。社長の陣頭指揮で数カ所にあったスタジオを集約。来期は絶対に利益を出すという言葉をもらっている。

株主優待について


2007年にSACのクオカードを出したことがある。その際、一般投資家から批判もあった。業績が大事。イラストを描きおろして権利処理するコストを考えると2000万円ぐらいかかる。本業のクリエーターが書き下ろすので本業への影響もあった。

ARIA劇場版、BD BOXのみで単品販売しない。なぜこうなったのか。


制作委員会の調整によるもので、我々は詳細を把握できていない。まほよは原作と制作、100%、IGが出資。貴重な意見を反映させたい。

フリクリ2の国内展開の予定は。フリクリ1の再販はIGができるのか。


契約上の機密保持。海外はカートゥーンネットワークで配信。国内は製作委員会で行う。

「とつくにの少女」と「もののべ古書店」はどうか?


9月に2巻が出る。コミックは2巻で新規ユーザーが入ってくる。アニメ化できる可能性を感じる。


全体としては、ここ8年ぐらいの、IGポートで原作を作ってアニメ化まで一気通貫で行うという夢が、最近のマッグガーデンのコミックの好調と、ウィットスタジオのアニメの好調によって、魔法使いの嫁でついに実現しそうというのが大きいかと思います。ようやく手にした理想のビジネスモデル、あとはいかに原作を生み出し続けられるかが問われそうです。

IMG_1850

今年のお土産はクリアファイルでした。

バランスシート分析サービス BS Analyzerを公開しました

企業のバランスシートを分析してランキングを作成することができるBS Analyzerを公開しました。

bs_analyzer

BS Analyzerは、企業の四半期決算を分析して、任意の計算式でランキングを作成できるサービスです。計算式には時価総額を入力できるため、ネットネット倍率でもランキングすることができます。

これにより、時価総額よりも多くの現金を持っている銘柄を簡単に抽出することができます。

まだ2016年5月以降に公開されたXBRLしか対応していませんが、3ヶ月後には各企業のXBRLが出揃い、実用的になってくるのではないかと考えています。

XBRLからネットネット株を探す

ネットネット株とは、企業の換金性の高い資産から、負債を引いた値が、時価総額よりも大きい銘柄のことです。PBRには、在庫やのれんなど、換金性の低い資産が含まれるため、これらの影響を除外して、安全側に寄せて考えることで、真の割安株を抽出することができます。

ネットネット株かどうかを判定するには、企業が公開しているバランスシートを使って、手動で計算する必要があります。しかし、東証は適時開示でXBRLを公開しているので、これを解析することで、バランスシートの分析を自動化することができます。

XBRLはzipファイルとなっており、展開すると、複数のhtmlファイルが出てきます。この中にある、bsというIDを持つファイルがバランスシートです。

XBRLにはタクソノミという定義があり、勘定項目ごとに、タグに設定するnameが規定されています。例えば、現金及び預金はjppfs_cor:CashAndDepositsです。これを利用して、htmlから正規表現で勘定項目の値を取得することができます。

今回は、以下のような正規表現を用いました。

it = re.finditer("<ix:.*contextRef=\"Current[a-zA-Z_]*\".*name=\""+item+"\".*?>([ 0-9,]+)<", line, re.DOTALL)

また、千円単位か、百万円単位かというのは、scaleという要素に設定されています。

it2 = re.finditer("scale=\"([0-9]+)\"", m.group(0), re.DOTALL)

これを使って、東証のXBRLを解析した例は以下です。

オリバー - 平成28年10月期 第2四半期決算短信〔日本基準〕(連結)

TDnetSearchでは、XBRLを含む決算短信に、ANALYZEリンクを表示します。これをクリックするだけで、バランスシートを読まずに、ネットネット株かどうかを判別することができます。pbrクエリである程度絞り込んだ後に、ネットネット株かどうかの分析をして確度を上げるのがオススメです。

今後は、四半期決算を蓄積したタイミングで、割安度ランキングを作成してみたいと思います。

---
2016/6/5追記
ネットネット倍率のランキングを計算できるBS Analyzerを公開しました。

名証の割安銘柄

TOPIXなどのインデックスファンドが投資先を東証に限定しているため、名証の銘柄は割安に放置される傾向があります。そのため、名証から東証に市場変更すると水準訂正が起きる可能性が高く、好業績の名証銘柄を買っておくというのは、長期保有できるのであれば、よい戦略なのではないかと思います。

ということで、名証の割安銘柄です。どの銘柄も、財務良好で、割安です。

中部日本放送

TBS系の放送事業者。不動産賃貸も。
株価631円、PER8.16、PBR0.34、配当利回り3.49%、自己資本比率75.6%。

愛知電機

中部電力系の変圧器メーカ。モータ製造も。
株価330円、PER6.3、PBR0.36、配当利回り3.64%、自己資本比率50.9%。

中部鋼鈑

国内最大級の電炉保有の厚板専業メーカー。産業機械向けが主力。
株価504円、PER6.77、PBR0.28、配当利回り2.78%、自己資本比率88.1%。

ちなみに、リストにはエスラインもいたのですが、原油安に伴う好業績のため株価が高騰してしまいました。エスラインは、東証への市場変更の布石か、株主数を増やすため、株主優待の新設を発表しています。

東北新社の分析

東北新社はCM制作、衛星放送のスターチャンネルの運営、映画の制作・配給を行っている企業です。宇宙戦艦ヤマトとGAROの版権を持っていることで有名です。

株価は620円、PER10.62、PBR0.42、配当利回り2.74%です。

時価総額は289億円。現金341億円、売掛165億円、土地129億円、本社建物15億円、投資有価証券100億円に対して、負債321億円です。流動性の高い資産で429億円あるため、時価総額に対して割安です。さらに、無形資産の版権が上乗せされます。

土地については、港区の赤坂の本社が1094平米で34億円(建物は15億円)、港区のスタジオが1579平米で10億円です。本社については路線価とほぼ同等です。スタジオの方は、含み益があるかもしれません。ロサンゼルスにも4303平米で、3億円計上されています。その他の合計11787平米、69億円の詳細は不明で、ここが若干の不安要素になります。

BSにはのれんが22億円と、前期から急増していますが、スターチャンネルの持ち分を伊藤忠から60%まで買い増し、連結子会社としたためです。

ビジネスの中心はCMということで、売上が景気に左右されますが、売上が下がると外注費も下がるため、利益はわりと安定しています。

PBRがこれだけ下がると、MBOも期待できるので、ポートフォリオの5%程度は保有してもよいのではないかと思います。

TDnetSearchで東北新社の開示情報を検索

ハークスレイの分析

ニフティがTOBされたので、売却した資金の投資先として、ハークスレイを分析してみます。

ハークスレイは、弁当『ほっかほっか亭』を運営する、全国FC統括会社です。プレナスとの裁判で有名です。プレナスが勝つかと思っていたのですが、意外なことに、ハークスレイ側が勝ってしまいました。

株価は1049円、PER8.5、PBR0.54、配当利回り4.29%、自己資本比率51%。株主優待でクオカードがもらえます。プレナスとの訴訟に勝って、1株あたり100円分のキャッシュが入ってきました。コンビニとの競争はありますが、温かいご飯の付加価値は今後も継続するかなと思います。今後、高齢化が進んで、自炊率も下がってくると思いますし、長期的にも安定したビジネスができるのではないかと思います。

現金68億円、売掛18億円、建物63億円、土地111億円、投資有価証券17億円、敷金55億円の合計332億円に対して、負債182億円で、安全に見積もった資産150億円に対して時価総額115億円です。土地は兵庫県の工場で23億円、新宿区の本社ビルが1809平米で56億円です。賃貸不動産の含み益はありません。

普通の小売業に比べて、在庫リスクが少ないのも魅力です。商品及び製品は7億円しか持っていません。食材の供給と物流はグループのアサヒL&Cが行っています。参入障壁も低いわけではなく、894もの店舗網をこれから築くのは難しいでしょう。

バランスシート的には激安とまではいえないのですが、リスクが少なく、長期的に安定した配当を得られそうなので、REIT的なポジションで保有するのは悪くないのではないでしょうか。

TDnetSearchでハークスレイの開示情報を検索

Adobe AirでInvalid Bundleのエラーが出る

Adobe AirでiOSアプリを作成して申請すると、Application Loaderでは成功しますが、iTunes Connectの認証で以下のエラーが発生しました。

Invalid Bundle - The bundle at '/Payload/イラブペイント.app' does not contain a bundle executable.


ipaをunzipしてinfo.plistを確認しても、CFBundleExecutableは正しく記述されていますが、どうやら、日本語だと弾かれるようです。

xxx-app.xmlのfilenameを英語表記に変更し、nameにアプリ名を日本語で入力することで、回避できました。

TDnetViewのiOS版をリリースしました

東証の適時開示情報をアプリで確認できるTDnetViewのiOS版をリリースしました。プルダウンで新着情報を取得できる他、お気に入り企業の新着情報の通知や、開示情報の全文検索にも対応しています。ぜひ、ご利用下さい。

IMG_1687IMG_1691





Xcode7のStoryboardでUITableViewの横幅を100%にする

Xcode7でTabbedApplicationを作成し、FirstViewにUITableViewを配置しただけでは、横幅に600pxが固定値で代入されてしまいます。そのため、iPhone5Sなど、小さな端末ではコントロールがウィンドウサイズを超えてしまいます。

コントロールの横幅をウィンドウサイズに制約するには、Constraintを使います。まず、UITableViewを選択し、CTRLを押しながら上位のViewにドラッグします。


width

出てきたウインドウから、trailing space to container marginを設定すると右端がウィンドウに吸引します。また、loading space to container marginを設定すると、左端がウィンドウに吸引します。

ios 8 Storyboard Search Bar Too Wide

iPad Proの筆圧をJavaScriptで取得する

iPad ProとApple Pencilを使用すると、JavaScriptで筆圧を取得することができます。取得方法はとても簡単で、touchmoveイベントの中で、forceプロパティを参照するだけです。

if(e.touches[0].force){
pressure=e.touches[0].force;
}

pressureには0〜1.0の値が入ります。ただし、touchstartの最初の筆圧は、かなり強い値が来ることがあるので、いくつかの値は捨てた方がよいかもしれません。

筆圧を使用したお絵かきツールのサンプル

IMG_1649

AppEngineでPDFのバイナリからテキストを抽出する

Google AppEngineでPDFからテキストを抽出するには、pdfminerを使うと便利です。pdfminerは、ピュアPythonで書かれた、PDF解析ライブラリです。

ライブラリのインポートは、GitHubのpdfminerのリポジトリからpdfminerフォルダをAppEngineのプロジェクトフォルダにコピーするだけです。以降、以下のようなコードでテキスト抽出を行うことができます。get_pdf_textの引数のcontentはPDFのBlobです。

from pdfminer.converter import TextConverter
from pdfminer.layout import LAParams
from pdfminer.pdfinterp import PDFResourceManager
from pdfminer.pdfinterp import PDFPageInterpreter
from pdfminer.pdfpage import PDFPage

from io import BytesIO
from StringIO import StringIO

def process_pdf(rsrcmgr, device, fp, pagenos=None, maxpages=0, password='', caching=True, check_extractable=True):
	interpreter = PDFPageInterpreter(rsrcmgr, device)
	for page in PDFPage.get_pages(fp, pagenos, maxpages=maxpages, password=password, caching=caching, check_extractable=check_extractable):
		interpreter.process_page(page)

def get_pdf_text(content):
	rsrcmgr = PDFResourceManager()
	retstr = StringIO()
	codec = 'utf-8'
	laparams = LAParams()
	device = TextConverter(rsrcmgr, retstr, codec=codec)

	input_io = BytesIO(content)
	try:
		process_pdf(rsrcmgr, device, input_io, None , 8)	#max 8 page
	except:
		return ""
	device.close()

	str = retstr.getvalue()
	retstr.close()

	self.text=db.Text(str, encoding="utf-8")

	return str

ただし、認識できなかった文字コードは(cid:xxx)のようなテキストが返ってくるので、見栄えが気になる場合は適当にgrepしてやる必要があります。また、process_pdfに大きなPDFを与えると、AppEngineのスモールインスタンスではメモリが不足するので、ページ数は適当に制約をかける必要があるかと思います。

他、ピュアPythonのPDF解析ライブラリとして、pypdf2もありますが、日本語のPDFがうまく解析できなかったので、pdfminerの方がオススメです。

2016年前半の買い物

Fostexのボリュームコントローラ。会社でRolandのOctaCaptureを使ってたのですが、音を聞くだけにしては仰々しいなと思い、買い換えました。小型でドライバレス、さらに手元でボリュームコントロールできて便利です。PC内蔵のヘッドフォン端子はかなりのノイズを拾うので、USBオーディオにするだけで音は改善します。金属の質感がいい感じです。



AukeyのUSB type CとUSB type Aの変換コネクタ。1個買って数ヶ月使って安定していたので、追加購入しました。Mac Book 12で開発をする際に、ライトニングケーブルに常備しておくと便利です。



ブラウンの時計。小型なので買い集められます。自宅用と会社用に購入しました。





Amazonクレジットカード。ヨドバシクレジットカードをメインで使っていたのですが、最近、ネットでの家具の注文が審査で弾かれることが多くなってきたのと、マネーフォワードで使えなくなったので、乗り換えました。AmazonのKindle本の購入での1.5%の還元率が魅力です。

Search
Profile
Twitter
TopHatenar
HotEntry
Counter

アクセス解析付きカウンター。あなたのBLOGにもどうですか?登録はこちらから。

TOP/ BLOG/ LECTURE/ ONLINE/ RUINA/ ADDON/ THREAD/ METHUSELAYZE/ IPHONE/ MET_IPHONE/ ENGLISH/ RANKING