Xtity Blog

techieなこと、書いてます

コミュ力とは何か(1)

はじめに

これから書こうと思うことを、飲み会帰りの気持ちの良い頭で出来る限り要約しようとしてみた結果が以下である。

「ひょっとして本当にコミュ力低いと思ってるんですか、ネタとか謙遜じゃなく」

「今の話、今年一番心にグサッときました」

舞台は会社の煙草部屋、ほんの5分程の立ち話だ。

言うまでもなく、最初の僕の科白に対するレスポンスとして次の科白があるわけではない。

それでは僕が誰かにひどい事を言ってしまっただけである。そうなると僕はまず他でもない、僕自身のコミュ力を考えた方がよく、大文字のコミュ力について考える余裕はないはずなのだ。

そうではなく、その行間には僕がずっと前からコミュ力について考えていたオレオレ理論なるものが彼には延々と打たれている。

いや、やはりそれも少し違う。

不幸な事に、それは実のところ真っ赤な嘘で、本当は最初の科白を聞いた瞬間に彼の声や表情や所作から僕がその場のノリで分析して、でっち上げただけのただのアドリブだ。

そうなのだから、今から書く事を鵜呑みにしたり、無いとは思うが目くじらを立てては駄目である。

水溜りも凍り始めた真冬の夜半、その冷たい布団を暖めるまでのちょっとした間になんとなく気を紛らわせようと読まれるくらいでなくては吊り合わない。

概論

さて、まずはこのアドリブで提起されたコミュ力とは何かについて、その全体をざっくりとまとめておこう。

  • コミュ力とは、他者に対して自身がどれくらい共感するのかというレベリングを適時適切に設定できる能力である
  • そのレベリングを行うステージは大きく二段階に分けられる
  • 前者のステージで必要なコミュ力を一次コミュ力とし、後者を二次コミュ力とする
  • 一次、二次両方のステージにおいて、絶えず適切にレベリングできる主体をコミュ力が高い主体として定義する

一次コミュ力

まず状況の説明が必要だろう。

あの時はたしか、僕が一本目の煙草に火を付け、これから仕掛かろうと思っていたプログラミングについての記事を眺めていたと思う。

そこに最近チーム替えが行われ、知り合ったばかりの僕より若い同僚が声を掛ける。挨拶をする。その次の言葉が問題だった。

彼はとても突拍子も無い事を急に切り出した。 しかも、すごく僕に気を使って色々と計算した挙句にその言葉が出ていたようだった。

今その言葉がどうしても思い出せないのが悔しいのだが、兎に角ひどく驚いた事を覚えている。

『これはどういう事なんだろう』

直ぐ様、彼に始めて会った頃に聞いた話が蘇った。

「僕って結構コミュ障なんですよねえ」

僕はその時は間違いなくそれは嘘だと思った。
少なくても謙遜だと思った。彼はよく笑い、よく話す普通の好青年だったからだ。

そうだったからこそ、その驚きは大きかったのだ。 そこで直ぐ様思わず口を衝いて出た言葉が、冒頭のあの科白だった。

なぜそのような言葉が出てしまったかの後付けの理由を僕はその直後に語った。それをまとめたものが小見出しにもなっている一次コミュ力だ。

それでは一次コミュ力とは何か、僕と彼の話の順を追う形で簡単にまとめてみよう。

  1. これまでの僕の人生でコミュ障には二つのタイプがあった
    1. 他者の内面に対する共感能力が著しく低く、たえず全く気を使えないタイプのコミュ障(以下、共感不足型コミュ障)
    2. 他者の内面に対する共感能力が著しく高く、たえず気を使い過ぎてしまうタイプのコミュ障(以下、共感過剰型コミュ障)
  2. 彼は相手の内面に共感しようという圧力が強すぎるためにディスコミが起こりやすくなるタイプ、即ち共感過剰型のコミュ障に極稀に陥ってしまうという分析結果が出た
  3. もし他者とディスコミを起こすという事象の統計を十分に取ると、それはY軸にコミュニケーション成功確率を取り、X軸に他者への共感量を取ったある確率分布によってモデル化できて、その時の確率分布モデルはおそらく正規分布になると予想
  4. つまり、共感量が少なくても多くてもディスコミが起こる確率は高くなる
  5. しかし、難しいのは上記のモデルはあくまで十分にサンプリングすればの話で、特定の他者一人だけの事象だけを抽出した時には当然のようにずれているはずなので、いつも同じ共感量で安牌という話にはならない
  6. したがって、ディスコミを完全に起こさないようには勿論できないが、中央値が分かって、且つ狙ってその量を出せるようになれば、ある程度減らすことはできそう

