Be a library developer!
-
Upload
kouhei-sutou -
Category
Technology
-
view
552 -
download
0
description
Transcript of Be a library developer!
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Be a library developer!
Remember than Imagine
Kouhei SutouClearCode Inc.
2013/06/01
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Table of contentsShare this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Share the goalShare this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
This talk's goal
You knowhow to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Better?
Showby example
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API
context.savecontext.circle(50, 50, 10)context.strokecontext.restore
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Point
context.save # <- Pointcontext.circle(50, 50, 10)context.strokecontext.restore # <- Point
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better
context.save docontext.circle(50, 50, 10)context.strokeend
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Why
Why is it better?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Because
Because it's more Ruby-ish
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Ruby-ish?
-ish ==Similar to others
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Is "similar" better?
Similarity makes consistency✓
Consistency makes readability✓
Readability is important to develop better softwares
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Is "readability" important?Readability makes maintenability
✓
Maintenability is needed for improving your softwares repeatedly
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
So
Ruby-ish isbetter
Let's validate the example
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember
File
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember: File
# Setupfile = File.open(path)file.read# Teardownfile.close
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember: File
# SetupFile.open(path) do |file| file.readend # Teardown
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API (reprise)
context.save # Setup context.circle(50, 50, 10)context.strokecontext.restore # Teardown
from cairo gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better (reprise)
context.save do # Setup context.circle(50, 50, 10) context.strokeend # Teardown
from cairo gem
Wrap up
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Better
Ruby-ish
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
In other words
Similar to others
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The goal (reprise)
You knowhow to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
In other words
You knowwhat is "similar" and do similarly
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Describe key ideaShare this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
RememberthanImagine
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember than Imagine
Knowledge
Remember
???
Imagine
Easy! Di�cult...
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
To remember,
Remember
???
Imagine
Easy! Di�cult...How to get?
Knowledge
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
How to get knowledge?
Experience✓
Ask✓
Observe✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Experience!
Experience ← Do this �rst!✓
Ask✓
Observe✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
RememberthanImagine
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Apply the key ideaShare this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The goal (reprise)
You knowhow to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Apply the key idea
Knowledge
Remember
Bettersoftwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
To achieve the goal,
What should you experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
What experience?
Knowledge
Remember
BettersoftwaresKnowledge
What experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Rubyist
Knowledge
Remember
BettersoftwaresKnowledge
Rubyist experience!
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Rubyist?
You experienced!
Try
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter
window.get_property("opacity")# What is better API???
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter (better)
window.get_property("opacity")window.opacity # Better
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Now,
You found "remember" is
"di�cult"
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Di�cult!
Remember!?What is
"Ruby-ish"!?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Di�cult?
Knowledge
Remember
???
Imagine
Di�cult...Easy!
Di�cult???
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Because
You don't have experience about"Remember than
Imagine"
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No "remember" experience
BettersoftwaresKnowledge
Rubyist experience!
Remember
No experience
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Your status
Experience✓
Ask (Heard) ← You are here!✓
Observe✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
To achieve the goal,
What should you experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
What experience?
BettersoftwaresKnowledge
Rubyist experience!
Remember
What experience?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Library developer
BettersoftwaresKnowledge
Rubyist experience!
Remember
Library developer
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Library developerConsiders about
easy to use APIas a Rubyist✓
✓
easy to understand documentas a library user✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Library developer
Considers them many times
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
"Many times"
It's very good exercise
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Exercises
API✓
Document✓
API
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter (reprise)
# Low levelwindow.get_property("opacity")# Betterwindow.opacity
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better?
# Low levelwindow.get_property("visible")# Better# ???: hint: "visible" is bool
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Better
# Low levelwindow.get_property("visible")# Betterwindow.visible?
from gtk2 gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Getter
# Better for record as collectionrecord["name"]# Better for record as objectrecord.name
from rroonga gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init
require "gst"# ???Gst.init # <- What?Gst::ElementFactory.make("playbin")
from gstreamer gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init (usage)
require "gst"# For advanced useGst.init("--gst-debug=*:9")Gst::ElementFactory.make("playbin")
from gstreamer gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init (better)
require "gst"# Make optional# Gst.initGst::ElementFactory.make("playbin")
from gstreamer gem
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
API: Init (impl)
class << Gst def const_missing(name) init; const_get(name); end def init(*argv) # ...initialize library... class << self remove_method(:const_missing) end; end; end
from gstreamer gem
Document
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Document: Install
Install:
For Debian GNU/Linux: % sudo apt-get install libgtk2.0-dev % gem install gtk2For OS X: ...
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Document: Better
Install:
% gem install gtk2
libgtk2-0-dev is installed automatically
"gem install GEM_NAME" is popular install way
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Exercises end
We remembered about"what is similar?"
✓
We done "similarly"✓
Do you understand about
"Remember than Imagine"?
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Wrap upShare this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
This talk's goal
You knowhow to develop better softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Better
Ruby-ishSimilar to others
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Goal: In other words
You knowwhat is "similar" and do similarly
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
RememberthanImagine
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Remember than Imagine
Knowledge
Remember
???
Imagine
Easy! Di�cult...
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
For developmentExperience Rubyist for knowledge
✓
Then remember the knowledgeBut it is di�cult because you don't have experience about "remember"
✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No "remember" experience
BettersoftwaresKnowledge
Rubyist experience!
Remember
No experience
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Experience lib developer
It's very good exercise
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The next stepShare this talk's goal✓
Describe key idea✓
Apply the key idea✓
Wrap up & The next step✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
The next step
Use "library developer" experience to other
things
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
For example,
Use it to develop other
softwares
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Develop other softwaresYou can remember about
a better bug reportHow to reproduce?✓
✓
a better patchHow to commit? (size? message?)✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Conclusion
Be a library developer!
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
FYI
We accept applications about our internship
You can develop a library with us✓
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Bonus tracks
Similar vs. Innovation✓
No "imagine" communication✓
Similarvs.
Innovation
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Innovation
Doing "similarly" will not achieve "innovation"
✓
Should all we aspire innovation?
✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No
We have regular life✓
It's also important thatwe improve our regular life
✓
No"imagine"
communication
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
No "imagine"Show all u need from the start
Don't omit anything✓
If you emit something,other people need "imagine"
✓
✓
Use your experience for it!✓
Be a library developer! - Remember than Imagine Powered by Rabbit 2.0.8
Key idea
RememberthanImagine