yapc::hokkaido 2016...

Post on 09-Jan-2017

260 Views

Category:

Engineering

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

2017年、飛躍する技術と共に命懸けのダイブ!

「普段使い言語環境」更新によるスキルリセットサバイバルガイド

YAPC : Hokkaido 2016

株式会社ファームノート 谷内 元

まとめ• .NET とか Swift のオープンソース化、軽量化、クロスプラットフォーム化などの動きが加速

• C#、Java、Objective-C以外の言語を選択するとスクリプティングもいける

•スマホアプリ開発もゲーム制作もいけるし結構楽しそうじゃね?公式SDKが多いから glue 言語としても実用的だよね。

• Scala とかと比べて緩くはじめられるし挫折しないかもよ。新しい分野も勉強できそう。

• F# は優秀だったわ。Perl6(JVM) は辛かった。Swift は時間足りなかったよ、ごめんね。

P

P

A

P

Perl

P

A

P

Perl

Python

A

P

Perl

Python

A

PHP

Perl

Python

A?

PHP

Perl

Python

Anything but P*

PHP

今つかってる Pなんちゃらをやめて、普段使いの言語も変えて、スマホアプリ作って趣味プログラマになったり、ChatOpsとかなんか面白そうなことを始めてみたら?

いろいろできるよ

そう

.NETCocoaJVM

ならね!

ご静聴ありがとうございました

いろいろとは?

Silverlight は残念だったけど

俺の XAML 力が活かされる日が来たか!?

自己紹介•谷内元

自己紹介•谷内元

• WEB系エンジニア?

自己紹介•谷内元

• WEB系エンジニア?

•ある日、Terminal の文字サイズを小さくすると絵が描けることに気づいてしまった

自己紹介•谷内元

• WEB系エンジニア?

•ある日、Terminal の文字サイズを小さくすると絵が描けることに気づいてしまった

• Windows の putty の上に疑似ビデオレイヤーをつくり、その上で動作するゲームエンジンを開発、YAPC::Asia 2011 で発表

自己紹介•谷内元

• WEB系エンジニア?

•ある日、Terminal の文字サイズを小さくすると絵が描けることに気づいてしまった

• Windows の putty の上に疑似ビデオレイヤーをつくり、その上で動作するゲームエンジンを開発、YAPC::Asia 2011 で発表

•その功績がじわじわっと来て3年後に認められ、株式会社ファームノートのCTOに就任

この物語は、全て実話に基づいている

序章

僕等の時間は限られている

年のせいか物覚えも悪くなってきた

新しい言語は、自由奔放で気まぐれ

まるで若い娘のよう

若い女に振り回されるのは疲れた

いや、どうせなら若いのがいいが、

※プログラム言語の話です

どこにいけば

どこにいけば

新しい出会いと刺激もとめて

フルーツ盛り合わせは随分割高だったけどまあ美味しかったし

フルーツ盛り合わせは随分割高だったけどまあ美味しかったし

Backbone.jsUnderscore.jsjQuery/Grunt

SPA

これをねだられた時にはちょっと違うと思ったけど土日も働いてなんとかしたさ

これをねだられた時にはちょっと違うと思ったけど土日も働いてなんとかしたさ

gulpAngular

React/Redux

でもこれはないよねちょっと裏切られた気分だったよ所詮はそんな関係だったってこと

でもこれはないよねちょっと裏切られた気分だったよ所詮はそんな関係だったってこと

Angular2Gulp/npm

React/ReduxBabel/TypeScript

俺の失なわれた数年間苦い思い出の日々

もう戻らないもう騙されない

Ruby は若くてかわいくて指名No1だったけど

外人と結婚したし、実はもうおばさんだ。最近では Node に人気を奪われてるらしい

Ruby ❤️ RailsAssetPipeline

↓Node.js/npm/gulp

新しくてしかも堅実そうなこの娘は、

Sprint BootMicro Service

本当は、名を変え、整形して

厚化粧しただけって知ってる。

昔、馴染みだった客はみんな知ってること

Sprint BootSpringFramework

SpringMVC/SpringSecurity/SpringBatch/SpringIntegraion…

俺はどうすれば

私を導いてくれ、

こんな出来損ないの俺を何十年も支えてくれた perlやpython。

こんな出来損ないの俺を何十年も支えてくれた perlやpython。

普段使いから面倒なお仕事まで、