以上を話した段階で、コミュ力とは何かについて彼と僕はかなり合意が取れていた、と思う。お互いこれがコミュ力について結構上手く説明できているモデルだと直感したようだった。

次回予告

しかしながら物語はそう簡単ではなかった。

僕と彼が気持良く二本目の煙草に火を付けた直後、 そこに新たな同僚が現れたのだ。

「お疲れっす」

ここから二次コミュ力についての話に突入していった。

そして僕達三人はこの一次コミュ力には包摂されない、より高次のコミュ力が存在する事に段々と気が付いていくことになる。

【講演会メモ】ニュートリノで地球を観る【GSAサイエンスセミナー】

登壇者である古賀真之准教授の自己紹介

  • 筑波で研究
  • 学位をとってからはずっとカムランドを研究

カムランドの紹介

カムランドの特徴

反電子型ニュートリノの反応

連続発光

ニュートリノが生まれる所

f:id:matekiki:20140722232424j:plain

※反ニュートリノと低エネルギーに特化

カムランド実験のこれまで

f:id:matekiki:20140720014228j:plain

地球ニュートリノでネイチャー本誌で表紙に

f:id:matekiki:20140720014248j:plain

地球の形成

ビッグバンとインフレーション宇宙

宇宙の誕生から38万年後である、「晴れ上がり」が研究の関心事

WMAP

2013年12月 宇宙の年齢がこれまでより正確に判明

137.72±0.59億年

BICEP2(南極で実験)による原子重力波の痕跡を観測

f:id:matekiki:20140722232458j:plain

原子重力波の痕跡を探す

南極、アンデス山脈、宇宙空間などでマイクロ波観測実験が行われている

我々の太陽ができるまで

  1. 星間物質の分布の偏りによる集積
  2. 超新星爆発
  3. 核融合で酸素まで生成
  4. 重金属の生成

どうして54億年前の超新星爆の残骸が含まれているといえるのか?

f:id:matekiki:20140722232556j:plain

ウラン同位体半減期を使って計算

マントルの対流によって放射性物質が運ばれる

f:id:matekiki:20140722232642j:plain

地球の階層構造

f:id:matekiki:20140722232727j:plain

地内部構造は震波の観測でよくわかっている

地球の放射熱

f:id:matekiki:20140722232802j:plain

47TW±2

f:id:matekiki:20140722232843j:plain

結構な精度で分かっている

ニュートリノで地球観測

透過法

f:id:matekiki:20140722232906j:plain

IceCube実験

f:id:matekiki:20140722232940j:plain

カミカンデの実験を南極の氷で行う
ニュートリノが飛んでくる角度を計測する

ハイパーカミオカンデ

f:id:matekiki:20140722233006j:plain

LAGUNA LAr実験

f:id:matekiki:20140722233105j:plain

ニュートリノで地球を見るとは?

放射線の分布を見る(PETに似てる)

ウラン、トリウムはどこにあるか

f:id:matekiki:20140722233130j:plain

地表付近、地殻に運ばれる

ベータ崩壊

f:id:matekiki:20140722233309j:plain

最終敵には鉛に行き着く

地球付近にあるか、一様なのかが分かる

原子力発電からでるものを引く

地殻付近にあるかどうかが分かる
それを裏付ける観測データ

f:id:matekiki:20140722233436j:plain

もう少し細かい解析結果

f:id:matekiki:20140722233543j:plain

各地球モデルとの比較

f:id:matekiki:20140722233342j:plain

観測レベルが上がれば、どういうモデルが正しいかわかる

ボレキシーノ実験

