SlideShare a Scribd company logo
Server-Side Swi*
2016.05.22@如法会#1
Daijiro Abe
Swi*
2016.05.22@如法会#1 Daijiro Abe
• 普段仕事ではiOS開発に使っています
• Server-Sideは趣味
• まだまだ発展途上
• 仕事で使うにはリスキー
• 将来的にはかなり期待
swi*env
2016.05.22@如法会#1 Daijiro Abe
• https://github.com/kylef/swi*env
• 複数のバージョンのSwi*を簡単に切り替えられる
• プロジェクト単位での切り替えにも対応
CLion
2016.05.22@如法会#1 Daijiro Abe
https://www.jetbrains.com/clion/
CLion
2016.05.22@如法会#1 Daijiro Abe
• IntelliJやAppCodeなどのJetBrains社の製品
• C/C++の開発環境だがSwi*にも対応
• コード補完
• デバッギング
Swi* Package Manager
2016.05.22@如法会#1 Daijiro Abe
• 標準のパッケージ管理システム
• Package.swi*に記述
• swi* build --init で雛形生成
• swi* build --fetch で依存ライブラリを取得
IBM Swi* Package Catalog
2016.05.22@如法会#1 Daijiro Abe
https://swi*pkgs.ng.bluemix.net/
Swi* Modules
2016.05.22@如法会#1 Daijiro Abe
https://swi*modules.com/
Problems
2016.05.22@如法会#1 Daijiro Abe
• Foundationが未完成
• NSURLSession, NSPredicate などがまだ使えない!
https://github.com/apple/swi*-corelibs-foundation/blob/master/Docs/Status.md
• PureSwi*/Swi*Foundation
• print()がバッファリングされる
• gulpでビルド&実行しているとログが出ない...
• fflush(stdout)
• String(format: , arguments:) が使えない...
• 4/12のバージョンで実装されたようです!
HotReload
2016.05.22@如法会#1 Daijiro Abe
• ソースコードを監視し変更があればビルド&リスタート
• ファイル監視
• gulp-watch
• gulp.watchだとファイルの追加に対応できない
• ビルドスクリプトの実行
• child_process.execFile()
• リスタート
• gulp-process.start()で実行
• gulp-procees.restart()でリスタート
Docker
2016.05.22@如法会#1 Daijiro Abe
FROM ubuntu:wily
RUN apt-get update
RUN apt-get install -qy git lsb-release curl libpython-dev libxml2-dev
clang libicu-dev build-essential
RUN git clone https://github.com/kylef/swiftenv.git /usr/local/swiftenv
ENV SWIFTENV_ROOT /usr/local/swiftenv
ENV PATH $SWIFTENV_ROOT/bin:$SWIFTENV_ROOT/shims:$PATH
RUN swiftenv install DEVELOPMENT-SNAPSHOT-2016-04-12-a
• swi*envでSwi*を入れる最小構成
Docker
2016.05.22@如法会#1 Daijiro Abe
: (続き)
# npm, gulp関係を入れる
RUN apt-get install -qy nodejs npm
RUN rm -rf /var/lib/apt/lists/* 
&& ln -s `which nodejs` /usr/local/bin/node
RUN npm install -g gulp
RUN mkdir /work 
&& cd /work 
&& npm install gulp gulp-process gulp-watch
• gulp関係を追加
Docker
2016.05.22@如法会#1 Daijiro Abe
: (続き)
# スクリプトのコピー
COPY gulpfile.js /work/gulpfile.js
COPY build.sh /work/build.sh
COPY dev.sh /dev.sh
RUN chmod +x /work/build.sh 
&& chmod +x /dev.sh
WORKDIR /src
CMD ["/dev.sh"]
• スクリプトのコピー
Docker
2016.05.22@如法会#1 Daijiro Abe
• gulpfile.js
1 var project = process.env.PROJECT_NAME;
2 var working_dir = process.env.WORKING_DIR;
3
4 var gulp = require('gulp');
5 var gulpProcess = require('gulp-process');
6 var watch = require('gulp-watch');
7 var fs = require('fs');
8 var exec = require('child_process').execFile;
9
10 gulp.task('copy',function(){
11 return gulp.src(['Package.swift','Sources/*.swift','Sources/**/*.swift','Tests/*.swift','Tests/**/*.swift'], {cwd:
working_dir, base: working_dir})
12 .pipe(gulp.dest('./'));
13 });
14
15 gulp.task('build', ['copy'], function(cb) {
16 exec('./build.sh', function(err,stdout,stderr) {
17 console.log(stdout);
18 gulpProcess.restart('swiftapp');
19 cb(err);
20 });
21 });
22
23 gulp.task('watch', function(){
24 gulpProcess.start('swiftapp','.build/debug/'+project);
25
26 watch(['Package.swift','Sources/*.swift','Sources/**/*.swift','Tests/*.swift','Tests/**/*.swift'],{ cwd:
working_dir },function(event){
27 gulp.start(["copy","build"]);
28 });
29 });
Demo
Docker
2016.05.22@如法会#1 Daijiro Abe
• 紹介したファイルのリポジトリ
https://github.com/d-abe/dockers/tree/master/swi*
• 細かい質問などあれば...
• Facebook
• メール
https://www.facebook.com/dai.abe
abe@flup.jp

