[AppleScript] MacでExcelからUTF-8でxml書き出しをするAppleScript

2012/05/16

2018/06/15追記
こちらのスクリプトは古くなったため残念ながら動かないです。
JavaScriptで変換するプログラムを作ったのでよろしければご覧ください。

>> [JavaScript] タブ区切りのExcelデータをxmlにするツール作った

以下、もとの記事
=====

こんにちは。きんくまです。
タイトルが長いです。

必要になったので、作りました。
MacでExcelからUTF-8でxml書き出しをするAppleScriptです。

こんな感じのデータを

excel_xml

こんな感じのxmlに変換

<?xml version="1.0" encoding="utf-8"?>
<root>
  <row>
    <id>001</id>
    <age>15.0</age>
    <name>田中</name>
    <hobby>野球</hobby>
  </row>
  <row>
    <id>002</id>
    <age>32.0</age>
    <name>斎藤</name>
    <hobby>サッカー</hobby>
  </row>
以下略
  <row>
    <id>010</id>
    <age>30.0</age>
    <name>なまえ5</name>
    <hobby>登山</hobby>
  </row>
</root>

>> ソースコード一式と使い方セットのダウンロード


12/05/16更新
セルの値が数値のとき、常用対数形式(1.3E+3)から10進数表記(13000)へ自動変換
Brati’sLover numberToString

以前にWinで同じことをするやつをVBAで作ったような気がするのですが、
ソースコードがどっかいっちゃったのと、xml書き出すためだけにWinのExcel立ち上げるのが
面倒だなと思いまして。(Win版は私のParalellsには入っていないのです。)

Mac版のExcelで別名で保存できるxml形式だと余計なタグが入っていたり、
VBAでテキスト出力だとShift-JISで出力されたりと困ったなあという状態になっておりました。

それでMac版のVBAの書き出し方法をさらに調べていたら、WinにはあるADODB.Streamというのがないそうです。
そんなとき、ARKA ROYさんという方のこのエントリを発見
>> Excel on Mac: Goodbye VBA, Hello AppleScript

どうやらMac版ExcelのVBA使うよりもAppleScript使った方がいいよ。
とのこと。

>> AppleScriptのリファレンスはこことか

AppleScript使ったことなかったけど、オリジナルのソースがあったので、
必要なところだけリファレンスで調べてなんとか完成したのが下のソースです。

これでデータの取り込み作業が楽になるといいなって。

あと、このページのリンク先のWordドキュメント
http://bernard.rey.free.fr/ExcelVBA-AppleScript.doc
によるとAppleScriptとVBAで関数呼び出したり呼び出されたりできるらしいっす。(試してないので未確認。スミマセン)

(*
author Tasuku Maeda @KinkumaDesign 2012
http://www.kuma-de.com

Mac版ExcelからUTF8で改行コードLFのXMLを出力します。
1階層のみ対応しています。

まずMac版Excelで変換したいファイルを開いてから、このAppleScriptを実行(Run)します。
実行はRunボタンを押せば可能です。
書き出されたxmlファイルはExcelファイルと同じフォルダに出力されます。
このAppleScriptは同階層に置く必要はありません。


例)
同梱されているsampledata.xlsxを開いてRunを押すと、
output.xmlが同じフォルダに出力されます。

Thanks for ARKA ROY who wrote this article
http://talesoftech.blogspot.jp/2011/05/excel-on-mac-goodbye-vba-hello.html

And also thanks for Brati'sLover who is numberToString's author
http://applescript.bratis-lover.net/library/number/#numberToString

*)

-- 設定
-- settings

-- 出力ファイル名
-- output file name
set outputFileName to "output9.xml"

-- ルートエレメント名
-- root element name
set rootEleName to "root"

-- 行エレメント名
-- row element name
set rowEleName to "row"

-- タブスペース。タブとしてのスペースの数を変更したい場合はこれを変更。
-- tab space. If you want to adjust number of space as tab, modify this.
set tabspace to "  "

-- //settings



set outputStr to ""