f:id:matekiki:20140722233312j:plain

カムランドより500m深い

f:id:matekiki:20140722233618j:plain

カムランド追証してくた

地球ニュートリノ観測の将来

f:id:matekiki:20140722233704j:plain

各地で大型の実験施設

f:id:matekiki:20140722233745j:plain

船や潜水艦に載せた実験施設も
原子力だとノイズがでるので、ディーゼル

f:id:matekiki:20140722234048j:plain

何故船に載せることがひつようなのかは、地球上のウラン等の分布が海上の方がマントルの寄与を効率的に調べることができるため

まとめ

f:id:matekiki:20140722231609j:plain

【Swift】公式ドキュメントをお昼休みにまとめてみた【第一回】

Swift

概要

今日の2時から4時まで行われたWWDC、リアルタイムで見られていた方お疲れ様でした。 私もストリーミングを見ながら、テンション高めで色々つぶやいていました。

さて、今回のWWDC原点回帰というかなんというか、エンジニアのエンジニアによるエンジニアのためのキーノートだったように思います。

デバイスの発表一個もなかったしw

ということで、そんなエンジニア得な発表で一番目を引いたのが掲題のSwiftでしょう。

今回はそのSwiftについて、公式ドキュメントの中のA Swift Tourをざっくり通勤電車の中で読んでみたので、そこで気になった点をお昼休みに適当にまとめてみましたという内容です。

WWDC2014

ちな、iOS

iPhone SDKだったころからいじってます。アプリも何個か出してます (最近はもっぱらTitaniumでJSでしか書いてないですが)

A Swift Tour

それでは旅にでましょう、ガリバーっぽく、スイフトだけに

論理行末は改行なのかな?

よく分からんが見た感じ

型宣言が後置修飾

Scalaスキーにはお馴染みですね。動的型付けやるのには後置修飾の方が省略とかしたときに直感的です。

let impInt = 70
let implDouble = 70.0
let expDouble: Double = 70

(一応マークダウンのコード引用で書いたんですが、swiftのシンタックスハイライトは当然ないですよね、分かります)

Swiftの関数は第一級関数

これもScalaとかモダンな言語やってると大変当たり前ですね。 何て説明してるかというと、

Functions are a first-class type. This means that a function can return another function as its value.

つまり、関数が値返すんで変数に詰めたり、関数の引数に関数入れたりできます。まあ、改めて言うまでもないですね。

structとかいうキーワード

こんな感じで、classキーワードと同じように使うようです

struct Card {
    var rank: Rank
    var suit: Suit
    func simpleDescription() -> String {
        return "The \(rank.simpleDescription()) of \(suit.simpleDescription())"
    }
}

classキーワードとの差異は、

One of the most important differences between structures and classes is that structures are always copied when they are passed around in your code, but classes are passed by reference.

とのこと。参照と値で異なる感じで

コンストラクタとデストラクタ

それぞれ、initとdeinit。

classの例

ざっくりこんな感じになるよう

class Square: NamedShape {
    var sideLength: Double
    
    init(sideLength: Double, name: String) {
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 4
    }
    
    func area() ->  Double {
        return sideLength * sideLength
    }
    
    deinit() {
        // do something
    }
}

まあ、違和感はほとんどないシンタックスになってます。 普通のPG(フルスタック?)なら、上の公式ドキュメントちょろちょろ眺めながら、今日からでもすんなり書けるのではないですかね、よく分かんないですけど。

あえて言えば、下記の仕組みがまだ詳細にA Swift Tour以降のドキュメントを読まないとよく分かりません。

  • willsetキーワード
  • mutingキーワード

お昼休み終わっちゃったんで、あとはまあおいおいやる気が出たときにでもノシ

【WordPress】土日で安くて速くてかっこ良いホームページを作ろう【1日目】

ご無沙汰です。

 
今回はタイトルの通り、
 

「なんか、かっこいいホームページ作りたいなあ。しかも安くて速いヤツ」

 
という抗い難い都合良い欲求が去来したので、カッとなって実質2日位でホームページ作ってみました。それがこちらになります↓
 

f:id:matekiki:20140511203133p:plain

 
 