More Related Content

PDF
イベント駆動AngularJS / 今から書くAngular 2.0
PPTX
kintoneの大規模フロントエンド開発とツール
PDF
Directiveで実現できたこと
PDF
Promise in Swift by PromiseKit - Swift勉強会 2015/05/25
PDF
Angular jsの継続的なバージョンアップ
PPTX
HOME'Sアプリ Swift化
PDF
AngularJSとFluxとRiotJSと
PDF
Riot.jsとフォームのデータバインディング
イベント駆動AngularJS / 今から書くAngular 2.0
kintoneの大規模フロントエンド開発とツール
Directiveで実現できたこと
Promise in Swift by PromiseKit - Swift勉強会 2015/05/25
Angular jsの継続的なバージョンアップ
HOME'Sアプリ Swift化
AngularJSとFluxとRiotJSと
Riot.jsとフォームのデータバインディング

What's hot (18)

PDF
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
PPTX
React native vol3
PPTX
BitriseでiOS/Androidアプリ開発が幸せになった話
PPTX
React meetup 3_eight
PDF
Riot.jsと仲良くなるための僕的tips
PPTX
Our Track to Modern Angular
PDF
俺とAngular JS 2
PDF
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
PPTX
What's New in WordPress 4.2
PPTX
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
PDF
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
PPTX
社内LTネタ ReactNative
PDF
Angular 4がやってくる!? 新機能ダイジェスト
PDF
ゲーム会社でのRuby : rails活用事例
PDF
iOS対応のCIサービス「Bitrise」を使ってみた
PDF
Easy easy2
PPTX
オレ流クラウドデザイン
PDF
noteをAngularJSで構築した話
あなたも出来る!webエンジニアがSwiftでリリースするためにやったこと
React native vol3
BitriseでiOS/Androidアプリ開発が幸せになった話
React meetup 3_eight
Riot.jsと仲良くなるための僕的tips
Our Track to Modern Angular
俺とAngular JS 2
超初心者でも大丈夫!AngularJSでフォームページをちょっとリッチに改造してみよう
What's New in WordPress 4.2
普段Reactを触ってる僕が Angularを触ってみた感想を共有する
【ヒカ☆ラボ】初心者向けSwiftアプリのリファクタリング
社内LTネタ ReactNative
Angular 4がやってくる!? 新機能ダイジェスト
ゲーム会社でのRuby : rails活用事例
iOS対応のCIサービス「Bitrise」を使ってみた
Easy easy2
オレ流クラウドデザイン
noteをAngularJSで構築した話
Ad

Viewers also liked (20)