tell application "Microsoft Excel"
	activate
	
	local decimal_adjust, first_part, second_part, converted_number
	
	set outFile to (path of active workbook)
	set outFile to (outFile & ":" & outputFileName)
	--	set openFile to open for access file outFile with write permission
	--	set eof openFile to 0
	set outputStr to outputStr & "<?xml version=\"1.0\" encode=\"utf-8\"?>" & linefeed & "<" & rootEleName & ">" & linefeed
	--	write "<?xml version=\"1.0\" encoding=\"utf-8\"?>" & linefeed & "<" & rootEleName & ">" & linefeed to openFile as «class utf8»
	
	set numColumn to 0
	set elementNames to {}
	
	repeat
		set numColumn to (numColumn + 1)
		set cellVal to (value of cell 1 of column numColumn of active sheet)
		if (cellVal = "") then
			exit repeat
		else
			copy cellVal to the end of elementNames
		end if
	end repeat
	set numColumn to (numColumn - 1)
	
	set rowIdx to 2
	repeat
		set rowStr to (tabspace & "<" & rowEleName & ">" & linefeed)
		set emptyFlags to 0
		repeat with columnIdx from 1 to numColumn
			set cellVal to (value of cell rowIdx of column columnIdx of active sheet)
			if (cellVal is not "") then
				set cellVal to my numberToString(cellVal)
			end if
			set eleName to (item columnIdx of elementNames)
			set rowStr to rowStr & tabspace & tabspace & "<" & eleName & ">" & cellVal & "</" & eleName & ">" & linefeed
			if (cellVal is not "") then
				set emptyFlags to (emptyFlags + 1)
			end if
		end repeat
		set rowStr to rowStr & tabspace & "</" & rowEleName & ">" & linefeed
		if emptyFlags > 0 then
			set outputStr to outputStr & rowStr
			--			write rowStr to openFile as «class utf8»
		else
			exit repeat
		end if
		
		set rowIdx to (rowIdx + 1)
	end repeat
	
	set outputStr to outputStr & ("</" & rootEleName & ">" & linefeed)
	--	write ("</" & rootEleName & ">" & linefeed) to openFile as «class utf8»
	--close access openFile
	
	set openFile to open for access file outFile with write permission
	set eof openFile to 0
	write outputStr to openFile as «class utf8»
	close access openFile
end tell




--This function is from Brati'sLover
--http://applescript.bratis-lover.net/library/number/#numberToString
on decPt()
	return character 2 of (0.0 as string)
end decPt

on numberToString(this_number)
	local this_number, decimal_adjust, first_part, second_part, converted_number
	try
		set this_number to this_number as string
		if this_number contains "E+" then
			set x to offset of my decPt() in this_number
			set y to offset of "+" in this_number
			set z to offset of "E" in this_number
			set decimal_adjust to characters (y - (length of this_number)) thru ¬
				-1 of this_number as string as number
			if x is not 0 then
				set first_part to characters 1 thru (x - 1) of this_number as string
			else
				set first_part to ""
			end if
			set second_part to characters (x + 1) thru (z - 1) of this_number as string
			set converted_number to first_part
			repeat with i from 1 to decimal_adjust
				try
					set converted_number to ¬
						the converted_number & character i of second_part
				on error
					set converted_number to converted_number & "0"
				end try
			end repeat
			return converted_number
		else
			return this_number
		end if
	on error eMsg number eNum
		error "Can't numberToString: " & eMsg number eNum
	end try
end numberToString

LINEで送る
Pocket

[iOS] CoreDataの本読んだ

2012/05/8

(」・ω・)」うー!(/・ω・)/にゃー! きんくまです。
ニャル子さん面白いです。

さて、仕事でCoreDataが必要になりまして、CoreDataの本を読んでいました。

そんで、参考資料とかを書いておきます。

Apple公式

チュートリアルをすると概要がつかめていいかもしれないです。
でも、Location使う必要なかったんじゃ、、。
>> Core Data Tutorial for iOS
>>(和)iOS Core Dataチュートリアル

ざっくり概念をつかんでわからないところは、網羅された方で確認してみるといいかも。

>> Core Data Programming Guide
>> (和)Core Dataプログラミングガイド

iOS 4 Programming Cookbook

この本のCoreDataの章は、Appleのチュートリアルと同じくらいコンパクトにまとまっていて、ざっくりつかむのは良いと思いました。

Core Data for iOS: Developing Data-Driven Applications for the iPad, iPhone, and iPod touch

この本は、かなり詳しく載っています。細かいオプションの説明から、最適化まで。
しかも、それほど分厚くなくてコンパクト。
けっこう気に入りましたです。

よくApress社の本を買っていたんだけど、この本を出しているAddison-Wesleyって
会社のもなかなか良いですね。
Apressは紙質のせいか結構分厚くなっちゃうんだけど(辞書より分厚いとかって)、
こっちはそれと比べて普通サイズの厚さなのでいいなと。
Pearson Educationって下に書いてあるからもともと教育系のピアソン社のグループ会社なのかもしんない。