備忘録、且つ昨今のインフラやホスティングサービス等、最新のWeb技術にあまり触れる機会が無い人にも是非その確実な進化と強力さを味わう一助となればと思い、あまり長く難しくならないように上手いことまとめてみたいと思います。
 
因みに、前の記事を書いてから1年以上が経って色々と環境が変わりまして、
 
社内SNS屋 -> 動画サービス屋
 
にぬるっとジョブチェンジしております。
今回の欲求も、
 

「サーバー調達、構築、サービスの作り込み、取り敢えず久しぶりに全部やりてえ」

 

というただの懐古厨だったのかもしれません。しょうがないね。

 

1.サーバーを調達しよう(30分)

さてはじめましょう。取り敢えずサーバー。これがないと始まりません。

コスパユーザビリティ、自由度色々調べましたが、ほぼほぼ現状下記一択でしょう。

さくらのVPS2G(石狩/東京/大阪)プラン初期費用無料キャンペーン(VPSサービス拡張記念)|さくらインターネットのVPS 

f:id:matekiki:20140422142346j:plain
 
さくらさんのVPS 2G、個人的には前職で使い倒したホスティングサービスです。
amazonのEC2と迷ったのですが、自分の場合は色々見積もるとこっちの方が安かったです。
あと似通ったサービス要件での流量のマックス想定として、下記のページも参考にさせて頂きました。
 
以上の理由でさくらVPS 2Gに決定したのですが、注意点としていくつか
  1. 稀によくOS立ち上げ時にネットワークが上手く確立されないことがあります。そんなときはVPNのコンパネから何回かリブートすると上手くいったりするかもです
  2. OSはCentOSがデフォルトです。これも個人的には使い慣れてるんで勿論デフォルトで使ってますが、嫌いな人は他のディストリとかよしなに再インスコして下さい
OSのブートとrootユーザでのSSHログインはできたでしょうか?
できた体で、最後にいつもやるお決まりの初期設定を軽くご紹介。
  • ホスト名の設定(piyo.comには設定したドメインを入力して下さい)

 hostname piyo.com

 

vim /etc/hosts

# 下記のように修正

127.0.0.1   piyo.com localhost

::1         piyo.com localhost

 

 

vim /etc/sysconfig/network

# 下記のように修正

HOSTNAME=piyo.com 

  • VPSコントロールパネルからOSを再起動
  • 言語設定

vim /etc/sysconfig/i18n 

 

# 下記のように編集

LANG="ja_JP.UTF-8"

  • yum のあぷで

  yum update

# 適当な作業ディレクトリに移動

 

# rpmダウンロード

wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm

 

# rpm インスコ

rpm -ivh remi-release-6.rpm

  • ユーザ設定

# ユーザ(SSH用、作業用)追加

useradd hoge

 

# パスワード設定

passwd fuga

 

# グループ設定

usermod -G wheel hoge

# rootユーザーによるログイン禁止

vim /etc/ssh/sshd_config

 

# 下記のように編集

# PermitRootLogin yes

PermitRootLogin no

# Port 22から変更

Port xxxx(任意の番号)

  • .bashrc

# ヒストリーサイズ最大、日付プレフィックス付加

vim ~/.bashrc

 

# 下記を追加

#SET HISTORY LINE SIZE

export HISTSIZE=999999

 

#ADD HISTORY DATE

export HISTTIMEFORMAT="%Y-%m-%d %T : "

まあ、とりまです(笑)

 

2.LNMPをインストールしよう(1時間)

LEMPかもしれません。
言わずもがなのLAMP構成のApacheがnginxになった形です。
 
ぶっちゃけA to nで大分幸せになれます。
今回のホームページ制作のモチベーションの一つもnginxの素晴らしさを味わいたいというのものでした。
 
構築手順としてはそんなに難しくはないのですが、よく分かんねえという方は、下記のページ等が参考になるかと思います。
 
それでは、詳しく手順を見て行きましょう。

# nginxのインスコ

yum install nginx

 

# phpライブラリのインスコ

yum install php-cli php-mbstring php-mysql

yum install --enablerepo=remi php-pecl-apc