文句ひとつ言わずこなしてきてくれた古女房に別れを告げ、

こんな出来損ないの俺を何十年も支えてくれた perlやpython。

普段使いから面倒なお仕事まで、

文句ひとつ言わずこなしてきてくれた古女房に別れを告げ、

Scala に浮気、

こんな出来損ないの俺を何十年も支えてくれた perlやpython。

普段使いから面倒なお仕事まで、

文句ひとつ言わずこなしてきてくれた古女房に別れを告げ、

Scala に浮気、

結局泣いて帰ってきたのも、もう8年前のこと。

2016年の暮れも押し迫る中、

また性懲りもなくふらふらと彷徨いでたその先には、、、

2016年の暮れも押し迫る中、

また性懲りもなくふらふらと彷徨いでたその先には、、、

謎の看板とあなたを手招きして待っている極上の美女達!

「スクリプト言語禁止縛りスクリプティング coming in 2017 バトルロイヤル会場」へようこそ

「スクリプト言語禁止縛りスクリプティング coming in 2017 バトルロイヤル会場」へようこそ

...これは罠だ!

『あなたに私が使いこなせるかしら...』

蠱惑的な笑みからこぼれ出るは知性、麗しき才媛

F# on .NET Core/mono

『私、まだ何も知らないの、あなた色に染め上げて...』

未成熟な躰に美しいUIをまとったロリータ

Swift with CoreFoundation

『$#->%@!?』

それは安定を母とし混沌から産まれた -ジャングルの奥地で出会った青天の霹靂、ブラックスワン

制御できない野生の魅力に振り回されたい

Perl6 on JVM

やっと本題

.NETCocoaJVM

2016年方針が大きく変化

OpenSourceCrossPlatform

Lightweight and FastREPL and Intellisense

Visual Studio CodeEasy to Deploy

2017年完成へと向っていく

美しい蝶になる(予定)

.NET/C# Cocoa/Objective-C JVM/Java Pros.1

金になる求人 が多く、仕事の幅が広い

組み込み、スマートデバイス、デスクトップアプリ、ミッションクリティカルな大規模開発、unity のようなゲーム制作までなんでもあり

.NET/C# Cocoa/Objective-C JVM/Java Pros.2

長く使える学習 コストを低める仕掛けがある、覚えた知識は長く使える

公式 ドキュメントが充実しており、初心者向けの書籍も多い。

後方互換性 が保証される。サポート期間が長い。仕様が大胆に変更されることが少ない

.NET/C# Cocoa/Objective-C JVM/Java Pros.3

迷いが少ない開発効率や品質を高めるためのツールやガイドラインがある。標準品があり選定に迷いが少ない

標準のGUI構築ライブラリを持ち、高機能IDEや設計ツールが充実している

著名なサービスについては公式のSDKが用意されていたり、他言語と比べて公開されるのが早かったりすることがある

Windows や macOSにおける標準である。(Java は違うがポータビリティは高く、perlなどと比べると実行する OS を選ばないところがある)

高速で安定した VM 上で動作する。(Objective-Cはネイティブ)

.NET/C# Cocoa/Objective-C JVM/Java Cons

面白みがない

目新しさもなく今更勉強したくない

さくっと書いてさくっと試せない

デプロイ面倒そう

IoTとかの非力な環境に向いてなさそう

なんだかんだで大袈裟な仕掛けになりがちで案件受注したりとかのお仕事でないと厳しい

プロプライエタリな感じ

2016年から2017年にかけ、問題が解消されそう

あとは、刺激が欲しいってんなら

これらを

C#Objective-C

Java

こうすればいいんだろ

F#SwiftPerl6

型が軽い or 漸進的型付け命令型でも関数型でもOK軽量IDE+重量級IDE

十分に普及したエコシステムWeb Service との接続性が高く、新技術への追従が早い

F# (mono/.NET Core)

命令型で書く泥臭く書く

無理にCPSにしないTypeProviderなし

C#向けのSDKをつかうRecord 型にすらつきあう必要なし

F# -サンプル

Visual Studio Code を参照

こいつ動くぞ!

ニュータイプじゃなくても!

F# -ひとことでいうと優等生VisualStudio• Code 上で、コードを範囲選択するとREPL で実行。簡単

関数型• だけれど命令型で書ける

スクリプティングだから• 汚なく書くのが正解、ぐらいに思ってやると挫折しない

