もちっとメモ

もちっとメモ

もぐりのエンジニアが日々の中で試してみたことを気が向いたときに書き連ねていきます

【Unity】画像をグルクル回転させるアニメーションを作りたい

最近行っているゲーム製作の中で、幾何学模様を組み合わせてサイバーっぽいパーツを作りました。で、友人の「これって回ったら格好よさそうじゃない?」という無責任な発言でこれを回すことになりました。

今回はこんな感じのアニメーションを作ります。

f:id:T-N-Clark:20180421151712g:plain

いろいろやりようはあると思いますが、色んなUIパーツに対して使えるよう今回はスクリプトで回すことにします。今回はこちらを参考に組みました(というか、ほぼそのままです)。

tsubakit1.hateblo.jp

docs.unity3d.com

実際のコードはこちら。自作部分はえいやで組んだので適当です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class RotAmimation : MonoBehaviour {
	
	public float angle = 1;
	public bool rot = true;

	void LateUpdate(){
		if (rot) {
			transform.rotation *= Quaternion.AngleAxis (angle, Vector3.back);
		} else {
			transform.rotation *= Quaternion.AngleAxis (angle, Vector3.forward);
		}
	}
}

公式リファレンスにある通りにangleで回転角をで回転方向を決めています。つまり、angleで回転速度(角速度)を調整します。回転方向については、Vector3とあることから分かるように3次元に回転できて、それぞれ

  • up:(0,1,0)
  • down:(0,-1,0)
  • back:(0,0,-1)
  • forward:(0,0,1)
  • left:(-1,0,0)
  • right:(1,0,0)

のようになっています。今回は2次元平面上での回転なのでz方向の回転、すなわち

  • back
  • forward

を使います。とりあえず回転方向を2種類を切り替えられればいいので、時計回りならtrue、反時計回りならfalseのboolで切り替えています。あとは、これを回転させたい画像にアタッチして、インスペクターでパラメータを調整すれば完成です。

f:id:T-N-Clark:20180421153331p:plain

ちなみに、私の場合は描画順序がうまくいかなかったのでSortingLayerで調整しました。

qiita.com

JupyterLabで開発しながら.pyファイルを作りたい

最近、JupyterLabのβ版が公開されて、ますますJupyterでの開発が捗っている方も多いのではないでしょうか?

github.com

私もそんな一人なのですが、複数人でソースを共有したいときやflaskで作ったapiを叩くとき、Jenkinsからキックするときはやっぱり.py形式の方が使いやすい。ということで、.ipynbを保存すると同時に.pyファイルも保存してくれるやり方を探したら、ありましたのでメモっておきます。今回はこちらを参考にさせていただきました。

adtech.cyberagent.io

まず、ターミナルなどのコンソールを起動して、configを作成します。

jupyter notebook —generate-config

生成時に生成されたパスが表示されるので、そのファイルを開いて中身を書き換えます。

#c.FileContentsManager.post_save_hook = None

これを

import io
import os
from notebook.utils import to_api_path

_script_exporter = None

def script_post_save(model, os_path, contents_manager, **kwargs):
    """convert notebooks to Python script after save with nbconvert
    
    replaces `ipython notebook --script`
    """
    from nbconvert.exporters.script import ScriptExporter
    
    if model['type'] != 'notebook':
        return

    global _script_exporter
    if _script_exporter is None:
        _script_exporter = ScriptExporter(parent=contents_manager)
    log = contents_manager.log

    base, ext = os.path.splitext(os_path)
    py_fname = base + '.py'
    script, resources = _script_exporter.from_filename(os_path)
    script_fname = base + resources.get('output_extension', '.txt')
    log.info("Saving script /%s", to_api_path(script_fname, contents_manager.root_dir))
    with io.open(script_fname, 'w', encoding='utf-8') as f:
        f.write(script)

c.FileContentsManager.post_save_hook = script_post_save    

のように書き換えます。

これで後は実際にJupyterLabを起動して、ファイル保存をするだけで.ipynbファイルと.pyファイルが同時に生成されているはずです。

ついでに、「個別の環境にJupyterをインストールするのは面倒だよ」という場合は、オンプレOSSのようにサーバー用PCにみんなでアクセスして使うという方法があります。これもブラウザで稼働する点のメリットですね。これでユーザーはブラウザさえあれば即使えますし、バージョンやライブラリの管理も1台のPCで済みます。リモートで使うための方法はこちらが参考になります。

qiita.com

Texファイルが大きくなったので分けようと思う

論文や講義ノートなど、長編の書き物をしていると段々TeXファイルが大きくなってきます。私の場合は図を多用していたので特にそうでした。大きくなってくると当然、ビルドにも時間がかかります。しかも私は、タイプミスをしょっちゅうするので、結構な頻度でビルドしてはプレビューで確かめてを繰り返さないといけない始末。なんとかならないのかと唸っていたら友人から「章ごとに別々のTeXファイルに分ければいいじゃん」と言われたので、調べてみたらありました。qiita.com