yum install --enablerepo=remi php-fpm

 

# mysqlインスコ

yum install mysql-server

 

# phpmyadminインスコ

yum install phpmyadmin 

 ね、簡単でしょ☆

 

3.ミドルウェアの設定をしよう(2時間)

2でインストールしたミドルの設定をしましょう。

ここらへんから若干テクニカルな構築になってくるので、分からなくなったら適宜ググったりしてくだしあ。

 

あと基本中の基本ですが、設定ファイルをいじる時は必ずバックアップを取ってから行って下さい。

バックアップが無いと後々何かあった時、稀によく無駄な時間を過ごしたり、詰んだりします/(^o^)\

それと自己責任でオナシャスm(_ _)m

 

それでは見ていきましょう。

  • PHP-FPMの設定

vim /etc/php-fpm.d/www.conf

 

# 下記のように修正

; listen = 127.0.0.1:9000 

listen = /var/run/php-fpm/php-fpm.sock

 

; user = apache

user = nginx

 

; group = apache

group = nginx 

 

# php.iniの設定

vim /etc/php.ini

 

# 下記のように修正

; short_open_tag = Off

short_open_tag = On

 

; memory_limit = 128M

memory_limit = 2048M

 

; post_max_size = 8M

post_max_size = 512M

 

; upload_max_filesize = 2M

upload_max_filesize = 256M

 

;date.timezone =

date.timezone = Asia/Tokyo

 

;mbstring.language = Japanese

mbstring.language = Japanese

 

;mbstring.internal_encoding = EUC-JP

mbstring.internal_encoding = UTF-8

 

;mbstring.http_input = auto

mbstring.http_input = auto

 

;mbstring.http_output = SJIS

mbstring.http_output = auto

 

# my.cnfの修正

vim /etc/my.cnf

 

# 下記の記述を追加

character-set-server = utf8

 

# mysqldの起動

/etc/rc.d/init.d/mysqld start

 

mysql_secure_installationの実行

mysql_secure_installation

 

4.nginxの設定をしよう(3時間)

さて、今回の構築で一番やっかいなパートです。。。

 

1〜3までは、まあ誰がやっても似通った設定になるかと思いますが、このnginxの設定はなかなかそういうわけにも行きません。

 

なぜかといえば、まあWebサーバーの設定なので、やりたいことは十人十色である可能性が高いからです。

そのため、ここだけはこのように設定すれば良いという書き味はできないので、

下記のような方針で行きたいと思います。

 

  • オーソドックスな設定の仕方は下記ページやnginxの公式サイト等を参考にして下さい

 http://cross.hvn.to/?p=1874

  • 下記の要件に合う人はワンチャンそのままコピペしても期待通り動くかもしれません。
  1. サブドメインで運用したい人(私の場合、サブドメイン名は"web"です)
  2. キャッシュを管理画面以外は有効にしたい人 

 

以上です。

なお次章以降も基本的には上の要件に合った設定をWordPress等にしていきますので、

その点もご注意下さい。

 

それでは設定例をば。

# default.confの修正

vim /etc/nginx/conf.d/default.conf

 

 

# default.confを全て削除し、下記の記述をコピペ

##

# Fastcgi_cache Settings

##

fastcgi_cache_path /var/run/nginx-cache levels=1:2 keys_zone=WORDPRESS:4m inactive=7d max_size=50m;

fastcgi_cache_key "$request_method$scheme://$host$request_uri";

fastcgi_cache_use_stale error timeout invalid_header http_500;

 

#

# The default server

#

server {

    listen       80;

    server_name  piyo.com;

    rewrite ^/?$ http://web.$host$uri last;

}

 

