Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

497 views

Published on

こんな出来損ないの俺を何十年も支えてくれた perl や python。
普段使いから面倒なお仕事まで、文句ひとつ言わずこなしてきてくれた古女房に別れを告げ Scala に浮気、結局泣いて帰ってきたのも、もう8年前のこと。
2016年の暮れも押し迫る中、また性懲りもなくふらふらと彷徨いでたその先には、、、
謎の看板とあなたを手招きして待っている極上の美女達!

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

...これは罠だ!

『あなたに私が使いこなせるかしら...』
蠱惑的な笑みからこぼれ出るは知性、麗しき才媛
F# on .NET Core/mono

『私、まだ何も知らないの、あなた色に染め上げて...』
未成熟な躰に美しいUIをまとったロリータ
Swift with CoreFoundation

『$#->%@!?』
それは安定を母とし混沌から産まれた - ジャングルの奥地で出会った青天の霹靂、ブラックスワン
制御できない野生の魅力に振り回されたい
Perl6 on JVM

Published in: Engineering
  • Be the first to comment

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

  1. 1. 2017年、飛躍する技術と共に命懸けのダイブ! 「普段使い言語環境」更新による スキルリセットサバイバルガイド YAPC : Hokkaido 2016 株式会社ファームノート 谷内 元
  2. 2. まとめ • .NET とか Swift のオープンソース化、軽量化、クロ スプラットフォーム化などの動きが加速 • C#、Java、Objective-C 以外の言語を選択するとス クリプティングもいける • スマホアプリ開発もゲーム制作もいけるし結構楽し そうじゃね?公式SDKが多いから glue 言語としても 実用的だよね。 • Scala とかと比べて緩くはじめられるし挫折しないか もよ。新しい分野も勉強できそう。 • F# は優秀だったわ。Perl6(JVM) は辛かった。Swift は時間足りなかったよ、ごめんね。
  3. 3. P P A P
  4. 4. Perl P A P
  5. 5. Perl Python A P
  6. 6. Perl Python A PHP
  7. 7. Perl Python A? PHP
  8. 8. Perl Python Anything but P* PHP
  9. 9. 今つかってる Pなんちゃ らをやめて、普段使いの 言語も変えて、スマホア プリ作って趣味プログラ マになったり、ChatOps とかなんか面白そうなこ とを始めてみたら?
  10. 10. いろいろできるよ
  11. 11. そう
  12. 12. .NET Cocoa JVM ならね!
  13. 13. ご静聴ありがとう ございました
  14. 14. いろいろとは?
  15. 15. Silverlight は残念だったけど 俺の XAML 力が活かされる 日が来たか!?
  16. 16. 自己紹介 • 谷内元
  17. 17. 自己紹介 • 谷内元 • WEB系エンジニア?
  18. 18. 自己紹介 • 谷内元 • WEB系エンジニア? • ある日、Terminal の文字サイズを小さくすると絵 が描けることに気づいてしまった
  19. 19. 自己紹介 • 谷内元 • WEB系エンジニア? • ある日、Terminal の文字サイズを小さくすると絵 が描けることに気づいてしまった • Windows の putty の上に疑似ビデオレイヤーをつ くり、その上で動作するゲームエンジンを開発、 YAPC::Asia 2011 で発表
  20. 20. 自己紹介 • 谷内元 • WEB系エンジニア? • ある日、Terminal の文字サイズを小さくすると絵 が描けることに気づいてしまった • Windows の putty の上に疑似ビデオレイヤーをつ くり、その上で動作するゲームエンジンを開発、 YAPC::Asia 2011 で発表 • その功績がじわじわっと来て3年後に認められ、株 式会社ファームノートのCTOに就任
  21. 21.
  22. 22. この物語は、全て 実話に基づいている
  23. 23. 序章
  24. 24. 僕等の時間は 限られている
  25. 25. 年のせいか 物覚えも悪くなってきた
  26. 26. 新しい言語は、 自由奔放で気まぐれ まるで若い娘のよう
  27. 27. 若い女に 振り回されるのは疲れた
  28. 28. いや、どうせなら 若いのがいいが、 ※プログラム言語の話です
  29. 29. どこにいけば …
  30. 30. どこにいけば … 新しい出会いと 刺激もとめて
  31. 31. フルーツ盛り合わせは 随分割高だったけど まあ美味しかったし
  32. 32. フルーツ盛り合わせは 随分割高だったけど まあ美味しかったし Backbone.js Underscore.js jQuery/Grunt SPA
  33. 33. これをねだられた時には ちょっと違うと思ったけど 土日も働いてなんとかしたさ
  34. 34. これをねだられた時には ちょっと違うと思ったけど 土日も働いてなんとかしたさ gulp Angular React/Redux
  35. 35. でもこれはないよね ちょっと裏切られた気分だったよ 所詮はそんな関係だったってこと
  36. 36. でもこれはないよね ちょっと裏切られた気分だったよ 所詮はそんな関係だったってこと Angular2 Gulp/npm React/Redux Babel/TypeScript
  37. 37. 俺の失なわれた数年間 苦い思い出の日々 もう戻らない もう騙されない
  38. 38.
  39. 39. Ruby は若くてかわいくて 指名No1だったけど 外人と結婚したし、実はもうおばさんだ。 最近では Node に人気を奪われてるらしい Ruby ❤️ Rails AssetPipeline ↓ Node.js/npm/gulp
  40. 40. 新しくてしかも 堅実そうな この娘は、 Sprint Boot Micro Service
  41. 41. 本当は、 名を変え、整形して 厚化粧しただけって知ってる。 昔、馴染みだった客は みんな知ってること Sprint Boot SpringFramework SpringMVC/SpringSecurity/SpringBatch/Spri ngIntegraion…
  42. 42.
  43. 43. 俺はどうすれば
  44. 44. 私を導いてくれ、
  45. 45. こんな出来損ないの俺を何十年も支えてくれた perl や python。
  46. 46. こんな出来損ないの俺を何十年も支えてくれた perl や python。 普段使いから面倒なお仕事まで、 文句ひとつ言わずこなしてきてくれた古女房に別れを告げ 、
  47. 47. こんな出来損ないの俺を何十年も支えてくれた perl や python。 普段使いから面倒なお仕事まで、 文句ひとつ言わずこなしてきてくれた古女房に別れを告げ 、 Scala に浮気、
  48. 48. こんな出来損ないの俺を何十年も支えてくれた perl や python。 普段使いから面倒なお仕事まで、 文句ひとつ言わずこなしてきてくれた古女房に別れを告げ 、 Scala に浮気、 結局泣いて帰ってきたのも、もう8年前のこと。
  49. 49. 2016年の暮れも押し迫る中、 また性懲りもなくふらふらと彷徨いでたその先には、、、
  50. 50. 2016年の暮れも押し迫る中、 また性懲りもなくふらふらと彷徨いでたその先には、、、 謎の看板とあなたを手招きして 待っている極上の美女達!
  51. 51. 「スクリプト言語禁止縛りスクリプ ティング coming in 2017 バトルロイ ヤル会場」へようこそ
  52. 52. 「スクリプト言語禁止縛りスクリプ ティング coming in 2017 バトルロイ ヤル会場」へようこそ ...これは罠だ!
  53. 53. 『あなたに私が使いこなせるかしら...』 蠱惑的な笑みからこぼれ出るは知性、 麗しき才媛 F# on .NET Core/mono
  54. 54. 『私、まだ何も知らないの、あなた色に染 め上げて...』 未成熟な躰に美しいUIをまとったロリータ Swift with CoreFoundation
  55. 55. 『$#->%@!?』 それは安定を母とし混沌から産まれた - ジャングルの 奥地で出会った青天の霹靂、ブラックスワン 制御できない野生の魅力に振り回されたい Perl6 on JVM
  56. 56. やっと本題
  57. 57. .NET Cocoa JVM
  58. 58. 2016年 方針が大きく変化
  59. 59. OpenSource CrossPlatform Lightweight and Fast REPL and Intellisense Visual Studio Code Easy to Deploy
  60. 60. 2017年 完成へと向っていく 美しい蝶になる(予定)
  61. 61. .NET/C# Cocoa/Objective-C JVM/Java Pros.1 金になる 求人 が多く、仕事の幅が広い  組み込み、スマートデバイス、デスクトップアプ リ、ミッションクリティカルな大規模開発、 unity のようなゲーム制作までなんでもあり
  62. 62. .NET/C# Cocoa/Objective-C JVM/Java Pros.2 長く使える 学習 コストを低める仕掛けがある、覚えた知識は 長く使える 公式 ドキュメントが充実しており、初心者向けの 書籍も多い。 後方互換性 が保証される。サポート期間が長い。 仕様が大胆に変更されることが少ない
  63. 63. .NET/C# Cocoa/Objective-C JVM/Java Pros.3 迷いが少ない  開発効率や品質を高めるためのツールやガイドラインがあ る。標準品があり選定に迷いが少ない  標準のGUI構築ライブラリを持ち、高機能IDEや設計ツー ルが充実している  著名なサービスについては公式のSDKが用意されていた り、他言語と比べて公開されるのが早かったりすることが ある  Windows や macOS における標準である。 (Java は違うがポータビリティは高く、perl などと比べると実 行する OS を選ばないところがある)  高速で安定した VM 上で動作する。(Objective-Cはネイ ティブ)
  64. 64. .NET/C# Cocoa/Objective-C JVM/Java Cons  面白みがない  目新しさもなく今更勉強したくない  さくっと書いてさくっと試せない  デプロイ面倒そう  IoT とかの非力な環境に向いてなさそう  なんだかんだで大袈裟な仕掛けになりがちで案件 受注したりとかのお仕事でないと厳しい  プロプライエタリな感じ
  65. 65. 2016年から2017年にかけ、 問題が解消されそう
  66. 66. あとは、 刺激が欲しいってんなら これらを C# Objective-C Java
  67. 67. こうすればいいんだろ F# Swift Perl6
  68. 68. 型が軽い or 漸進的型付け 命令型でも関数型でもOK 軽量IDE+重量級IDE 十分に普及したエコシステム Web Service との接続性が 高く、新技術への追従が早い
  69. 69. F# (mono/.NET Core)
  70. 70. 命令型で書く 泥臭く書く 無理にCPSにしない TypeProvider なし C#向けのSDKをつかう Record 型にすら つきあう必要なし
  71. 71. F# - サンプル Visual Studio Code を参照
  72. 72. こいつ動くぞ! ニュータイプ じゃなくても!
  73. 73. F# - ひとことでいうと優等生 VisualStudio• Code 上で、コードを範囲選択すると REPL で実行。簡単 関数型• だけれど命令型で書ける スクリプティングだから• 汚なく書くのが正解、ぐら いに思ってやると挫折しない ドキュメントが• 充実 F# for fun and profit• みたいなサイトが素晴らしい • 新しい文法や概念を使うこともできるので、新鮮。 勉強した気になる
  74. 74. F# - 微妙なとこ。.NET に投資するか • スクリプトから離れてプロジェクトを作ろう とすると、それなりに面倒になる • 特に mono 環境では forge でソリューション やプロジェクトを作るが、windows 開発の 経験がないとピンとこない • .NET Core もプロジェクト設定が独自の json ファイルになっているけれど、XML の csproj/fsproj に戻すみたい
  75. 75. F# - 厳しいとこ • SQLite の dll ファイルが動かず、情報もなし。Mono だと駄目みたい • System.Data.SQLite をビルドしたら直ったけれど、 Windows の開発に加えて mono の知識も要求される $ wget https://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
  76. 76. Perl6 (JVM版)
  77. 77. Perl5 より断然いい! 言語は。 ライブラリが。。。
  78. 78. 2016.11 Release ビルド! (一昨日の夜)
  79. 79. 死亡!
  80. 80. 2016.10 Release ビルド!
  81. 81. 死亡!
  82. 82. 時はながれ…
  83. 83. 2015.7 Release ビルド!
  84. 84. 通った! (昨日の朝方)
  85. 85. Perl6 – JVM backend Moar• はいいこだったのに、これは。。。 2016.11• リリースは、OSX で JVM のメソッドの 長さ制限にかかってビルド中に死亡 Docker• の Ubuntu でやってみたら compile は通っ たが panda の bootstrap だかで落ちた 普通• にビルドできるリリースもあったはずだと思 い、徐々に遡ったら 2015.7 のやつで通った。おと つい木曜の夜から始めてこの時点でもう明け方 Java• の標準クラスが動いたやったね!
  86. 86. Perl6 – JVM backend こんな• 感じ use java::util::CRC32:from<Java>; my $crc = CRC32.new(); • と思ったら自作のクラスが動かない。Jvminterop のド キュメントが4年前の更新でしかも途中で終っている ソースコードを• 読み始めるが、先に nqp があって~など の概念の学習から入る必要があった。この時点で昨日の AM10時くらい。 Bootloader• のまわりのソースを読むこと数時間。眠い
  87. 87. Perl6 – JVM backend • 自前の jar は、system class loader でなくて、 boot class loader に読ませないとだめなのか と気付き、解決。昨日の昼過ぎ。つかれた > use com::farmnote::Sample:from<Java>; > my $sample = Sample.new(); > $sample.sayHello(); Hello
  88. 88. Perl6 – JVM backend • 情報がない • ソース読むにしても、JVM と asm の知識、perl6 の 知識が必要 • 1日でやるのは無謀だった。1週間くらいあればなん とかなるかも、ならないかも。 • 彼女はアフリカの奥地で、母親である java の遺伝子 を起因とした謎の遺伝病を患っており、昔母親とた だならむ関係であった考古学者の私は、病気の治療 に生涯の全てを捧げるのであった。これは贖罪なの か、、、という妄想でなんとか乗り切った • つまり普通の人にはまだ無理
  89. 89. Perl6 すばらしいので 当面は MoarVM で。
  90. 90. Swift 3 (Linux版)
  91. 91. えっとね、 なんか うまく動かなかったよ
  92. 92. Linux で動くように CoreFoundation を再実装して、 その上に Swift で Foundation を実装してるよ
  93. 93. macOS でやるといいよ ライブラリも揃ってるし
  94. 94. よくわからないけどさ きっと詳しい人がなんとか してくれるよ なおったら起こしてね。
  95. 95. 終章
  96. 96. Bad End Route
  97. 97. どうしてこうなったの だろう Xamarin は 100% API ラップ だった
  98. 98. つまり、 Android と iOS の知識が 両方とも必要だったんだ
  99. 99. 勉強してる間に、 Android の webview は 速くなった
  100. 100. WebAssembly は mono より速いんだって。 そう聞いたよ
  101. 101. 今じゃみんな React 俺が1本のアプリを Xamarin でつくっている間に、 彼等は2本のアプリをつくって 10回はアップデートしてる
  102. 102. 俺が実装技術の 勉強をしている間に 彼等は UI/UX と効果測定 を洗練させていってた
  103. 103. 女房の perl は 最近すっかり 塞ぎ込み気味で 元気がない もっと一緒にいろんな コードを書きたいって いってたのにな
  104. 104. 俺はどうすれば よかったのだろう
  105. 105. Bad End
  106. 106. 懇親会で Happy End について 語りましょう!
  107. 107. お昼に スポンサートーク もやりますので是非!
  108. 108. ご静聴ありがとう ございました

×