2020年2月3日月曜日

Java?ruby? そろそろgoで行ってみませんか?

https://www.slideshare.net/KenichiHoshi1/javaruby-go-58399440
シェアしました。

Java?Ruby?そろそろGoで行ってみませんか?http://qiita.com/hoshi-k公開版資料
よろしければ、上の絵をクリックして頂き、リンク元の絵の下の右矢印をクリック(スマホですとタップして横にスクロール)してスライドショーをどうぞ御覧下さいませ。

  1. 1. Java?Ruby? そろそろGoで行ってみませんか? http://qiita.com/hoshi-k 公開版資料
  2. 2. 2015年12月31日
  3. 3. 紅白歌合戦が 郷ひろみさんの 「2億4千万の瞳」で開幕
  4. 4. 某ポータルを慣れ親しんだ Railsで作るのもなーと思いつつ、 素敵な言語を探している自分 ❝この星の片隅2億の瞳が 素敵な事件(こと)を探してるのさ という歌声が流れる中
  5. 5. そして、ゆく年くる年を見ながら、 やっぱりRailsで作るほうがいいかー と思っているとき
  6. 6. 除夜の鐘が鳴り響く GoooooN
  7. 7. そういや、郷ひろみさんも 「Go!Go!(Goで行け)」 って、言ってた!!
  8. 8. Goで書けというお告げ がキタ━━(゚∀゚)━━!!
  9. 9. 2015年12月31日 23:50 Go言語採用決定 そして、徹夜する
  10. 10. Go言語とは 2009年にGoogleにより発表 2012年にv1.0リリース 2015年にv1.5リリース(最新版) CやC++などが使用される領域で,
 より効率良く実装することを目的に作られた Golangのマスコット Gopher君
  11. 11. Go言語の特徴(Official) シンプルな言語である。 コンパイル・実行速度が早い。 安全性が高い。 同期処理が容易に行える。 なにより楽しい。 オープンソースである。
  12. 12. C言語 < Go < Python 動的型付言語のように実装できる静的型付言語 型推論が可能 ガベージコレクタによりメモリ管理は不要 メモリ管理が必要なC言語に近いパフォーマンス 依存性管理を重視したパッケージ機構 マルチコンパイルが可能&1バイナリでデプロイ コンパイル処理時間の短縮を重視 並列処理機構を重視 Go言語の特徴(by hoshi)
  13. 13. Docker Go言語で実装されたミドルウェアの代表例 Cloud Foundry 性能要件の厳しいPaaSソフトウェアもGo IronWorker(iron.io) Railsから移行して、30台のサーバを2台へ Drone(drone.io) docker利用のCIサーバもGo Gunosy 日本の代表的なキュレーションメディアもGo Ameba Ownd サイバーエージェントもGoでいくつもサービス提供中 Go言語 採用事例
  14. 14. 1/1より開発中の某ポータルより
  15. 15. 採用アーキテクチャ、開発環境 開発言語 Go、HTML5/CSS3/JavaScript Webフレームワーク Gin Web Framework ORマッパー GORM データベース sqlite3 全文検索、形態素解析 sqlite3 fts4、kagome 開発環境 SublimeText3、GoSublime、goemon goimports
  16. 16. エンタープライズ的にいうところの 単票参照画面のビジネスロジックは・・・
  17. 17. // GET /posts/:id func PostShow(c *gin.Context) { tx := BeginTran() defer tx.Commit() var ( post Post category Category tags []Tag ) tx.First(&post, c.Param("id")) tx.Model(&post).Related(&category, "Category") post.Category = category tx.Model(&post).Related(&tags, "Tags") post.Tags = tags RenderHTML(c, http.StatusOK, "show_post", gin.H{ "post": &post, }) }
  18. 18. Java Ruby Go 生産性 △ ◎ ⃝ 開発者調達容易性 ◎ △ ✕ コーディングスタイルの
 統一容易性 ◎ △ ⃝ WEBフレームワークの
 充実度 ◎ ◎ ⃝ 非同期・バッチなど、
 分散処理の実装容易性 △ ⃝ ◎ 実行速度 ⃝ △ ◎ コンパイル速度 ✕ ⃝ ◎ サーバリソース消費 △ ✕ ◎ 楽しさ(主観) ✕ △ ⃝ エンタープライズ観点であえて比較してみる
  19. 19. Java7以前 Java8 Scala Ruby Go Elixir プログラミング言語の移行パターン 分散処理に強く、可用性が高く、 リアルタイム処理が得意な言語がトレンド
  20. 20. 2016年初頭の結論 基幹系Webシステムの開発言語としては厳しい 経験者調達はRubyよりもさらに困難 Webフレームワークは群雄割拠でスタンダートが存在しない 組み込みのテンプレートエンジンは癖が強く機能不足 いわゆるORマッパーはシンプルなものしか存在しない ミドル、バッチ・APIサーバの開発言語としては優秀 クライアントサイドMVCと組み合わせ、これまでのノウハウを
 フレームワーク化することで、数億円規模の案件では投入可能性あり 分散処理の実装容易性により、これまでのバッチ処理を
 非常に少ないリソースで高負荷でもリアルに処理することができる クラウドにおけるミドルウェアとして、社内共通基盤で採用予定
  21. 21. というわけで、 2016年は
  22. 22. Goで行きます!! 目指せ!エキゾチックフューチャー
  23. 23. fin. No Programming, No Life

0 コメント:

コメントを投稿