server {

    listen       80 default_server;

    server_name  ~^(?<subdomain>.*)\.piyo.com;

    

    #Sitemap

    rewrite ^/sitemap_index\.xml$ /index.php?sitemap=1 last;

    rewrite ^/([^/]+?)-sitemap([0-9]+)?\.xml$ /index.php?sitemap=$1&sitemap_n=$2 last;

    

    #do_not_cache

    set $do_not_cache 0;

 

    # POST requests and urls with a query string should always go to PHP

    if ($request_method = POST) {

        set $do_not_cache 1;

    }

 

    # Don't cache uris containing the following segments

    if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {

        set $do_not_cache 1;

    }

 

    # Don't use the cache for logged in users or recent commenters

    if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") {

        set $do_not_cache 1;

    }

 

    location / {

        root   /var/www/html/$subdomain;

        index  index.html index.htm index.php;

    }

 

    #error_page  404              /404.html;

    error_page  404 /index.php?error=404;

 

    # redirect server error pages to the static page /50x.html

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   /usr/share/nginx/html;

    }

 

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

    #

    #location ~ \.php$ {

    #    proxy_pass   http://127.0.0.1;

    #}

 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    #

    #location ~ \.php$ {

    #    root           html;

    #    fastcgi_pass   127.0.0.1:9000;

    #    fastcgi_index  index.php;

    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

    #    include        fastcgi_params;

    #}

    location ~ \.php$ {

        try_files $uri =404;

        root   /var/www/html/$subdomain;

        fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;

        fastcgi_index  index.php;

        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;

        include        fastcgi_params;

        

        #Fast CGI Cache

        fastcgi_cache_bypass $do_not_cache;

        fastcgi_no_cache $do_not_cache;

        fastcgi_cache  WORDPRESS;

        fastcgi_cache_valid  200 1d;

        fastcgi_cache_valid  any 10d;

    }

 

    # deny access to .htaccess files, if Apache's document root

    # concurs with nginx's one

    #

    #location ~ /\.ht {

    #    deny  all;

    #}

    

    # CUSTOM

    gzip on; 

    gzip_http_version 1.0;

    gzip_types

    text/plain

    text/xml

    text/css

    application/xml

    application/xhtml+xml

    application/rss+xml

    application/atom_xml

    application/javascript

    application/x-javascript

    application/x-httpd-php;

    gzip_disable "MSIE[1-6]\.";

    gzip_disable "Mozilla/4";

    gzip_comp_level 1;

    gzip_proxied any;

    gzip_vary on;

    gzip_buffers 4 8k;

    gzip_min_length 1100;

}

 