PDF
Enumはデキる子 ~ case .Success(let value): ~
PDF
Server Side? Swift
PPTX
Server Side Swift
PDF
Server-side Swift
PDF
USD707352
PPTX
La Evolucion de los Sistemas Operativos
PPTX
Tipos de columnas
PDF
Презентація_ТВБВ_10002-07
PPTX
Los Mejores Del Mundo
PDF
Processor module Ax-som-cl335x reference
DOCX
Deber de tic
PPT
Kuliah 1 konsep jaringan
PDF
Determination of Milky Way Rotation Curve Through Observation of Redshift of ...
DOCX
letest my cv0509
PDF
buku-panduan-praktis-sekolah-ke-inggris-edisi-2-updated_cover
PPT
Asset Data Knowledge for AMSC
DOCX
“的”语法教案
PPS
Frances5 france
PPTX
Kurtz Marketing Code LLC Brand Establisher PowerPoint
Enumはデキる子 ~ case .Success(let value): ~
Server Side? Swift
Server Side Swift
Server-side Swift
USD707352
La Evolucion de los Sistemas Operativos
Tipos de columnas
Презентація_ТВБВ_10002-07
Los Mejores Del Mundo
Processor module Ax-som-cl335x reference
Deber de tic
Kuliah 1 konsep jaringan
Determination of Milky Way Rotation Curve Through Observation of Redshift of ...
letest my cv0509
buku-panduan-praktis-sekolah-ke-inggris-edisi-2-updated_cover
Asset Data Knowledge for AMSC
“的”语法教案
Frances5 france
Kurtz Marketing Code LLC Brand Establisher PowerPoint
Ad

Similar to Server-side Swift (19)

PDF
iOS豆知識ver0.0.5
PDF
Gitと出会って人生変わった テックヒルズ2013-03-22
PDF
Scalaでのプログラム開発
PDF
20130319勉強会
PDF
これからのJava言語と実行環境
PPTX
fastlane x iOSアプリのCI
PDF
Swift Library
PDF
CloudStack Ecosystem Day - OpenStack/Swift
PDF
SwiftでAndroidアプリ書けるってよ
PDF
[20130624]最近の開発環境について話してみる sakata
PDF
ALMツールたべくらべ
PDF
iPhoneとAndroidのアプリ開発最新潮流
PPTX
Jenkins と groovy
PDF
Scalaの現状と課題
PDF
Swift勉強会
PDF
sbt, past and future / sbt, 傾向と対策
PDF
Osc2012 TokyoSpring OpenStack Abstract
PDF
Gws 20120521 gradle
PPT
Osoljp201210 oi swift
iOS豆知識ver0.0.5
Gitと出会って人生変わった テックヒルズ2013-03-22
Scalaでのプログラム開発
20130319勉強会
これからのJava言語と実行環境
fastlane x iOSアプリのCI
Swift Library
CloudStack Ecosystem Day - OpenStack/Swift
SwiftでAndroidアプリ書けるってよ
[20130624]最近の開発環境について話してみる sakata
ALMツールたべくらべ
iPhoneとAndroidのアプリ開発最新潮流
Jenkins と groovy
Scalaの現状と課題
Swift勉強会
sbt, past and future / sbt, 傾向と対策
Osc2012 TokyoSpring OpenStack Abstract
Gws 20120521 gradle
Osoljp201210 oi swift