大分先の10月だけどOpenGLESの本も出るみたい。欲しいな。

Learning OpenGL ES for iOS: A Hands-on Guide to Modern 3D Graphics Programming

CoreDataとは違うけど便利だった本

Objective-C逆引きハンドブック

ずっと前に買ったときは、Objective-Cにそれほど慣れておらず、そもそも書かれている内容がわかんなかったので、積み本状態でした。
でもふとこの間見返してみたら、「なにこれすごいわかりやすい」情報じゃないかと思った本。
KVO、スレッドのところとか、一通りやってみたところ、おーなるほどという感じ。

そうそう近日(5月末)に第二版が出るみたいです。

改訂2版 Objective-C逆引きハンドブック

LINEで送る
Pocket

[iOS] 生のbitmapdataの扱いのメモ

2012/04/25

調べ中ですが。忘れぬようメモを書いておきます。

リアルタイムに画像処理をする方法を調べてました。
処理方法は大きく2つ。

1. UIImageを変更して、UIImageViewに反映させる
2. OpenGLESのテクスチャに貼付けて、テクスチャ画像に更新をかける

1は実装が比較的楽な方法。だけど実行速度が遅い。CPUによる計算。
2は実装が難しい方法。だけど実行速度が速い。GPUによる計算。

UIImageを変更して、UIImageViewに反映させる

実践! iPhoneアプリ開発 カメラアプリの作り方 (4) – 写真にエフェクトをかける

本も出している木下さんによる解説。
CGImageRef > CGDataProviderRef > CFDataRefと分解していき、画像データのコピーを確保。
各ピクセルの色情報にアクセスして、変更を加える。
あとは、コピーデータをもとに、分解と逆順でCGImageRefまで作っていったあと、UIImageを生成する。

各ピクセルにアクセスしているときに、RGBAではなく、ABGRという逆順でデータが保持されているところに注意する。何で逆順なのかはわかんない。リトルエンディアン?

もう一つ分解しない方法。

brandontreb.com Image Manipulation: Retrieving And Updating Pixel Values For A UIImage

Brandon Trebitowskiさんによる作成方法。
こちらは、値変更用のCGContextRefを作って、各ビットにアクセス。さらに画像作成用にもう一回CGContextRefを作ってからCGImageRefを作成というパターン。

OpenGLESのテクスチャに貼付けて、テクスチャ画像に更新をかける

AppleのSample codeを参考にする。これはOpenGLES1.1バージョン。

GLImageProcessing

基本的なカラーエフェクトが全て入っているすごいサンプルコード。
POTはPower Of Two(2のN乗)の略だと思われ。


あと、エフェクト処理の基本的な考え方。サンプルコードからリンクされている。
どちらもPaul Haeberliさんによるもの。

Image Processing By Interpolation and Extrapolation
元画像とエフェクト用の画像をアルファブレンドするとよい。

Matrix Operations for Image Processing
RGBも4×4行列で制御できまっせ。


さらに、これを押し進めてGPUによる画像処理のフレームワークを作成した人がいた。
Brad Larsonさんによるもの。
GPUImage framework

UIViewを継承したGPUImageViewに設定すればエフェクトがかけられるみたいだけど、試してない。

LINEで送る
Pocket

[iOS] グラフィックス関係のおおざっぱな説明 Quarz 2D, Core Graphics, Core Animation

2012/04/20

こんにちは。きんくまです。

iOSのグラフィックス関係はすごく大きくて、最初はどこから手をつけていいのかわかりませんでした。
そんで、概要みたいのが合った方が、理解が早いと思い、私のおおざっぱな理解をメモしておきます。

グラフィックスには、大きく2つの要素があります。
描画の方法と、描画される入れ物です。

描画について

大きく分けて、2つです。
Quartz 2D APIとOpenGL ES。

Quartz 2D APIはCore Graphics frameworkの一部です。
メソッドの頭文字にCGとつくものがそれだったりします。

OpenGL ESはAppleとは別のところで決めているものです。

今回はQuarz 2Dについてもう少し書きます。

Quarz 2DにはGraphics Contextというのがあります。
グラフィックスの文脈なんですが、これって何なのでしょう?

これは、簡単に言うと、描画先を指定するものです。
例えば、画面だったり、ビットマップだったり、PDFだったり、
描画先を指定できるのです。

