Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Golang完全初心者がチュートリアルを完了させればなにができるようになるか

15694ff24d0637f5299eb42fbe7f1d16?s=47 katryo
June 17, 2014

 Golang完全初心者がチュートリアルを完了させればなにができるようになるか

http://connpass.com/event/6579/ での発表資料です

15694ff24d0637f5299eb42fbe7f1d16?s=128

katryo

June 17, 2014
Tweet

Transcript

  1. Golang完全初心者がチュートリアル を完了させればなにができるように なるか @katryo

  2. 自己紹介 •  @katryo   •  新卒1年目   •  これまで作ったもの  

    –  h/p://denkinovel.com   •  Rails4製   •  言語   –  Ruby,  Python,  JavaScript  2年   •  ウェッブ開発が主目的です   –  C,  Java,  Obj-­‐C  ちょっとだけ   –  主にLL  
  3. Go 3 週 間

  4. •  A  Tour  of  Goは

  5. A  Tour  of  Go •  完全にはやってないです(´・_・`)     •  演習問題をしっかり解くのはちょっとしんどい

      •  書いてあることを読んで、RUNしただけで す…… じっくり時間をかけて   演習問題を解くと   いいことある気がする
  6. 結論

  7. コマンドラインツールを作れた •  WordNetで上位語を再帰的に発見するコマン ドラインツール   •  h/ps://github.com/katryo/wordnet_go   •  以前Python3で書いた

    h/ps://github.com/katryo/wordnet_python  を Goに書き換えたもの  
  8. デモ

  9. 作った感想 •  DRYにするやりかたがまだわからなくてつらい   –  現在、全部1ファイル   –  別packageにしてimportするというやりかたがよさそう  

    –  SQLiteからレコードを引き出すという、似た処理を同じ 関数にまとめる方法わからない   –  チュートリアルちゃんとやります(´・ω・`)   •  stringが使いやすい   –  charじゃなくてstringが基本   –  LL感覚で文字列を処理できる   •  UTF-­‐8前提なので、非la]n1語ではPythonより使いやすいか も  
  10. 結論に至るまでに得たもの

  11. メモリの気持ちが   ちょっとだけわかった •  Golangは変数にメモリ領域割り当て  =>  初期 化の手順が必要   • 

    MutableなArrayは   メモリ管理がめんどいことを把握   •  LLでは味わえないメモリとの触れ合い   •  でもGCはあるよ! やった!
  12. Golangは学習コストが小さくてよい •  Pythonを意識した仕様の小ささ   –  len()関数とか、既知の語に寄せている   –  型を変数名の後に書くなど直感に従った  

    (かつ実用的な)書き方   •  No  クラス   •  No  オブジェクト指向   •  Structにメソッドは作れるけど、Rubyとかの、クラスを基本に したオブジェクト指向とは別物   •  public/private  は命名で管理(言語仕様)   –  大文字で始まる関数はpublic  
  13. LL使いが   Golangを始めるにあたって   戸惑ったこと

  14. GOのインストール •  Homebrewでインストールすると、GOROOTを 自分で設定しないといけない   •  おとなしくpkgファイルでインストールしました  

  15. GOPATHの流儀 •  好きな場所に設定してよい   •  あんちぽ(kentarok)さん流   – GOPATH=$HOME   – h/p://blog.kentarok.org/entry/

    2014/06/03/135300   – ghqと組み合わせて使っている   – こわいので自分ではやれてないです   •  自分のやりかた   – GOPATH=~/repositories  
  16. Errorは戻り値 •  例外処理がない   •  ちょっと戸惑うけど慣れたら問題ない   •  Errorが発生しうる場面ではdeferを利用すると、 ファイルを開いたりRDB使うときに便利

      – Pythonのwithみたいな機能
  17. Java,  Cとくらべて •  学習コストがとても小さい   –  最大の利点   –  めんどうなことを書かなくていい

      •  public  sta]c  …   •  気軽に書いて、動かせる   –  スクリプト感覚でgo  runできる   •  LL使いが最初に学ぶ静的言語として最適だと思 う   –  まだこれから広まりそう   –  自分ではGoSublimeを使って書いたけど、IDEを使うと 恩恵にあずかれると思います  
  18. まとめ

  19. Goは   コマンドライン ツール   くらいなら   すぐに作れる   Goodな言語

  20. Thank  you  for  listening