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* buil...
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...
HotReload
2016.05.22@如法会#1 Daijiro Abe
• ソースコードを監視し変更があればビルド&リスタート
• ファイル監視
• gulp-watch
• gulp.watchだとファイルの追加に対応できない
• ビル...
Docker
2016.05.22@如法会#1 Daijiro Abe
FROM ubuntu:wily
RUN apt-get update
RUN apt-get install -qy git lsb-release curl libpy...
Docker
2016.05.22@如法会#1 Daijiro Abe
: (続き)
# npm, gulp関係を入れる
RUN apt-get install -qy nodejs npm
RUN rm -rf /var/lib/apt/li...
Docker
2016.05.22@如法会#1 Daijiro Abe
: (続き)
# スクリプトのコピー
COPY gulpfile.js /work/gulpfile.js
COPY build.sh /work/build.sh
COP...
Docker
2016.05.22@如法会#1 Daijiro Abe
• gulpfile.js
1 var project = process.env.PROJECT_NAME;
2 var working_dir = process.env...
Demo
Docker
2016.05.22@如法会#1 Daijiro Abe
• 紹介したファイルのリポジトリ
https://github.com/d-abe/dockers/tree/master/swi*
• 細かい質問などあれば...
• F...
Próxima SlideShare
Cargando en…5
×

Server-side Swift

414 visualizaciones

Publicado el

2016.05.22
#如法会

Publicado en: Ingeniería
  • Sé el primero en comentar

  • Sé el primero en recomendar esto

Server-side Swift

  1. 1. Server-Side Swi* 2016.05.22@如法会#1 Daijiro Abe
  2. 2. Swi* 2016.05.22@如法会#1 Daijiro Abe • 普段仕事ではiOS開発に使っています • Server-Sideは趣味 • まだまだ発展途上 • 仕事で使うにはリスキー • 将来的にはかなり期待
  3. 3. swi*env 2016.05.22@如法会#1 Daijiro Abe • https://github.com/kylef/swi*env • 複数のバージョンのSwi*を簡単に切り替えられる • プロジェクト単位での切り替えにも対応
  4. 4. CLion 2016.05.22@如法会#1 Daijiro Abe https://www.jetbrains.com/clion/
  5. 5. CLion 2016.05.22@如法会#1 Daijiro Abe • IntelliJやAppCodeなどのJetBrains社の製品 • C/C++の開発環境だがSwi*にも対応 • コード補完 • デバッギング
  6. 6. Swi* Package Manager 2016.05.22@如法会#1 Daijiro Abe • 標準のパッケージ管理システム • Package.swi*に記述 • swi* build --init で雛形生成 • swi* build --fetch で依存ライブラリを取得
  7. 7. IBM Swi* Package Catalog 2016.05.22@如法会#1 Daijiro Abe https://swi*pkgs.ng.bluemix.net/
  8. 8. Swi* Modules 2016.05.22@如法会#1 Daijiro Abe https://swi*modules.com/
  9. 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. 10. HotReload 2016.05.22@如法会#1 Daijiro Abe • ソースコードを監視し変更があればビルド&リスタート • ファイル監視 • gulp-watch • gulp.watchだとファイルの追加に対応できない • ビルドスクリプトの実行 • child_process.execFile() • リスタート • gulp-process.start()で実行 • gulp-procees.restart()でリスタート
  11. 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. 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. 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. 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. 15. Demo
  16. 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

×