同じ描画命令(例えば矩形を描けとか)を書いたとしても、
その描画先を変えることで、PDFに描画したり、画面の中のあるパーツに描画したり
といったことが可能になるんですね。

Quarz 2Dの実際の描画としてはこんな感じです。

1. 描画されるものの指定
2. 描画の開始命令
3. 各描画命令
4. 描画の終了命令

具体例を2つほど。

+ (UIImage *)imageWithClipedRect:(UIImage *)sourceImage clipedRect:(CGRect)rect
{
    UIImage *clipedImage;
    UIGraphicsBeginImageContext(rect.size); //1. 描画されるものの指定 + 2. 描画の開始命令
    //3. 各描画命令
    [sourceImage drawAtPoint:CGPointMake(-rect.origin.x, -rect.origin.y)];
    clipedImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext(); //4. 描画の終了命令
    return clipedImage;
}

上のコードは、あるUIImageの中から指定した矩形部分のUIImageを作り出して返すものです。
この場合は、GraphicsContextがビットマップになっています。

- (void)drawRect:(CGRect)rect
{
    CGContextRef ctx = UIGraphicsGetCurrentContext(); //1. 描画されるものの指定

    //3. 各描画命令
    CGContextSetAllowsAntialiasing(ctx, NO);

    CGContextSetRGBStrokeColor(ctx, 1, 1, 0, 1.0);
    CGContextMoveToPoint(ctx, 0, 1);
    CGContextSetLineWidth(ctx, 1.0);
    CGContextAddLineToPoint(ctx, self.frame.size.width, 1);
    CGContextStrokePath(ctx);
}

今度のコードはUIViewの中のコードです。2と4が省略されています。
UIViewの中のdrawRect:は特別なメソッドで、デフォルトだと自分の中のCALayerに描画します。
描画先がわかっているので、描画開始命令と終了命令が省略されているのだと思います。
あと、CALayerというのは、描画される入れ物の方です。あとで説明します。

入れ物について

入れ物については、Core Animationというのが関係しています。
Core Animationというので、アニメーションのことだけかと思うのですが、アニメーションされる
入れ物のこと(CALayer)も扱っています。

UIViewには次の性質があります。

1. UIViewの子供を持つことができる(コンテナ)
2. CALayerという描画できる入れ物を持っている
3. タッチイベントを受け取ることができる

1と3は、普通に出てくることなので、ご存知の方も多いと思います。ではCALayerとは何でしょうか?

CALayerの性質

1. CALayerの子供を持つことができる(コンテナ)
2. Quarz 2Dを使って中に描画することができる
3. タッチイベントは受け取れない

UIViewにはCALayerを自分直下にひとつだけもつことが可能です。
そのCALayerには、さらにいくつも子供のCALayerを吊るすことが可能です。
CALayerは描画処理だけを担当しているので、非常に速い描画が可能です。
描画のことだけを考えた場合は、UIViewをいくつも入れ子にするのではなく、
CALayerを入れ子にした方が良いです。

また、CALayerはそれ自体に、3Dのアフィン変換を適用したりできます。
3Dモデリングを表示したりするのには、OpenGLが必要ですが、
3Dのエフェクト処理、例えば手前と奥に矩形を表示するとか、
Appleのカバーフローなんかも、これだけで作成可能です。

あとは、CALayerにアニメーション処理をつけることも可能です。
Core Animationにはimplicit(暗黙)とexplicit(明示)の2つのタイプのアニメーションがあります。
layerのプロパティ、例えばframeを変えたりすると、自分でexplicitしていなければ、
implicitが適用されて勝手にアニメーションされます。

具体的なコードはまたの機会に説明しますが、概要がわかってしまえば、
いろんなところにあるサンプルコードを読みやすくなると思います。

今回はデモとして、タップするたびに、くるくるまわるCALayerを作ってみました。
今回はアニメーションの設定を自分でしていないのでimplicitのアニメーションが適用されます。

CATransform3d-demo1

#import "KKViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface MyLayer : CALayer
- (void)flipToAngle:(float)angle;
@end

@implementation MyLayer

- (id)initWithLayer:(id)layer
{
    self = [super initWithLayer:layer];
    if(self){
        [self setNeedsDisplay];
    }
    return self;
}

- (void)flipToAngle:(float)angle
{
    CATransform3D trans = CATransform3DIdentity;
    trans.m34 = -1.0 / 100; //パースペクティブ
    trans = CATransform3DRotate(trans, angle / 180.0 * M_PI, 0, 1, 0);
    self.transform = trans;
}

