Code Anything
                  なんでもコードで書こう




                                kawasima



12年12月15日土曜日
本セッションの趣旨
                  みんなコードを書こう
               「何を書いたらいいか分からない」
                「仕事ではExcelばかりだしー」
               そんな人のために今日は私の着想点を
                     紹介します

                       一応、大きめのSIerにてというコンテキストでお話します。

                       が、そうでなくてもお楽しみいただけるように
                       コンテンツは作ったつもりです

12年12月15日土曜日
みなさんコード書いてますか?




12年12月15日土曜日
オープニング・アクトアプリ




               https://github.com/kawasima/github-activity-tunes/
12年12月15日土曜日
GitHub Activity Tunes
               あるユーザがどれだけGitHub上でコー
               ドを書いているかに応じ、ラデツキー行
               進曲にのせて手拍子が入ります



                          ✓Sinatra
                          ✓omniauth-github
                          ✓Faraday
                          ✓Timble.js
12年12月15日土曜日
これで定常的にコード書き続けるのが

               楽しくなりますね!



12年12月15日土曜日
あらためまして、   kawasima です

      これまでSIerで受託開発に
      どう取り組んでいくか発表
      し、多くの方々にみていた
      だきました!
       http://www.slideshare.net/kawasima/   26,000 views




        30,000 views                         23,000 views
12年12月15日土曜日
12年12月15日土曜日
プロセス系の話がメインで、

                それを支えるエンジニアリングの

                話ができてなかった。




               なので、今日はプロダクト中心で

                お話をしたいと思います



12年12月15日土曜日
みなさんコード書いてますか?




12年12月15日土曜日
リーダ的なポジションの人へ


      プロジェクトがいよいよヤバいとなっ
      たときに、はじめてコードを書く、
      なんてことやってませんか?




12年12月15日土曜日
アーキテクト的なポジションの人へ

        基盤的なものを用意して、マニュア
        ルとサンプルを用意して、他人にい
        かにコードを書かせるかに気をとら
        れ過ぎてはいませんか?




12年12月15日土曜日
12年12月15日土曜日
書ける人が一番多くのコードを書くべし




               あとで火を噴いて修正するくらいなら最初から書きまくろう


12年12月15日土曜日
FAQ
     Q. 育成を考えると、みんなに書かせるべきでは?

     A. 杞憂です。案ずることはありません。

     受託開発の仕事はそんな簡単なものでないので、
     他にも書くところはたくさん出てくるし、みんな
     苦戦もし、成長していけます。


12年12月15日土曜日
どういうコードを書くか

   SIerにどっぷり浸かっ
   た身としては、身近な
   誰かを喜ばせたいがた
   めに、仕事としてコー
   ドを書く。

                    http://www.slideshare.net/kawasima/ss-10548100



               職業プログラマですからね!
12年12月15日土曜日
それでは職業プログラマとして、わた
         しがどういう目的でコードを書いてい
         るか、作ったものをもとにご紹介いた
         します!




12年12月15日土曜日
使いにくい社内システムを
                   使いやすく



12年12月15日土曜日
紺屋の白袴
          “SIerの社内システムたるやまさに地獄である”

          “本来の業務に必要な勤務時間管理や決裁のシス
          テムが、リンクの海にうずもれている”

          “見たいものがあったときに、クリックしてみな
          いと閲覧可能かどうかがわからない”

          オンライン・ヘルプは “Wordで作成された文書
          へのリンクが紹介されているだけだ”
                 http://itpro.nikkeibp.co.jp/article/COLUMN/20080226/294742/

12年12月15日土曜日
社内システムHack
   ✓朝きてPCを立ち上げると、自動的にサイボウズを在籍
        にする

   ✓空き検索ができない会議室予約システムで、検索がで
        きるようにする

   ✓プロキシをたてて、そいつがID/パスワードを代理で
        送信することで、バラバラのIDをもつ社内システム群
        をシングルサインオンにする
         ちょっとしたスクレイピングの技術があれば、

         使いやすいラッパーを作るのはわりと簡単です!
12年12月15日土曜日
Suicaで交通費精算



                Felicaリーダから移動区間/料金を取得して、

                Notes APIを使って交通費DBへ自動登録する。

                2007年くらいに作ったのでPlaggerで作りまし
                た。          http://enterprisezine.jp/iti/detail/749
