収録時間: 58:51 | Download MP3 (42.8MB)
Laurent Sansonetti joins me to talk about RubyMotion, Apple, Swift, React Native, LLVM, RubyKaigi, and Ramen.
- Laurent Sansonetti
- The LLVM Compiler Infrastructure Project
- Automatic Reference Counting
- Ruby 2 Keyword Arguments
- Introduce "Safe navigation operator"
- React Native
miyagawa: I'm here at the RubyKaigi in Tokyo, and joins me today is Laurent Sansonetti.
lrz: Yep that's me.
miyagawa: He's a creator of RubyMotion. Yesterday, he did a really great presentation about RubyMotion. I think we are going to talk a little bit about it today.
lrz: Awesome! It's nice to be here.
miyagawa: Glad to have you here. Can you introduce yourself, for listeners?
lrz: Sure. I'm afraid I cannot do it in Japanese... I have to speak in English.
miyagawa: That's fine.
lrz: I can say, Minasan Konnichiwa.
lrz: Yes, my name is Laurent, I'm the founder of a company called HipByte, it's a very small company of five people, and our product is RubyMotion. Before founding HipByte I was an employee of Apple for about eight years, working from Cupertino.
That's pretty much all - I've been a Ruby programmer for most of my career, even if I'm more C programmer on a daily basis, but Ruby is my favorite high level language. I switched from - I discovered Ruby when I was actually a Perl enthusiast at high school. I'm sorry I know you like Perl. (laughs)
miyagawa: Well, yeah. (laughs)
lrz: I used to like Perl a lot, until I wrote a very big piece of software and I could not maintain it. I realize that now of course it’s because I was not a good programmer. Anyone can write bad code in any language.
miyagawa: Well, that's true. But I don't think that applies to you.
lrz: At that time it was kind of weird, so... anyway, I discovered Ruby by accident actually, in IRC someone say "you should try Ruby," because I was about to switch to Python. But eventually I discovered Ruby, and I've been doing Ruby stuff for a while.
miyagawa: I think, before doing the RubyMotion, you were also working on MacRuby.
lrz: Yeah, so actually when I discovered Ruby, the first thing I ever did was, so I was a Linux user, very early, so I was using Linux, so I was actually a GNOME contributor, I was a member of the GNOME project. And there, I actually contributed to the Ruby bindings, there was a project called Ruby-GNOME2. I think those still exist today. I contributed to a lot of bindings, which are in, like, Ruby wrappers on top of the GTK, GLib, and all the GNOME C libraries, and then I wrote an application there, the first Ruby-GNOME2 application that was actually packaged inside distributions of Linux. Those were applications to manage books, so many books. That was before the Kindle, you know, when you got to buy physical books. I had too many books in my apartment, didn't know where they were...
And then eventually, I was hired by Apple, so I had to use a Mac, and discovered the Mac. First it was painful, and then eventually, I enjoyed using a Mac. And there, I contributed to the RubyCocoa project. RubyCocoa is a bridge between Ruby and Objective-C Runtime. Eventually I convinced my boss at Apple to package RubyCocoa inside OS X. As of OS X Leopard, we had RubyCocoa installed, and it's still installed as far as I know. So if you have a Mac, you should have RubyCocoa installed there. It's still there.
But we realized that RubyCocoa wasn't as good, right, full fledged applications. There were performance problems, and stability issues, it was using too much memory, and so, because it was a bridge I proposed to my boss, "we should do something more interesting, we should rewrite Ruby on top of the existing runtime technology. Instead of doing a bridge we would just have a native solution." And they agreed. So we - and this was MacRuby. So, this was - originally it was a fork of CRuby. But eventually we started to replace bits and pieces, at the very end it was a totally new implementation.
miyagawa: what time was that around?
lrz: MacRuby was created in 2006, if I remember correctly, 2006 or 2007.
miyagawa: At that time, Ruby - CRuby version was something like...
lrz: It was 1.8 and 1.9 was experimental. So we forked 1.9, we forked 1.9 because we wanted the YARV bytecode machine. That was the experimental bytecode machine. But eventually it was integrated, and now of course everyone is using it, but at that time it was very experimental, people were saying, "oh... is it really going to work one day?"