//CALayerはdrawRectでなくこっち
- (void)drawInContext:(CGContextRef)ctx
{
    CGContextSetRGBFillColor(ctx, (rand() % 90)/90.0 + 0.1, 0.0, 0.0, 0.5);
    CGContextFillRect(ctx, CGRectMake(0, 0, 50, 50));
}

@end


@interface KKViewController (){
    NSMutableArray *mylayers;
    int numberOfLayer;
}

@end

@implementation KKViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    
    numberOfLayer = 50;
    srand(time(NULL));
    mylayers = [[NSMutableArray alloc] init];
    CGRect rect;
    int layerW = 50;
    for(int i = 0; i < numberOfLayer; i++){
        rect = CGRectMake(rand() % (320 - layerW), rand() % (480 - layerW), layerW, layerW);
        MyLayer *myLayer = [[MyLayer alloc] initWithLayer:[CALayer layer]];
        myLayer.frame = rect;
        [self.view.layer addSublayer:myLayer];
        [myLayer release];
        [mylayers addObject:myLayer];
    }

}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    for(int i = 0; i < numberOfLayer; i++){
        MyLayer *myLayer = [mylayers objectAtIndex:i];
        [myLayer flipToAngle:rand() % 360];
    }
}

@end

■追記

CALayerの具体的な使い方は、こないだ買った本がすごくわかりやすかったです。
>> iPhoneアプリ開発のコツとツボ35

あとは、何といってもAppleのドキュメントです。
私は日本語の方は読んでませんが、日本語訳もされてます。
>> https://developer.apple.com/jp/devcenter/ios/library/japanese.html

いっぱいあるのですが、今回関係するのは以下の2つの項目です。
iOS描画および印刷ガイド(Drawing and Printing Guide for iOS)
Core Animationプログラミングガイド(Core Animation Programming Guide)

LINEで送る
Pocket

[iOS] Xcodeを強制終了させる

2012/04/20

こんにちは。きんくまです。
4月から、子供の保育園の保護者会の役員やることになりまして、いろいろと忙しい日々をすごしております。
子供2人も入れてたら、いるうちは1回はやらないといけないかと思うので、やっとります。
会計なんていう面倒な役を引き受けてしまったです。

さて、そんな春のひととき、皆様いかがお過ごしですか。
私の方はiOSアプリの開発をやっております。

そんで、iOS4からのマルチタスクのおかげで、Xcodeが固まるときがありますです。
具体的にはこんなときです。

アプリAデバッグ起動 > シミュレータ立ち上がる。
シミュレータのホームボタンを押して、押した本人はデバッグが終わったつもり。
でも、マルチタスクのおかげで、まだXcode側はデバッグ中と認識(stopボタンを押さないとおわらない)

そんな状態で、アプリBをデバッグ起動。
アプリAはデバッグ中なので、Xcodeが2重にデバッグ起動させている状態となり、
どちかのstopボタンを押しても、固まって動かない。ていうか反応が帰ってこない。みたいな。

そんで、Xcodeを強制終了させようとDockから命令を送っても駄目。

なので、コマンドラインからやってみました。

 
ps -ax | grep Xcode

とかいうコマンドを打つとこんな感じに表示されます。

  252 ??         0:03.16 /Applications/Xcode.app/Contents/Library/LoginItems/backgroundinstruments.app/Contents/MacOS/backgroundinstruments
11647 ??         9:47.65 /Applications/Xcode.app/Contents/MacOS/Xcode -psn_0_1589636
11774 ??         0:00.30 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Overlays/Interface Builder Cocoa Touch Tool --portName 3FC550F0-BFC1-4A98-A674-27F41C3623BF
11776 ??         0:00.35 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Overlays/Interface Builder Cocoa Touch Tool --portName BD93133C-9004-4C62-B3BE-9A3078E2AEE3
12149 ??         0:01.09 /Applications/Xcode.app/Contents/Developer/usr/bin/ibtoold
12152 ??         0:00.33 /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Overlays/Interface Builder Cocoa Touch Tool --portName 4E25EC4D-27B8-4205-8530-4928F3DF1B92
12199 ttys004    0:00.00 grep Xcode

一番先頭についているのがプロセス番号です。

このコマンドは
ps -ax > 実行中のプロセス一覧を表示する
grep Xcode > 一覧の中からXcodeという名前のついているものを表示
という意味です。

そんで、今回は上から2番目の

11647 ??         9:47.65 /Applications/Xcode.app/Contents/MacOS/Xcode -psn_0_1589636