Server-side Swift

  • 2. Swi* 2016.05.22@如法会#1 Daijiro Abe • 普段仕事ではiOS開発に使っています • Server-Sideは趣味 • まだまだ発展途上 • 仕事で使うにはリスキー • 将来的にはかなり期待
  • 3. swi*env 2016.05.22@如法会#1 Daijiro Abe • https://github.com/kylef/swi*env • 複数のバージョンのSwi*を簡単に切り替えられる • プロジェクト単位での切り替えにも対応
  • 5. CLion 2016.05.22@如法会#1 Daijiro Abe • IntelliJやAppCodeなどのJetBrains社の製品 • C/C++の開発環境だがSwi*にも対応 • コード補完 • デバッギング
  • 6. Swi* Package Manager 2016.05.22@如法会#1 Daijiro Abe • 標準のパッケージ管理システム • Package.swi*に記述 • swi* build --init で雛形生成 • swi* build --fetch で依存ライブラリを取得
  • 7. IBM Swi* Package Catalog 2016.05.22@如法会#1 Daijiro Abe https://swi*pkgs.ng.bluemix.net/
  • 8. Swi* Modules 2016.05.22@如法会#1 Daijiro Abe https://swi*modules.com/
  • 9. Problems 2016.05.22@如法会#1 Daijiro Abe • Foundationが未完成 • NSURLSession, NSPredicate などがまだ使えない! https://github.com/apple/swi*-corelibs-foundation/blob/master/Docs/Status.md • PureSwi*/Swi*Foundation • print()がバッファリングされる • gulpでビルド&実行しているとログが出ない... • fflush(stdout) • String(format: , arguments:) が使えない... • 4/12のバージョンで実装されたようです!
  • 10. HotReload 2016.05.22@如法会#1 Daijiro Abe • ソースコードを監視し変更があればビルド&リスタート • ファイル監視 • gulp-watch • gulp.watchだとファイルの追加に対応できない • ビルドスクリプトの実行 • child_process.execFile() • リスタート • gulp-process.start()で実行 • gulp-procees.restart()でリスタート
  • 11. Docker 2016.05.22@如法会#1 Daijiro Abe FROM ubuntu:wily RUN apt-get update RUN apt-get install -qy git lsb-release curl libpython-dev libxml2-dev clang libicu-dev build-essential RUN git clone https://github.com/kylef/swiftenv.git /usr/local/swiftenv ENV SWIFTENV_ROOT /usr/local/swiftenv ENV PATH $SWIFTENV_ROOT/bin:$SWIFTENV_ROOT/shims:$PATH RUN swiftenv install DEVELOPMENT-SNAPSHOT-2016-04-12-a • swi*envでSwi*を入れる最小構成
  • 12. Docker 2016.05.22@如法会#1 Daijiro Abe : (続き) # npm, gulp関係を入れる RUN apt-get install -qy nodejs npm RUN rm -rf /var/lib/apt/lists/* && ln -s `which nodejs` /usr/local/bin/node RUN npm install -g gulp RUN mkdir /work && cd /work && npm install gulp gulp-process gulp-watch • gulp関係を追加
  • 13. Docker 2016.05.22@如法会#1 Daijiro Abe : (続き) # スクリプトのコピー COPY gulpfile.js /work/gulpfile.js COPY build.sh /work/build.sh COPY dev.sh /dev.sh RUN chmod +x /work/build.sh && chmod +x /dev.sh WORKDIR /src CMD ["/dev.sh"] • スクリプトのコピー
  • 14. Docker 2016.05.22@如法会#1 Daijiro Abe • gulpfile.js 1 var project = process.env.PROJECT_NAME; 2 var working_dir = process.env.WORKING_DIR; 3 4 var gulp = require('gulp'); 5 var gulpProcess = require('gulp-process'); 6 var watch = require('gulp-watch'); 7 var fs = require('fs'); 8 var exec = require('child_process').execFile; 9 10 gulp.task('copy',function(){ 11 return gulp.src(['Package.swift','Sources/*.swift','Sources/**/*.swift','Tests/*.swift','Tests/**/*.swift'], {cwd: working_dir, base: working_dir}) 12 .pipe(gulp.dest('./')); 13 }); 14 15 gulp.task('build', ['copy'], function(cb) { 16 exec('./build.sh', function(err,stdout,stderr) { 17 console.log(stdout); 18 gulpProcess.restart('swiftapp'); 19 cb(err); 20 }); 21 }); 22 23 gulp.task('watch', function(){ 24 gulpProcess.start('swiftapp','.build/debug/'+project); 25 26 watch(['Package.swift','Sources/*.swift','Sources/**/*.swift','Tests/*.swift','Tests/**/*.swift'],{ cwd: working_dir },function(event){ 27 gulp.start(["copy","build"]); 28 }); 29 });
  • 15. Demo
  • 16. Docker 2016.05.22@如法会#1 Daijiro Abe • 紹介したファイルのリポジトリ https://github.com/d-abe/dockers/tree/master/swi* • 細かい質問などあれば... • Facebook • メール https://www.facebook.com/dai.abe abe@flup.jp