上記のサイト様にも書いてありますが、基本的には章ごとにTeXファイルを1作って、まとめるときは、まとめる用のTeXファイルを作ってその中に各章のTeXファイルの内容を埋め込むイメージ。(そういえば最近、ホームページ作りでも似たようなことやったなあ)
一つ気を付けないといけないのは、まとめる際に「TeXファイルの内容をそのまま埋め込む」ことになるので各章のTeXファイルにはプリアンブル(usepackageとか書いてある¥begin{document}より上の部分です)が書けないということです。これで何が困るって各ファイル毎にビルドできないので、結局書いた内容を確かめようと思うと全ファイルまとめてビルドしないといけません。これではあまり解決になってません。
と思っていたらあるじゃないですか、各ファイル毎にビルドできる方法が。

d.hatena.ne.jp

ossyaritoori.hatenablog.com

どうやらこのパッケージを使うとプリアンブル部分を無視してまとめてくれるみたいです。なので、まとめファイルと同じプリアンブルを各ファイルに書いておけば章ごとにビルドできる。これで大分楽になりました。ありがとうございます。

ちなみにinputとincludeの違いはこちらの通りだそうです。

github.com

アクセス解析を復習してみる

とある事情でまた新たにサイトを作ることになったので、早速アクセス解析を導入しました。前にもやったことあるのでし余裕でしょ...と思ったのですが、前にやったのは1年以上前だったのですっかり忘れてしまっていました。ということで導入手順を復習したので備忘録的にそのメモ書きとして残しておきます。今回も先人の方々の知恵をお借りしました。

今回導入したのがGoogleアナリティクスとGoogle Search Consoleです。www.google.co.jp

www.google.com

はてブにはデフォルトでアクセス解析がついているのですが、無料アカウントだと1ヶ月しか見られません。当然はてブでもできますし、私も導入しましたが、今回は自作のホームページの方に導入したのでそちら視点で書いていきます。

自前のホームページを作るときはXdomainさんを利用させていただいております。簡単なアカウント登録だけで無料で3GBを借りられてHTMLなら広告なし、広告ありならPHP,WordPressも使えるというお得なレンタルサーバーです。そしてなんと、1個(2個だったかもしれない)独自ドメインを取得できるというのが魅力的すぎます。いいのかこんなことできて。

www.xdomain.ne.jp

興味を持った方は以下のサイトに導入手順が丁寧に説明されています。ちなみにファイルのアップロードは[FTPアカウント設定]-[WebFTP]-[ログイン]からファイルマネージャーが開けるのでWeb上からファイルのアップロードができます。FTPクライアントに比べると少々UIが使いづらいですが、特別FTPクライアントを用意する必要はないので少数のファイルを扱うだけなら十分便利です。rensrv.com

色々脱線しましたが、以下のサイトを参考にGoogleアナリティクスの設定をしていきます。wacul-ai.com

私の場合は、hugoで作っているので導入はとても簡単でした。www.tdtsh.com

はてブにつけたい方はこちらが参考になります。memobiz.net

続いてGoogle Search Consoleです。基本は以下のサイトに従って行うだけ。www.yuki-t.site

Xdomainを利用されている方は、URL登録時に表示されたhtmlファイルをダウンロードし、rootフォルダにアップロードするだけ。特別ファイルに書き込む内容はありません。

仕上げにGoogleアナリティクスとGoogle Search Consoleを連携させてしまいましょう。wacul-ai.com

応用編ですが、ついでにGoogleアナリティクスを使えばファイルのダウンロード数のカウントなんかもできるそうです。big-mac.jp

現状、大してアクセス数があるわけではありませんが、一通りやりたいことはできたのでここまでとします。色々設置するとweb解析屋さんになった気分になれます。

よければこちらの過去記事もどうぞ。Hugoでのホームページ作成について書いたものです。 

t-n-clark.hatenadiary.jp

 

PowerPointもGit管理できないかな... Pythonで書けばいいじゃない

あけましておめでとうございます。2018年初投稿です。

タイトル通り、PowerPointをテキスト形式で管理する方法を模索していたら、こんなの見つけました。Pythonパワポが作れるライブラリがあるらしい。最近の機械学習、データ解析屋さんにはありがたいです。いつも思うが先人の方々はありがたいまとめをしてくださっています。

qiita.com

インストール環境がオンラインでできるなら。こちらの通り。qiita.com

Proxyとかなんらかしらの理由でオフラインでやりたい場合は、こちら。pypi.python.org

gzファイルをダウンロードしてきて

pip install python-pptx-0.6.7.tar.gz

でインストールできます。

その他使い方は下記参照で。普段pythonで解析しながらそのままシームレスに発表資料が作れる感じでGood!qiita.com

公式ドキュメント

Getting Started — python-pptx 0.6.7 documentation

https://media.readthedocs.org/pdf/python-pptx/latest/python-pptx.pdf

WordとExcelもいけるみたい。www.brain.rcast.u-tokyo.ac.jp