が目標物です。このプロセスを殺します。(物騒ですね)

kill 11647

killコマンドで該当プロセスを強制的につぶせます。11647というのはプロセス番号というやつで、起動するたびに毎回かわります。
これで、無事にXcodeを終了できました。

Xcodeを再起動すると何事もないように、開発が再開できます。
でも、無理矢理つぶしているので、心配な方はOSの再起動が確実かと思います。

LINEで送る
Pocket

[日記] プチコンmkII

2012/03/19

こんにちは。きんくまです。

クラブニンテンドーマガジンというメルマガが任天堂からときどき送られてくる。
そんで、たまたまかいてあったプチコンmkIIというソフトが気になってしまった。

>> 公式サイト

BASICという言語を使って、プログラムを作る。
できるものはさまざまで、ゲームやらシーケンサーやら。いろいろらしい。

私自身はいわゆるマイコンブームというのを経験したことはなくて、気がついたら横で通り過ぎていた。みたいな。
学生の頃は、パソコン(マイコン?)を持っていなかったので、ベーマガを一度も買ったことがなかった。
ただ、存在はずっと知っていて、本屋でファミ通の横に置いてあったりして、時々立ち読みをしていた。
このコードを打つとゲームが出来るのかー。なんて思いながら。

ときおり昔話に出てくる、「ベーマガのプログラムを打ち込んでプログラミングを勉強した」というエピソードを
よく聞いたので、今回自分もぜひ体験してみたい!と思い購入を決断。

ただ、このソフトはダウンロード専用らしかった。手元には初期型DSしかない。
なので、DSiか3DSを買わないといけないのだけど、思い切ってDSiLLという選択をしてみた。
3DSだと表示がぼやけるらしいし、文字が大きくなるならいいかなと。

そんで、おととい届いたので、早速初心者向け講座をひととおりやった。
>> プチコン:初心者むけ講座
この時代だからなのか、ビット演算で処理するところが割と出てきていて萌えてしまった。

他言語でのプログラミングの経験があれば、言語仕様自体はそれほど困ることはなかったです。
、、のだけれど、やはり実際には勝手が違っている。

プログラムを書くこと自体は、コードヒントが出るので割と楽。
でも読むことが画面が小さい分苦手。変数名も短く省略していたりするので、これ何の省略?なんて考えつつ読む。

今のところ文字だけでもゲームが作れて、うれしいし、なんだか可愛い。
あと、文字だけでなく、グラフィック系(ビットマップ)も出せるので、これだけでかなりのことができる。
音楽や効果音、絵の素材も最初からたくさん用意されているので、ロジックだけ考えたりすれば、すぐに何かが作れるというのも魅力です。

感想として、「これはリアルタイムでやってたら、ハマルわー。」と思った。

あと2chの該当スレが検索でひっかかったので、見ていたらやはりすごい人はいるものですね。

>> プチコンで遊ぼう!
>> プチコン 1画面プログラム

今回の記事は、そんな感じでプチコンをちょうどやっているところに、
Flashでいつもすごいゲームを作っているABA先生がプチコンのことを書いていたので、急いで書いたのでした。
>> プチコンで広がるおっさんプログラミングコミュニティ

最近ついったーを全く見ていないネット内引きこもりなので、このあたりの盛り上がりを全く知らなかった、、。

追記
ニコ動見たら、すごすぎてまたまた驚いた。
タグ プチコン を含む動画の検索結果

LINEで送る
Pocket

[JS] CSS3 のイージング

2012/03/19

前に、ratweenというjQueryのプラグインを作りまして。
CSS3のアニメーションをするライブラリです。

そんで、今日zeptoっていうモバイル向けjQuery互換ライブラリを使ってみようと思い、ドキュメントを見ていたら、
animateという項目がありました。
これはCSSのアニメーションを設定できるものです。

そんで、それにカスタムイージングカーブを設定できるんです。
ちなみに、このカスタムイージングカーブ自体は、zepto独自の機能ではなく、CSSトランジションの機能です。

そんで、そういや前にratweenのコードのイージング部分書くのに、Flashでツール作ったよなー。
とパソコンの中身を探してたら見つかりました。
こんなの。

tween_curve

でも、今日検索したら全く同じことをすでにJSでやっているページがあったので、ご紹介です。
Leinさんという方が作ってるみたいです。
>> Ceaser

てか、すでに1年前ぐらいに作られてたのね、、。

LINEで送る
Pocket

ページトップへ戻る