TokyoRubyKaigi10

9ded99d0d611c62c53b00aaaf4b01072?s=47 hassaku
January 13, 2013

 TokyoRubyKaigi10

9ded99d0d611c62c53b00aaaf4b01072?s=128

hassaku

January 13, 2013
Tweet

Transcript

  1. पғͷॿ͚Λಘͳ͕Β ָ͘͠։ൃ͢ΔͨΊͷ ΞϨίϨ $ CBSUP  5IF(BSBHF IUUQXXXqJDLSDPNQIPUPT!/ IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ Activities

    on a little ingenuity to enjoy working with co-workers’ help T a k a s h i H a s u o ࿇ ඌ ߴ ࢤ TokyoRubyKaigi10 2013.1.13 11:15-11:30 speakerdeck.com/hassaku
  2. ఏڙ גࣜձࣾ ສ༿ &WFSZMFBG$PSQ speakerdeck.com/hassaku

  3. 自己紹介 / Who am I • Takashi Hasuo@Everyleaf Corporationʢສ༿ʣ •

    Ruby Programmer • Developing Rails applications and in-house system management • Joined the company in July last year • Robot! → Me! → • In previous job, I worked as a research and development engineer at a manufacturer. (not a web developer) speakerdeck.com/hassaku
  4. ͸͡Ίʹ Introduction speakerdeck.com/hassaku

  5. $ EJFSLFO  &OUFSJOHTUBSUVQ IUUQXXXqJDLSDPNQIPUPTEJFSLFO IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ 本セッションで 話したいこと About this

    session
  6. 昨年7月に入社してから今 まで、色々と分からない ことも多かった $ EJFSLFO  &OUFSJOHTUBSUVQ IUUQXXXqJDLSDPNQIPUPTEJFSLFO IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ There

    have been a lot of things I don’t understand since I joined the company in July last year.
  7. 人の助けを得ないと何も 進まない状況だった $ EJFSLFO  &OUFSJOHTUBSUVQ IUUQXXXqJDLSDPNQIPUPTEJFSLFO IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ I’ve not

    got any work done without someone’s help.
  8. $ EJFSLFO  &OUFSJOHTUBSUVQ IUUQXXXqJDLSDPNQIPUPTEJFSLFO IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ ただし、人に助けてもらうと いうことは、しばしば協力者 に負荷を強いてしまう But

    helping me could put an extra burden on co-workers.
  9. $ EJFSLFO  &OUFSJOHTUBSUVQ IUUQXXXqJDLSDPNQIPUPTEJFSLFO IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ そこで、楽しい開発が出来るよ う、負担を軽減すべく、色々と 工夫をしながらアレコレしてき た経験について共有したい

    So, I’d like to share my experiences about activities on a little ingenuity to reduce such burden and enjoy development.
  10. $ EJFSLFO  &OUFSJOHTUBSUVQ IUUQXXXqJDLSDPNQIPUPTEJFSLFO IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ Git handling Server operation

    Pair programming ࡞ۀ؀ڥΛखܰʹγΣΞ ։ൃ؀ڥΛखܰʹೖख "QQFBM ࣗ෼ͷঢ়گΛݟ͑ΔԽ ϝϯόʔͷಘҙ෼໺Λݟ͑ΔԽ アレコレと工夫した4つの例 Shared workspace Easily available development environment Visualized specialties of members Own status indicator Four examples of a little ingenuity
  11. 本セッションで 扱わないトピック These topics are not addressed here.

  12. アレコレ1 作業環境のシェア Example 1 Shared workspace

  13. こんな経験、 ありませんか? Have you had the following experiences?

  14. ࡞ۀͷݟֶ࣌΍ ϖΞϓϩάϥϛϯάʹ͓͍ͯ จࣈখͯ͘͞ݟ͑ͳ͍ ͜ͷΩʔόΠϯυ࢖͍ͮΒ͍ Viewing the other’s work or doing

    pair programming, Text size is too small too read. This key binding is very hard to use for me.
  15. ෆ׳Εͳૢ࡞Λཔ·Εͨͱ͖ ϨϙδτϦͷૢ࡞Λؒҧ͑ͯ͠·ͬͨʜ αʔϏεͷىಈखॱΛؒҧ͑ͯ͠·ͬͨʜ Ͱ΋ɺͲ͏΍ͬͯ͜ͷঢ়گΛ఻͑Ε͹ ࡞ۀࢦࣔ Requested unaccustomed tasks, Instruction I

    made a mistake in operating repositories or servers, but I don’t know how to tell others of the conditions.
  16. ผʑͷϚγϯ͔ΒͰ΋ ಉ͡ը໘Ͱ࡞ۀͰ͖ͨΒ͍͍ͷʹʂ I hope co-workers can operate anything in same

    workspace!
  17. ηογϣϯڞ༗πʔϧΛԠ༻͢Ε͹ खܰʹϖΞ࡞ۀͰ͖Δ͔΋͠Εͳ͍ zolrath / wemux ෳ਺ਓͰಉ࣌ʹૢ࡞ՄೳͳUNVYηο γϣϯΛఏڙ͢Δπʔϧ It allows users

    to host a wemux server and have clients join in the same tmux session. A tool for shared session makes low burden pair work possible!!
  18. guest account & wemux server

  19. ʮ ͷ*1ϢʔβύεϫʔυͰϩάΠϯͯ͠ɺ XFNVYͷηογϣϯΛBUUBDI͍ͯͩ͘͠͞ʯ “Please login and attach the wemux session

    with this guest account”.
  20. $ wemux users Users connected 1. wemux-guest 2. hasuo[m] ήετϢʔβͰTTIϦϞʔτϩάΠϯ

    ڞ༗ηογϣϯʹBUUBDI SSH remote login with the guest account and attaching to shared session.
  21. ʘ)BQQZʗ ʘ)BQQZʗ ͓ޓ͍ʹ࢖͍׳ΕͨϚγϯΛ࢖͍ ͭͭɺಉ͡ը໘Ͱڞಉ࡞ۀՄೳ Git handling Server operation Pair programming

    etc... Co-workers can operate anything in same workspace from each machines.
  22. いつでも気軽にペア作業 できるようになった! Now it’s easy pair work!

  23. しかし、まだ課題が… But, it remains another issue.

  24. 共同作業はいいが、分担作業 が必要なケースも多い It’s necessary not only pair work but also

    sharing work.
  25. アレコレ2 環境構築の省力化 Example 2 Easily available development environment

  26. Ұ࣌తʹख఻͍Λ͓ئ͍͍ͨ͠ͱ͖ 1SPKFDU"NFNCFST 1SPKFDU#NFNCFST ਓखͷඞཁͳ͜ͷ࡞ۀ͚ͩɺҰ࣌తʹଞϓϩδΣ Ϋτͷϝϯόʔʹख఻͍Λ͓ئ͍͍͚ͨ͠ΕͲɺ ؀ڥߏங͚ͩͰ࣌ؒΛඅ΍ͯ͠͠·͍ͦ͏ ֤छΠϯετʔϧɺίϛοτ࿙ΕɺઃఆϑΝΠϧͷมߋɺσʔλͷ४උɺFUD When temporal help

    is needed, Although I need someone to help us from other projects, it takes too long to prepare the development environment. Installations, incomplete commits, config files, data preparation, etc
  27. खؒͳ͘؀ڥߏஙͰ͖Ε͹ྑ͍ͷʹʂ I hope anybody can easily set up the development

    environment!
  28. खܰʹ7.Λίϐʔग़དྷΔπʔϧΛ ࡞Ε͹खؒΛݮΒͤΔ͔΋͠Εͳ͍ Sinatra application 7BHSBOU 7.TJO7JSUVBMCPY ৗʹ࠷৽ͷ։ൃ؀ڥΛखܰʹೖखͰ͖Δ The tool I

    made makes development environment possible to copy easily!! Latest environments are available in anytime. Wiki without requests unnecessary from scratch
  29. ᶃೖख͍ͨ͠։ൃ؀ڥΛબ୒͢Δ ᶄ࠷৽ͷ։ൃ؀ڥΛΠϯϙʔτ͢Δ४උ͕੔͏·Ͱ଴ͭ ᶅ਺෼ޙ࠶౓ΞΫηε͢Δͱ४උ͕ग़དྷ͍ͯΔ ᶆεΫϦϓτΛୟ͖ɺ؀ڥߏஙΛ࣮ߦ͢Δ Choose a development environment. Wait until

    preparing to import finish. Access the site again and it’s finished. Import the development environment.
  30. % bash < <(curl -s http://192.168.11.7:8080/scripts/rails4-install) - Import VM [vagrant]

    Downloading with Vagrant::Downloaders::HTTP... [vagrant] Downloading box: http://192.168.11.7:8080/packages/rails4_.box [vagrant] Extracting box... [vagrant] Verifying box... [vagrant] Cleaning up downloaded box... - Download vagrant project files % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 400 100 400 0 0 16162 0 --:--:-- --:--:-- --:--:-- 17391 x rails4_/ x rails4_/.vagrant x rails4_/Vagrantfile - Start VM [rails4_] Importing base box 'rails4_'... [rails4_] Progress: 100% [rails4_] Forwarding ports... [rails4_] -- 22 => 2222 (adapter 1) [rails4_] Creating shared folders metadata... [rails4_] Clearing any previously set network interfaces... [rails4_] Booting VM... [rails4_] Waiting for VM to boot. This can take a few minutes. [rails4_] VM booted and ready for use! [rails4_] Mounting shared folders... [rails4_] -- v-root: /vagrant - Login VM Welcome to Ubuntu 12.10 (GNU/Linux 3.5.0-17-generic x86_64) Last login: Sun Dec 2 05:10:04 2012 from 10.0.2.2 vagrant@quantal64:~$ εΫϦϓτ࣮ߦ 7.ͷμ΢ϯϩʔυ 7.ͷىಈ ϩάΠϯ ଈ࠲ʹ࡞ۀ։࢝Մೳʂ Execute the script Download files Creating VM Login and start to work
  31. いつでも手軽に開発環境 を入手して、ちょっとし た作業でも分担できるよ うになった! Now it’s easy to prepare the

    development environments and share works!
  32. खܰʹ؀ڥߏங͕ՄೳͱͳΔ͜ͱͰ 1SPKFDU"NFNCFST 1SPKFDU#NFNCFST ֤छΠϯετʔϧɺίϛοτ࿙ΕɺઃఆϑΝΠϧͷมߋɺσʔλͷ४උɺFUD Installations, incomplete commits, config files, data

    preparation, etc The benefit of easily available development environment,
  33. 1SPKFDU"NFNCFST 1SPKFDU#NFNCFST खܰʹ؀ڥߏங͕ՄೳͱͳΔ͜ͱͰ The benefit of easily available development environment,

  34. 1SPKFDU"NFNCFST 1SPKFDU#NFNCFST खܰʹ؀ڥߏங͕ՄೳͱͳΔ͜ͱͰ The benefit of easily available development environment,

    ʘ1PXFSVQʗ
  35. 1SPKFDU"NFNCFST 1SPKFDU#NFNCFST ʘ)BQQZʗ ʘ)BQQZʗ खܰʹ؀ڥߏங͕ՄೳͱͳΔ͜ͱͰ The benefit of easily available

    development environment,
  36. しかし、まだ課題が… But, it remains another issue.

  37. 誰に助けを求めたら良いか 分からない I don’t know who I should ask to

    help.
  38. アレコレ3 メンバー特性の 見える化 Example 3 Visualized specialities of members

  39. σβΠϯमਖ਼Λख఻ͬͯཉ͍͠ͷ͚ͩ ΕͲɺ$44ͱ͔ಘҙͳͷ୭͚ͩͬ ୭͔ʹॿ͚ΛٻΊ͍ͨͱ͖ Asking someone to help, I need help

    with design. But who is good at CSS and HTML?
  40. ͦΕͧΕͷϝϯόʔͷಛੑ͕٬؍తʹ ՄࢹԽ͞Ε͍ͯΕ͹ྑ͍ͷʹʂ I hope specialties of members can be easily-visualized!

  41. ೔ʑͷίϛϡχέʔγϣϯϩάΛղੳ͢Δ͜ͱͰɺ֤ϝϯ όʔͷ٬؍తͳಛੑΛ஌Δ͜ͱ͕Ͱ͖Δ͔΋͠Εͳ͍ IUUQTMFBGZJO ࣾ಺Ͱ೔ৗతʹར༻͍ͯ͠Δ ίϛχϡέʔγϣϯπʔϧ ղੳ ʢࣗવݴޠॲཧʣ "͞ΜͷϓϩϑΝΠϧྫ DTTܥ HJUܥ

    ࣄ຿ܥ ಘҙ෼໺ A log analysis of our communication tool shows specialties of members extracted from what they said automatically. Natural language processing Speciality Example of A’s profile Leafy used at the office daily is a communication tool like Twitter.
  42. Process flowchart 8FC%SJWFSʹΑΔͭͿ΍͖औಘ ܗଶૉղੳثʹΑΔ໊ࢺநग़ -%"ʹΑΔτϐοΫղੳ ֤ϢʔβϓϩϑΝΠϧ࡞੒ octave "͞Μʮޗഐ͸ೣͰ͋Δɻ໊લ ͸·ͩແ͍ɻʯ ޗഐʢ໊ࢺʣ͸ʢॿࢺʣೣ

    ʢ໊ࢺʣ ʮಈ෺ʯʹؔ͢Δ࿩୊ ʮࣗ෼ʯʹؔ͢Δ࿩୊ 4UBUJTUJDT BOJNBM TFMG FUD "`TQSPpMF ruby Scraping with WebDriver Noun phrase extraction with morphological analysis Topic analysis with LDA User profiling
  43. lςετzʹؔ͢ΔτϐοΫ ʹ͓͚Δ୯ޠग़ݱ֬཰ IBTVP εϖοΫΛશ෦άϦʔϯͨ͠Β͝൧৯΂ʹߦ͜͏ͱࢥ͍· ͢ɾɾɾɻ͋ͱͰTIBSFE@DPOUFYUʹॻ͖׵͑ͨ෦෼ͷϨϏϡʔ Λ୭͔ʹ͓ئ͍͍ͨ͠ͱࢥ͍·͢ʂ Latent Dirichlet Allocation ͭͿ΍͖ͷྫ

    STQFD εϖοΫ άϦʔϯ  ෳ਺ͷ࿩୊͔Βੜ੒͞ΕΔ୯ޠͰߏ੒͞ΕΔจষू߹ͷ֬཰Ϟσϧ େྔͳσʔλͷػցֶशʹΑΓ ֤छύϥϝʔλΛਪఆ จষʹ͓͚ΔτϐοΫ֬཰ ɾɾɾ A generative model that explain why some words of the document are similar. / An example of a message τϐοΫ֬཰ʹج͖ͮ ੜ੒͞Ε֤ͨτϐοΫ ୯ޠग़ݱ֬཰ʹج͖ͮ ੜ੒͞Ε֤ͨ୯ޠ Generated words by probabilities Generated topics by probabilities Graphical model of LDA Probabilities of generating each topic in document Probabilities of generating each word in topic Each parameters are inferred from a massive collection of document.
  44. ॎ࣠ɿϢʔβϓϩϑΝΠϧͱΩʔϫʔυΑΓࢉग़ͨؔ͠࿈౓ ղੳ݁Ռ Keyword : “TDD” Keyword : “cucumber” ςετܥͷτϐοΫͰ ಥग़͢Δٕज़ܥͷϝϯόʔ

    ٕज़ܥͰ͸໨ཱͨͳͯ͘΋ ࣄ຿ܥͰ͸ಥग़͢Δϝϯόʔ Result Users ԣ࣠ɿ֤Ϣʔβ Correlation score between user profiles and coefficient of keyword x-axis y-axis Engineers with high scores on keywords about testing Keyword : “精算” A business unit member keeps higher score on nontechnical topic compared with technical topics.
  45. ところが... However,

  46. ݱঢ় wਫ਼౓ʹ໰୊͕͋Γɺ࣮༻ʹ౸Βͣʜ w8FCΞϓϦԽͯ͠ɺؔ܎ऀ͕͍ͭͰ ΋࢖͑ΔΑ͏ʹ͍ͨ͠ In an ongoing way It’s far

    from practical use because there are accuracy issues. I’d like to provide this analysis through an internal web service.
  47. ʙͷ࿩୊ͳΒ#͞ΜʹਘͶΔͷ͕ద੾ͩͳʂ ʘ)BQQZʗ "`TQSPpMF #`TQSPpMF $`TQSPpMF %`TQSPpMF ཧ૝૾ Goal Mr B

    is the best person to ask for help on ʙ !
  48. 状況に応じて、適切なメン バーに助けを求められるよ うになった! (という状態が目標…) Now I can ask a proper

    member to help depending on the situation! (but demanded continual refinement.)
  49. しかし、まだ課題が… But, it remains another issue.

  50. 助けてもらったは良いけ ど、スキルが追いつかない I can't keep up the pace.

  51. アレコレ4 コンディションの 見える化 Example 4 Own status indicator

  52. ϖΞϓϩͳͲͷϖΞ࡞ۀΛ͓ئ͍ͨ͠ͱ͖ ϖʔε͕ૣ͍͍͚͗ͯͭͯ͢ͳ͍ ݴ͏λΠϛϯά΋௫Ίͳ͍ Asking for help on pair programming, The

    pace is too fast to keep. And it’s difficult to say about it when the opportunity comes.
  53. ࠓͷঢ়ଶΛ͞Γ͛ͳ͘ Ξϐʔϧग़དྷΕ͹͍͍ͷʹʂ I hope I can appeal own status casually!

  54. ۓுঢ়ଶΛ͞Γ͛ͳ͘Ξϐʔϧ͢ΔγεςϜ Λ࡞Ε͹ɺ࡯ͯ͠΋Β͑Δ͔΋͠Εͳ͍ ͓ɺΩπա͔͗ͨͳʁ ϖʔεམͱͦ͏ "QQFBM I made a system to

    appeal my own status for more comfortable pair works. Little harshly? Let’s slow down.
  55. ͞Γ͛ͳ͘ܭଌ͠ɺදࣔ͢ΔͨΊͷγεςϜ '3*4,ঢ়ͷ σόΠεͰ ຺ഥΛ͞Γ͛ ͳ͘ܭଌ Casual system to indicate own

    status Measure heart rate by FRISK-like device
  56. ͞Γ͛ͳ͘ܭଌ͠ɺදࣔ͢ΔͨΊͷγεςϜ '3*4,ঢ়ͷ σόΠεͰ ຺ഥΛ͞Γ͛ ͳ͘ܭଌ Casual system to indicate own

    status Measure heart rate by FRISK-like device
  57. $BQT-PDL ͷ-&%ʹ͞Γ ͛ͳ͘දࣔ ͞Γ͛ͳ͘ܭଌ͠ɺදࣔ͢ΔͨΊͷγεςϜ Casual system to indicate own status

    Blink LED on Caps lock key
  58. ಈ࡞ͷ༷ࢠ ௨ৗঢ়ଶ ۓுঢ়ଶ DEMO Racing heart Normal heart

  59. ಈ࡞ͷ༷ࢠ ௨ৗঢ়ଶ ۓுঢ়ଶ DEMO Racing heart Normal heart

  60. SVCZϓϩάϥϜͰܭଌ஋ Λड৴ɻ৺ഥ਺Λࢉग़ ͠ɺ$BQT-&%Λ఺໓ γεςϜͷ֓ཁ ੺֎ઢηϯαͰ݂ӷதͷ ϔϞάϩϏϯมԽΛܭଌ ϐʔΫִؒ஋Λૹ৴ System summary Transmit

    peak-to-peak value Ruby application blinks LED on Caps lock key depending on heart rate. Infrared sensor measures varying hemoglobin level of blood.
  61. アレコレ1の場合どうするの? How about in first example case? Git handling Server

    operation Pair programming etc... Sharing workspace on wemux ʘݟΕͳ͘Ͷ ʗ "QQFBM
  62. ϓϩϯϓτʹ΋දࣔ ௨ৗঢ়ଶ ۓுঢ়ଶ Also on prompt Racing heart Normal heart

    ̎ഒ଎࠶ੜ
  63. Git handling Server operation Pair programming etc... Sharing workspace on

    wemux ʘ)BQQZʗ ཭Ε͍ͯͯ΋େৎ෉ It’s not a problem if they’re far away from each other. "QQFBM
  64. 言い出しづらい状況下で も、ペースを合わせても らえるようになった! Now I can have proper pace if

    I’m hesitant to propose slowing down! (though this example is very limited.) (あまり実用的な例ではありませんでしたが…)
  65. ·ͱΊ Summary

  66. 日々のちょっとした工夫によって 助けを得ることの敷居が下がり 開発をもっと楽しくできるはず $ DPOUFOUTNBZJODMVEFOVUT  )BQQZ'MBQQZ1FOHVJO IUUQXXXqJDLSDPNQIPUPTKV[ IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ I

    believe a little ingenuity which strengthen helping each other makes a development more enjoyable.
  67. Gitͷૢ࡞ αʔόʔૢ࡞ ϖΞίʔσΟϯά "QQFBM 日々のちょっとした工夫の例 ࡞ۀ؀ڥΛखܰʹγΣΞ ։ൃ؀ڥΛखܰʹೖख ࣗ෼ͷঢ়گΛݟ͑ΔԽ ϝϯόʔͷಘҙ෼໺Λݟ͑ΔԽ Shared

    workspace Easily available development environment Visualized specialties of members Own status indicator Four examples of a little ingenuity
  68. 特に色々な案件を抱える会社では、 助け合いが活発になることで、 本来備えた柔軟な組織力を 100%発揮できるかもしれない $ +PBDIJN4.ÛMMFS  4POOFOBOCFUFS IUUQXXXqJDLSDPNQIPUPTKPBDIJN@T@NVFMMFS IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ

    QSPKFDU" QSPKFDU# QSPKFDU$ Especially, in case of company which has many projects lined up, such activity to help each other without barrier might lead to the 100% strength of an organization. organization
  69. $ CBSUP  5IF(BSBHF IUUQXXXqJDLSDPNQIPUPT!/ IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ We can cast our

    thoughts into shape to make our development more enjoyable with DIY mind in the weekend. 余暇を利用したDIY的な取り組みで 日々の開発をより楽しく出来そうな ちょっとした思いつきを形にしていく
  70. それぞれの環境で試して欲しい そして、シェアしましょう Have a try in your situation and let’s

    share it.
  71. $ &SJD)FSPU  %PVHIOVUT IUUQXXXqJDLSDPNQIPUPTFIFSPU IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ ΑΓ࣮ફతͳ 3VCZΛ༻͍ͨ։ൃͷָ͠Έํ

  72. $ OBUIBOHJCCT  )BJLV IUUQXXXqJDLSDPNQIPUPTOBUIBOHJCCT IUUQDSFBUJWFDPNNPOTPSHMJDFOTFTCZ  ௗҪઇ )FSPLVͰͭ͘ΔਓͷͨΊͷ3BJMTΞϓϦ

  73. ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ 5IBOLZPV ಛʹελοϑɾؔ܎ऀͷօ͞·΁