5.WordPressをインストール、設定しよう(1時間)

 ようやく来ましたね、WPさんの登場です( ゚Д゚ノノ☆パチパチパチパチ

取り敢えずは、今日の構築はこの章で終わりです。

 

あまりWebの構築をされた事がない方を基準にここまで大体6.5時間くらいを目安にしています。どうでしょうか?

「余裕っすわ」

「もうちょい時間掛かりそう」

「てか、全く分からん。。。」

様々ご感想あるかと思いますが、最後になりますのであともう少しだけ楽しんでいってくださいノシ

 

それでは、WPを召喚致しましょう。

  • WPをインストールする

 # 適当なディレクトリに移動して下記を実行

wget http://ja.wordpress.org/latest-ja.tar.gz

 

# 解凍、オーナー、権限

 

tar -xvzf latest-ja.tar.gz

 

chown -R nginx.nginx wordpress

 

chmod -R g+s wordpress

 

# /var/www/html/webに移動(繰り返しになりますが、"web"はサブドメインです。 お好きな名前を付けてやって下さい)

mv wordpress/* /var/www/html/web/

 

  • 各サービスを起動

# nginxの起動

/etc/rc.d/init.d/nginx start

 

# PHP-FPMの起動

/etc/rc.d/init.d/nginx start

 

  • OS起動時に立ち上がるサービスの登録

 

chkconfig php-fpm on

chkconfig nginx on

chkconfig mysqld on

 

以上です。

 

さていよいよ残すはWPの画面を出すのみです!

下記URLをブラウザに入力して、ターンッとエンターキーを押して見て下さい!!

http://web.piyo.com/

どうでしょうか?

下記のような画面が出れば構築終了です。

f:id:matekiki:20140511220540j:plain

 

ここまで、7.5時間(想定)です。

 

やりました、一日で一からホームページが表示できました!

お疲れ様でした!!

 

 

【次回予告】

次回は土日で作ろうの2日目を予定しております。

とりまWordPressは表示できたけど、まだまだそれだけでは満足できません!

 

かっこいいWPに仕上げるべく実際に私が行った下記のようなことを今回と同じようにやってきたいと思います。

 

 

あとはー、そうそう再度になりますが気が向いたら是非是非今回作った下記ページにお気軽にお越し下さい。これからも気が向いたらちょくちょく魔改造していきたいと思います。

http://web.xtity.com/

それではノシノシ

【tiTokyo】LT - Crosswatcher

f:id:matekiki:20130216215128p:plain

 

■Speaker

kousuke_sima

A programmer of SNS, iPhone, Android.

[Products] Crosswatcher, RocketLink, PicTimer, PicTimer Pro

 

■アプリ概要

・テーマを選んでSNSやMediaを楽しむアプリ

・今週リリースしました(2013 / 2 / 13)

・テーマ

 

"You could find a new way to watch Web contents across SNS, Media, and Language."

 

 

■サイト

- App Store

http://appstore.com/Crosswatcher

 

- Google Play

https://play.google.com/store/apps/details?id=com.xtity.Crosswatcher

 

- Support Site

http://crosswatcher.com

 

■LT資料

 

f:id:matekiki:20130216220055j:plain

 

f:id:matekiki:20130216220112j:plain

 

f:id:matekiki:20130216220121j:plain

 

f:id:matekiki:20130216220134j:plain

 

f:id:matekiki:20130216220152j:plain

 

 

【tiTokyo】LANICA

f:id:matekiki:20130216145312j:plain

 

■Speaker

井口 恒太

LANICA co-founder

 

■LANICAとは?

・Platino / QuickTiGame2d

・Ti上で動くOpenGL ES ゲームエンジンを作ってる会社

・去年の10月に出来ました

 

■Carlos M Icaza

・Flash Liteやイラレの開発

・Corona SDKの生みの親

・Ansca Mobile社のCo-founder:元CEO

・Serial Entrepreneur in Silicon Valley

→ 2回起業はなかなかできない

→ かなりリスペクトされる事らしい

・Jeffが仲介して会うことに

・メンバーの半分位はAdobeマクロメディア出身

 

■Appceleratorのイノベーションファンド

・LANICAが第1号

 

■Platinoとは?

・Open GL 2D Game Engine

・2.5D、Isometric Engine等

 

■Open GL ES

デファクトスタンダード

・基本的に3DだがTiでは2Dで使ってる

 

■Sprite Sheets

・2Dのアニメーション

・パラパラ漫画

 

■パーティクル

・動的に計算して爆発等の表現をする

 

■Isometric Engine

シムシティっぽい表現

 

■Physic

・最近のゲームエンジンではデフォルトで必要とされている

・Box2Dというフレームワークを使っている

 

■まとめ

・PlatinoとはTiのためのゲームエンジン

 

■デモ(動画)

 ・パーティクル


【tiTokyo】Platino DEMO 01

 

・2.5D表現

 
【tiTokyo】Platino DEMO 02

 

■コード紹介

・createParticles("パーティクルファイル名")

・パーティクルデザイナーというツールで作ると楽

・createSpriteSheet("ファイル名")

・上記と同様にTexturePackerとかで作ると楽

 

■なぜPlatinoか?

・西海岸ではTi(JavaScript)でのゲーム作成は評価が高い

・モバイルへのスイッチに失敗すると会社の経営に大きな影響がある

ex. Facebook, Zinga

→ 生き馬の目を抜く状態。。。

 

■ブラウザからネイティブへ - WebView to Native

Facebookは一時期HTML5に賭けていたが。。。

→ HTML5 Gameは失敗だった

 

■日本のソーシャルゲーム

・一時期WebView全盛

→ ネイティブ & リッチにシフト

→ 最近はUnityがフィーバー状態

ex. パズドラ

 

■これまでの資産を低予算でモバイルに移植したい

ex.PCブラウザゲームFacebookゲーム、フラッシュゲーム

 

■FLASH資産

・Flashで作成したアニメーションをスマホゲームにも活用したい

・Animoとか良いよ

 

■BETA Program

・皆さんのサインアップをお待ちしております。

 

 

<質疑応答>

■Platinoの価格

・有料版

→ Unityよりは高くならないと思う

 

■Box2Dのデモ

・ピンボール

 

■サウンドは独自実装してる

・[iOS]Open AL

→ Titanium のコンポーネントは使っていない

・[Android]Open SL

・サウンドのスペシャリストがLANICAにはいる

→ 良くなっていきます

 

■PlatinoのViewとTi標準のViewは共存できるか?

→ できます

→ デバイスの性能もまちまちで場合によってはパフォーマンスに影響するので注意

ex. ゲームの中でチェックボックスを撃ち落としたい時とか注意

 

AndroidとiOSは機能差あるのか

→ 無いです

→ 突き詰めるとそれぞれのUIコンポーネントより下の層を扱うため

→ ただAndroidの場合はiOSより性能が出ないので注意

 

【tiTokyo】Appcelerator Deep Dive

f:id:matekiki:20130216140021j:plain

 

■Speaker

Ricardo Alcocer

Appcelerator Technical Evangelist

 

■自己紹介

・プラットフォームエバンジェリスト

・2009年からTitaniumを使ってアプリ開発

・いい意味でのハッカーです

 

 

■2種類のTitanium

・Titanium Classic

→ 多くのファイルが必要

MVCパターン

→ Appcelerator Alloy

 

 

■何故MVCフレームワークを作ったのか?

・大規模アプリ開発に有効

・必要なファイル数、コードの大幅な減少

・AlloyはJSからXMLを利用して高度なインタラクティブ性を提供

ex. FacebookアプリのメニューのようなUI

f:id:matekiki:20130216140918j:plain

 

■UI定義

XMLで記述

・かなりHTMLライクなコードスタイル

・class、onclick属性など

・コントローラの記述

 

■Themes

・見た目を変える。CSSのよう

・Themesという名前のディレクトリを作るだけ

・その下にそれぞれのテーマごとのスタイルを保存

・それらのテーマ設定をconfig.jsonファイルにjson形式で定義

 

Widget作成によるコードの再利用

・違うアプリに再利用できる。特にエンタープライズに重要

ex. Login機能

・感覚的にはミニアプリケーション

・アプリと同様のフォルダー構造

メタデータを、widget.jsonに記述

ex. バージョン

 

Widgetの使い方

・config.jsonファイルのdependencies項目にWidgetを定義する

xmlファイルに"Require"を定義して読み込む

・スニペット的に読み込む

→ xml中の定義がrequireの1行になる

→ イベントリスナーで登録するfunctionもWidgetのを使う

 

■アプリへのデータ追加

・Alloy → Backbone.jsの利用が可能

・Alloy Model

→ データベースを作成

SQL、プロパティを使うことも可能

 

■Modelファイル

・json形式

xmlファイルのdataCollection属性等でTableViewにバインドすることが可能

 

■TableRowを作る二つのやり方

①Alloy.createController("xmlファイル名", jsonObj)

xmlファイルにTableRowだけ定義

・tssファイルでデザインを別にすることもできる

→ デザインの変更をtssだけで行える

→ tssにプラットフォームごとに分けた定義もできる

 

②データバインディング

・dataCollectionでmodelを指定

・mustacheっぽいテンプレートを用意

・fetch({query: "select…"})もできる

・データを持ってくるときに毎回行う関数を指定することもできる

 

■Alloy More

・Sync Adapters

・Migrations

・Underscore.js対応

・CLI、ACS

 

■今日Alloy 1.0リリース!

f:id:matekiki:20130216143836j:plain

・Ti 3.0以降で対応

Android fastdev

・最新のadapter modelに対応した新たなSQL Adapter

・Ti のコンテンツアシストは3.1.0で正式対応

 

■Alloyの今後

・3.1でAlloyアプリのデバッグ機能

→ デバッグ行ずれ解消

・アプリの動的スタイリング

→ web上からテーマを取り込むことも今後可能になる

・全てのオブジェクトにデータバインディングを可能にしていきたい

 

■下記で公開しているよb

https://github.com/ricardoalcocer

 

twitter

@ricardoalcocer