12年12月15日土曜日
面倒な社内ルールも
                 コードの力で




12年12月15日土曜日
SIerによくあるセキュリティルール


               ✓アカウントの定期的な棚卸し
               ✓アクセスログの監査
               ✓パスワードの定期的な変更

               なんだか面倒な運用!




12年12月15日土曜日
Cert Publisher
      ✓クライアント証明書をWeb上で発行する
      ✓アクセス時に必ず事由を入力させられる
      ✓クライアント証明書が盗まれても、登録され
           た端末以外で使おうとすると、パスフレーズ
           を入力しないと使えない仕組み
          これで会社は余計なルールばかり

          増やしやがるなんて愚痴吐かなくて済みますね!
                    https://github.com/kawasima/cert-publisher/
12年12月15日土曜日
フレームワークの穴
                  を埋める


12年12月15日土曜日
SEO対策
        コンシューマ向けのWebサイトのapacheのconfは

                 Rewrite地獄
         URLを後からいろいろいじるので、パスとアク
         ションのマッピングのメンテが大変!

         それRailsでできるよ、と言われてもそのためだ
         けに言語/フレームワークを切り替えるわけにも
         いかない
12年12月15日土曜日
SAStruts Advanced Routes

       ✓RailsのルーティングをまるっとSAStrutsに移植
       ✓JSPでリンク書くときも、Railsのurl_forよろしく
           ${ar:urlFor(“admin.User#index?pageNo=2”)}   → /user/list/2

           とルーティングからパス生成してくれる
       ✓Railsと同じく専用のAssertメソッドで、簡単に
           ルーティングのテストができる



                      https://github.com/kawasima/sastruts-advanced-routes/
12年12月15日土曜日
その他
      ✓既存資産を活用するため、Solr検索をSQLでおこ
          なう『Solr-JDBC』 (4.x対応中)
          http://code.google.com/p/solr-jdbc/

      ✓Web API で2つのシステムを簡単に接続するため
          の『SAStruts easy api』
          https://github.com/kawasima/sastruts-easy-api/

      ✓サーバとクライアントで同じコードでバリデー
          ションを書ける『DRY Validator』
          https://github.com/kawasima/dry-validator/

                                                           などなど
12年12月15日土曜日
プロジェクト管理にこそ
                プログラミングを!



12年12月15日土曜日
Excelとのつきあい
   プログラマならだれしも
   一度はExcelをパースす
   るコードを書いたことが
   あると思います!




12年12月15日土曜日
Axebomber
       ✓POIのラッパー
       ✓xlsとxlsxを透過的に扱うことができる
       ✓JRubyから使うことを念頭において設計してます
           (gemあります)
            http://rubygems.org/gems/axebomber
       ✓グレーアウトセルは読みとばすなど日本人がやり
           がちなルールセットを実装してます

                    https://github.com/kawasima/axebomber/
12年12月15日土曜日
ライブExcelパース
                 これやってみます




12年12月15日土曜日
12年12月15日土曜日
require 'rubygems'
  require 'axebomber'

  include Axebomber

  manager = ReadOnlyFileSystemBookManager.new
  book = manager.open("issues.xls")
  sheet = book.get_sheet("issues")
  sheet.table_label = "ISSUES"
  sheet.get_rows('exceptGrayout' => true).each do |row
    issue = row.cell("Description").to_s
    puts "#{issue}" if !issue.empty? and row.cell("Dea
  end
  puts "Doya!!!"



12年12月15日土曜日
But...

          “Excelのパースを始める頃には、すでに想定外
          の記述が施されたBookがたくさんできている”

                  〜 Excel parse pattern より〜




12年12月15日土曜日
Longadeseo
      ファイルサーバを作りました。

      ファイルを置いた瞬間に任意の処理を実行する
      ことができます。
                              ✓Apache Wicket
                              ✓Guice
                              ✓Jackrabbit
                                     まだ非常にBuggyです
                https://github.com/kawasima/longadeseo/
12年12月15日土曜日
コミュニケーション手段もスマートに




     メール煩雑だからRedmineにしたのに、通知がメール?

     自分に関係ないものも来ちゃうし…


12年12月15日土曜日
Redmine notification
                    chrome extension
             担当が自分のものだけ、最新のコメント内容
             を本文につけてフィードします




https://chrome.google.com/webstore/detail/redmine-notification-exte/ooafbpajopdcoobgcaomjkgkcimddolmooafbpajopdcoobgcaomjkgkcimddolm

12年12月15日土曜日
テストフェーズはSEの
                Excel芸の見せ場
     ✓所定のフォルダに置いたExcelファイルを集計して
          別のところに置いたBookにグラフを書くVBA
     ✓BTSからエクスポートしたデータを集計してグラ
          フを書くVBA
     ✓テスト実行のエビデンスとして画面キャプチャを
          貼付けた数十MBのExcelファイル




12年12月15日土曜日
Redmine Impasse
        Issuesを見る限り世界中で使ってもらえているようです!


     ✓Testlinkライクなテストマネジメントツールです
     ✓Testlinkは性能面で致命的な欠陥がありますが、
          Impasseは数万ケース扱ってもサクサクです
     ✓Redmineと統合されているので、テストケースの
          作成、テスター割当、実行、不具合票起票がシー
          ムレスにできます

                     エビデンス自動取得も次期Ver.で実装予定です
               https://github.com/kawasima/redmine_impasse/
12年12月15日土曜日
プロセスを補助する



12年12月15日土曜日
プログラマにとっての鬼門
                 『Webデザイン』
      machidaさんのこのスライドをみて「これだ!」と思いました




        https://speakerdeck.com/machida/railsenziniafalsetamefalsetwitter-bootstrapkasutamaizuli
12年12月15日土曜日
Bootstrap customize

        ✓dribbble.comのイケてる画像からカラースキーム
               を抜き出し、そこからD&Dで基本三色を選ぶだけ
        ✓これで非常にそれっぽい配色のbootstrap.cssがで
               きあがります




                https://github.com/kawasima/bootstrap-customize-maven-plugin/
12年12月15日土曜日
まとめ



12年12月15日土曜日
と、駆け足で私がここ2〜3年で書いたコードたち

         を紹介してみました。



        みなさんのプログラミングライフの

        ヒントになれば、これ幸いです!




12年12月15日土曜日
課題の多い職場ほど、コード書けば幸せになるネタも多い


     みんなどんどんコード書こうじゃありませんかっ!

               費用対効果なんて糞喰らえですよっ!




                                   おわり
12年12月15日土曜日

Code Anything

  • 1.
    Code Anything なんでもコードで書こう kawasima 12年12月15日土曜日
  • 2.
    本セッションの趣旨 みんなコードを書こう 「何を書いたらいいか分からない」 「仕事ではExcelばかりだしー」 そんな人のために今日は私の着想点を 紹介します 一応、大きめのSIerにてというコンテキストでお話します。 が、そうでなくてもお楽しみいただけるように コンテンツは作ったつもりです 12年12月15日土曜日
  • 3.
  • 4.
    オープニング・アクトアプリ https://github.com/kawasima/github-activity-tunes/ 12年12月15日土曜日
  • 5.
    GitHub Activity Tunes あるユーザがどれだけGitHub上でコー ドを書いているかに応じ、ラデツキー行 進曲にのせて手拍子が入ります ✓Sinatra ✓omniauth-github ✓Faraday ✓Timble.js 12年12月15日土曜日
  • 6.
    これで定常的にコード書き続けるのが 楽しくなりますね! 12年12月15日土曜日
  • 7.
    あらためまして、   kawasima です これまでSIerで受託開発に どう取り組んでいくか発表 し、多くの方々にみていた だきました! http://www.slideshare.net/kawasima/ 26,000 views 30,000 views 23,000 views 12年12月15日土曜日
  • 8.
  • 9.
    プロセス系の話がメインで、 それを支えるエンジニアリングの 話ができてなかった。 なので、今日はプロダクト中心で お話をしたいと思います 12年12月15日土曜日
  • 10.
  • 11.
    リーダ的なポジションの人へ プロジェクトがいよいよヤバいとなっ たときに、はじめてコードを書く、 なんてことやってませんか? 12年12月15日土曜日
  • 12.
    アーキテクト的なポジションの人へ 基盤的なものを用意して、マニュア ルとサンプルを用意して、他人にい かにコードを書かせるかに気をとら れ過ぎてはいませんか? 12年12月15日土曜日
  • 13.
  • 14.
    書ける人が一番多くのコードを書くべし あとで火を噴いて修正するくらいなら最初から書きまくろう 12年12月15日土曜日
  • 15.
    FAQ Q. 育成を考えると、みんなに書かせるべきでは? A. 杞憂です。案ずることはありません。 受託開発の仕事はそんな簡単なものでないので、 他にも書くところはたくさん出てくるし、みんな 苦戦もし、成長していけます。 12年12月15日土曜日
  • 16.
    どういうコードを書くか SIerにどっぷり浸かっ た身としては、身近な 誰かを喜ばせたいがた めに、仕事としてコー ドを書く。 http://www.slideshare.net/kawasima/ss-10548100 職業プログラマですからね! 12年12月15日土曜日
  • 17.
    それでは職業プログラマとして、わた しがどういう目的でコードを書いてい るか、作ったものをもとにご紹介いた します! 12年12月15日土曜日
  • 18.
    使いにくい社内システムを 使いやすく 12年12月15日土曜日
  • 19.
    紺屋の白袴 “SIerの社内システムたるやまさに地獄である” “本来の業務に必要な勤務時間管理や決裁のシス テムが、リンクの海にうずもれている” “見たいものがあったときに、クリックしてみな いと閲覧可能かどうかがわからない” オンライン・ヘルプは “Wordで作成された文書 へのリンクが紹介されているだけだ” http://itpro.nikkeibp.co.jp/article/COLUMN/20080226/294742/ 12年12月15日土曜日
  • 20.
    社内システムHack ✓朝きてPCを立ち上げると、自動的にサイボウズを在籍 にする ✓空き検索ができない会議室予約システムで、検索がで きるようにする ✓プロキシをたてて、そいつがID/パスワードを代理で 送信することで、バラバラのIDをもつ社内システム群 をシングルサインオンにする ちょっとしたスクレイピングの技術があれば、 使いやすいラッパーを作るのはわりと簡単です! 12年12月15日土曜日
  • 21.
    Suicaで交通費精算 Felicaリーダから移動区間/料金を取得して、 Notes APIを使って交通費DBへ自動登録する。 2007年くらいに作ったのでPlaggerで作りまし た。 http://enterprisezine.jp/iti/detail/749 12年12月15日土曜日
  • 22.
    面倒な社内ルールも コードの力で 12年12月15日土曜日
  • 23.
    SIerによくあるセキュリティルール ✓アカウントの定期的な棚卸し ✓アクセスログの監査 ✓パスワードの定期的な変更 なんだか面倒な運用! 12年12月15日土曜日
  • 24.
    Cert Publisher ✓クライアント証明書をWeb上で発行する ✓アクセス時に必ず事由を入力させられる ✓クライアント証明書が盗まれても、登録され た端末以外で使おうとすると、パスフレーズ を入力しないと使えない仕組み これで会社は余計なルールばかり 増やしやがるなんて愚痴吐かなくて済みますね! https://github.com/kawasima/cert-publisher/ 12年12月15日土曜日
  • 25.
    フレームワークの穴 を埋める 12年12月15日土曜日
  • 26.
    SEO対策 コンシューマ向けのWebサイトのapacheのconfは Rewrite地獄 URLを後からいろいろいじるので、パスとアク ションのマッピングのメンテが大変! それRailsでできるよ、と言われてもそのためだ けに言語/フレームワークを切り替えるわけにも いかない 12年12月15日土曜日
  • 27.
    SAStruts Advanced Routes ✓RailsのルーティングをまるっとSAStrutsに移植 ✓JSPでリンク書くときも、Railsのurl_forよろしく ${ar:urlFor(“admin.User#index?pageNo=2”)} → /user/list/2 とルーティングからパス生成してくれる ✓Railsと同じく専用のAssertメソッドで、簡単に ルーティングのテストができる https://github.com/kawasima/sastruts-advanced-routes/ 12年12月15日土曜日
  • 28.
    その他 ✓既存資産を活用するため、Solr検索をSQLでおこ なう『Solr-JDBC』 (4.x対応中) http://code.google.com/p/solr-jdbc/ ✓Web API で2つのシステムを簡単に接続するため の『SAStruts easy api』 https://github.com/kawasima/sastruts-easy-api/ ✓サーバとクライアントで同じコードでバリデー ションを書ける『DRY Validator』 https://github.com/kawasima/dry-validator/ などなど 12年12月15日土曜日
  • 29.
    プロジェクト管理にこそ プログラミングを! 12年12月15日土曜日
  • 30.
    Excelとのつきあい プログラマならだれしも 一度はExcelをパースす るコードを書いたことが あると思います! 12年12月15日土曜日
  • 31.
    Axebomber ✓POIのラッパー ✓xlsとxlsxを透過的に扱うことができる ✓JRubyから使うことを念頭において設計してます (gemあります)  http://rubygems.org/gems/axebomber ✓グレーアウトセルは読みとばすなど日本人がやり がちなルールセットを実装してます https://github.com/kawasima/axebomber/ 12年12月15日土曜日
  • 32.
    ライブExcelパース これやってみます 12年12月15日土曜日
  • 33.
  • 34.
    require 'rubygems' require 'axebomber' include Axebomber manager = ReadOnlyFileSystemBookManager.new book = manager.open("issues.xls") sheet = book.get_sheet("issues") sheet.table_label = "ISSUES" sheet.get_rows('exceptGrayout' => true).each do |row issue = row.cell("Description").to_s puts "#{issue}" if !issue.empty? and row.cell("Dea end puts "Doya!!!" 12年12月15日土曜日
  • 35.
    But... “Excelのパースを始める頃には、すでに想定外 の記述が施されたBookがたくさんできている” 〜 Excel parse pattern より〜 12年12月15日土曜日
  • 36.
    Longadeseo ファイルサーバを作りました。 ファイルを置いた瞬間に任意の処理を実行する ことができます。 ✓Apache Wicket ✓Guice ✓Jackrabbit まだ非常にBuggyです https://github.com/kawasima/longadeseo/ 12年12月15日土曜日
  • 37.
    コミュニケーション手段もスマートに メール煩雑だからRedmineにしたのに、通知がメール? 自分に関係ないものも来ちゃうし… 12年12月15日土曜日
  • 38.
    Redmine notification chrome extension 担当が自分のものだけ、最新のコメント内容 を本文につけてフィードします https://chrome.google.com/webstore/detail/redmine-notification-exte/ooafbpajopdcoobgcaomjkgkcimddolmooafbpajopdcoobgcaomjkgkcimddolm 12年12月15日土曜日
  • 39.
    テストフェーズはSEの Excel芸の見せ場 ✓所定のフォルダに置いたExcelファイルを集計して 別のところに置いたBookにグラフを書くVBA ✓BTSからエクスポートしたデータを集計してグラ フを書くVBA ✓テスト実行のエビデンスとして画面キャプチャを 貼付けた数十MBのExcelファイル 12年12月15日土曜日
  • 40.
    Redmine Impasse Issuesを見る限り世界中で使ってもらえているようです! ✓Testlinkライクなテストマネジメントツールです ✓Testlinkは性能面で致命的な欠陥がありますが、 Impasseは数万ケース扱ってもサクサクです ✓Redmineと統合されているので、テストケースの 作成、テスター割当、実行、不具合票起票がシー ムレスにできます エビデンス自動取得も次期Ver.で実装予定です https://github.com/kawasima/redmine_impasse/ 12年12月15日土曜日
  • 41.
  • 42.
    プログラマにとっての鬼門 『Webデザイン』 machidaさんのこのスライドをみて「これだ!」と思いました https://speakerdeck.com/machida/railsenziniafalsetamefalsetwitter-bootstrapkasutamaizuli 12年12月15日土曜日
  • 43.
    Bootstrap customize ✓dribbble.comのイケてる画像からカラースキーム を抜き出し、そこからD&Dで基本三色を選ぶだけ ✓これで非常にそれっぽい配色のbootstrap.cssがで きあがります https://github.com/kawasima/bootstrap-customize-maven-plugin/ 12年12月15日土曜日
  • 44.
  • 45.
    と、駆け足で私がここ2〜3年で書いたコードたち を紹介してみました。 みなさんのプログラミングライフの ヒントになれば、これ幸いです! 12年12月15日土曜日
  • 46.
    課題の多い職場ほど、コード書けば幸せになるネタも多い みんなどんどんコード書こうじゃありませんかっ! 費用対効果なんて糞喰らえですよっ! おわり 12年12月15日土曜日