ドキュメントが• 充実

F# for fun and profit • みたいなサイトが素晴らしい

•新しい文法や概念を使うこともできるので、新鮮。勉強した気になる

F# -微妙なとこ。.NET に投資するか

•スクリプトから離れてプロジェクトを作ろうとすると、それなりに面倒になる

•特に mono 環境では forge でソリューションやプロジェクトを作るが、windows 開発の経験がないとピンとこない

• .NET Core もプロジェクト設定が独自のjsonファイルになっているけれど、XML のcsproj/fsprojに戻すみたい

F# -厳しいとこ• SQLite の dllファイルが動かず、情報もなし。Mono だと駄目みたい

• System.Data.SQLiteをビルドしたら直ったけれど、Windows の開発に加えて mono の知識も要求される

$ wgethttps://system.data.sqlite.org/blobs/1.0.103.0/sqlite-netFx-source-1.0.103.0.zip

$ xbuild System.Data.SQLite.2015.csproj /t:Rebuild /p:UseInteropDll=false /p:UseSqliteStandard=true

Perl6 (JVM版)

Perl5 より断然いい!言語は。

ライブラリが。。。

2016.11 Releaseビルド!

(一昨日の夜)

死亡!

2016.10 Releaseビルド!

死亡!

時はながれ…

2015.7 Releaseビルド!

通った!(昨日の朝方)

Perl6 – JVM backendMoar• はいいこだったのに、これは。。。

2016.11 • リリースは、OSX で JVM のメソッドの長さ制限にかかってビルド中に死亡

Docker • の Ubuntu でやってみたら compile は通ったが panda の bootstrap だかで落ちた

普通• にビルドできるリリースもあったはずだと思い、徐々に遡ったら 2015.7 のやつで通った。おとつい木曜の夜から始めてこの時点でもう明け方

Java • の標準クラスが動いたやったね!

Perl6 – JVM backendこんな• 感じ

use java::util::CRC32:from<Java>;

my $crc = CRC32.new();

•と思ったら自作のクラスが動かない。Jvminterop のドキュメントが4年前の更新でしかも途中で終っている

ソースコードを• 読み始めるが、先に nqpがあって~などの概念の学習から入る必要があった。この時点で昨日のAM10時くらい。

Bootloader • のまわりのソースを読むこと数時間。眠い

Perl6 – JVM backend

•自前の jar は、system class loader でなくて、boot class loader に読ませないとだめなのかと気付き、解決。昨日の昼過ぎ。つかれた

> use com::farmnote::Sample:from<Java>;

> my $sample = Sample.new();

> $sample.sayHello();

Hello

Perl6 – JVM backend•情報がない

•ソース読むにしても、JVM と asmの知識、perl6 の知識が必要

• 1日でやるのは無謀だった。1週間くらいあればなんとかなるかも、ならないかも。

•彼女はアフリカの奥地で、母親である java の遺伝子を起因とした謎の遺伝病を患っており、昔母親とただならむ関係であった考古学者の私は、病気の治療に生涯の全てを捧げるのであった。これは贖罪なのか、、、という妄想でなんとか乗り切った

•つまり普通の人にはまだ無理

Perl6 すばらしいので当面はMoarVMで。

Swift 3 (Linux版)

えっとね、なんか

うまく動かなかったよ

Linux で動くようにCoreFoundationを再実装して、

その上に Swift でFoundation を実装してるよ

macOSでやるといいよライブラリも揃ってるし

よくわからないけどさきっと詳しい人がなんとか

してくれるよ

なおったら起こしてね。

終章

Bad End Route

どうしてこうなったのだろう

Xamarinは 100% API ラップだった

つまり、Android と iOS の知識が両方とも必要だったんだ

勉強してる間に、Android の webviewは

速くなった

WebAssemblyはmono より速いんだって。

そう聞いたよ

今じゃみんなReact

俺が1本のアプリを Xamarinでつくっている間に、

彼等は2本のアプリをつくって10回はアップデートしてる

俺が実装技術の勉強をしている間に

彼等は UI/UX と効果測定を洗練させていってた

女房の perlは最近すっかり塞ぎ込み気味で元気がない

もっと一緒にいろんなコードを書きたいっていってたのにな

俺はどうすればよかったのだろう

Bad End

懇親会でHappy End について語りましょう!

お昼にスポンサートークもやりますので是非!

ご静聴ありがとうございました

top related