はてなキーワード: golangとは
(WEBエンジニアリング)未経験から(院卒新卒カードを使って)Webエンジニアになって(5年で)年収1000万円(の会社員と同等の手取りを本業副業合わせて)稼げるようになった話
工学部(情報系でない)の修士課程で、画像処理や機械学習を用いた研究をしていた。
PythonやLinuxについては少々経験したが、MVCに関する技術は一切触った事がなかった。
就活して、Web系のC向けの名の知れたサービスを自社開発している企業にエンジニアとして入社することになった。
※当時は今より牧歌的で自分のような人間が入社することができた。今はわからない。
PythonのFWを使ったWebサービスの開発を行なっていた。
とはいえ、腰を据えて開発している時間は少なかった。大きい企業の既存事業にいると開発とは無関係の運用や調整業務がかなりあった。
3年目くらいで副業を始めることにした。
上記の通り業務内で技術力を向上させることがむずかしかったのと、未経験で業界に来ているハンデを抱えていたのである。
Python以外の言語はほとんど書けなかったのでPythonでwebかスクレイピングの案件を探した。
5件ほどお祈りされたが、懲りずに応募し続けてたら採用された。Flaskの案件だった。Flaskは書いたことがなかったが採用された。
当時はその会社に Python が書けるエンジニアがいなかったので重宝されたし、仕事も任せてもらっていた。
契約は週15時間だった。その間にCOVIDが来て全てが在宅勤務になり、気付いたら週30時間まで稼働するようになっていた。。
当初の見込み通り基礎体力は身に付いていったと思う。
最初の案件を納品したあと、次の案件をもらい、段々仕事の幅が広がっていった。
Linuxサーバを触ったりDBサーバを触ったりphpを雰囲気で書いたりDockerfileを書いてECSの環境を構築したりなど。
※Golang, Rust, k8sなど人気の技術の案件は探してもちょうどいいものが見つからないのでチュートリアルをやる以上の勉強はできていない。
ちょうど良さそうな募集があったので応募したところ今度は一回で採用された。
給与も少し上がった。後ほど元の副業の給与も上がり、本業の給与も少しずつ上がった。
年収がいくらなのかよくわからなくなったので、月々の手取りを銀行口座から調べて、年収1000万円の会社員の手取りと比較すると大体同じくらいの金額になっていた。
犠牲にしていることといえば可処分時間くらいだと思っているので、TLDR節に書いた内容についてはそんなに無理がなくある程度再現性があるんじゃないかと思っている。
辛さでいえば大学院のほうが辛かった。
可処分時間ということでいえばCOVIDで通勤時間が無くなった影響はそれなりにある。
自分について
・要領は決していい方ではない
要領がいい人なら5年も掛けずもっと早く辿り着くのではないか。
今回、特にジョブホッパー的な動きはしていない。各職場(案件)に恵まれたこともあるし、器用さが足りないといえばそうだと思う。
エージェントは中抜きされるという意見もあるが、自分はSNSは長続きしないし、勉強会もあまり肌に合わずほとんど出席することはないのでエージェントを通してしか案件を見つけられていない程度の行動力しかない。
年収についてはおおむね満足するようになり、人間とは面白いもので段々欲がよく出てくるようになった。
モダンな技術は、レガシーな技術よりも、おしなべて責任範囲が明確であり、何かあったときのリカバーがききやすかったり、謎の負債が含まれるリスクも少なく、幾分か安心して開発ができる。枯れた理論は好きだが、新しい技術を先回りして身につけることにも興味が湧いてきた。
いろいろあるけど、自分の観測範囲ではRuby(やそれっぽい言語)が好きな人間ほどgolangを嫌う。
自分はRubyを書かないけど、なんとなく気持ちはわかる。詳細は書かないけど「Rubyを書く上でプログラマが気持ちいいと感じる」要素をgolangはことごとく否定しているから。
Rubyが綺麗に着飾ったキャバ嬢だとしたら、golangは出産以降、色気のかけらも無くなった嫁の様なものだ。
その2人に対して、「一緒に飲みに行くならどっちがいい?」と「家族にするならどっちがいい?」を各々勝手に選んだ者同士が言い争いしてるんだろう。
実際のところ、MatzがRubyを作るにあたってどれだけ「仕事目的のプログラミング言語」というものを意識していたのかはわからないが、golangは完全に「Googleが自分の仕事のために作った言語」という認識なので、キャバ嬢が「お酒で接待する専門家」としたら、嫁と対比した例えは、もしかしたら逆になるのかも。
「GoでオススメのWebフレームワークを聞かれたら」ってタイトルにクソブコメつけたら、こんなクソみたいなコメントつけるはてブのほってんとりにあがってくるzenn嫌い!!って筆者が本題以外の記事もすべて消してしまった。この人の他の記事を求めていた人もいただろうし、なんか申し訳ない。黙ってスルーすべきだった。単純に機能を書くための時間をショートカットしたい人(ライブラリごとに開発者が異なるし切り替える不自由さがある。フレームワークだと一本開発思想が通ってる楽さはあるのよ)や他の言語から入ってくる人もいるのに初心者が質問した前提って暗においてること、それに対してウェブフレームワークなんか使わないで自力でgolang書けるようになろうねって書いてあって、必要な機能は全部書けばいいってウエメセな傲慢さがさすがGoogle Developer Expert (Go)って感じに非常に鼻についたことに黙ってられなかったし今もぐちぐちいう自分が幼稚やな。はっはっは。
ごちゃごちゃしたモデルがほいほい操作できて、Formもちょちょいと書ける。
テストもモリモリ書ける。
想像していたよりずっと良い。
気持ちがいい。
私ハマっちゃうかも。
でもFormでちょっと動的なことをしたいな、ってだけで、CoffeeScriptと格闘する羽目になってとても苦しい。
CoffeeScript辛いから全部サーバに処理させたいけど、そうなると、簡単な動的操作でも画面更新と履歴積み積みになってそれはそれで酷い。
というかCoffeeScriptむちゃくちゃ見辛い。地獄。なんだよこのインデント。
辛い。
病みそう。
プログラミングスクールが話題になっていたので体験談を書いてみた。スクールの中身と就職先がメイン。技術的な話はあまりしてないし長いけどよかったら読んでみて欲しい。細かいところは濁してるよ。
数年前の話。
20代半ばでフリーターをしてたんだけど正社員になるべくプログラミングスクールに通った。そのスクールは授業料が無料。代わりに斡旋してもらった企業には(法的拘束力はないけど)就職しなきゃいけないというルールだった。
スクールの開校初日はよく覚えてる。簡素な小部屋に同期生30人程が集められた。やたら顔のいい講師が自己紹介をしてくれたが、ホントは営業職らしい。意味がわからん。講師から最終月にグループ課題があるので同期生とは今から仲良くしてくださいねと言われ、前後左右に座る男女と自己紹介をした。理由は色々だったけどみんなエンジニアになりたいらしい。1人からは並々ならぬ熱意を感じる。熱血クンと呼ぼう。
挙手したのは自分だけ。あれ?思ってたより少ないな。てか熱血クン手上げてないし。このクラス大丈夫かな?
嫌な予感がしつつも早速授業が始まった。映像授業を見終わったら演習課題を解いて講師に見せるという流れだった。内容はHTMLの基礎。映像があまりに遅くて退屈なので授業内容が要約されたPDF(たぶん復習用)を読んで演習課題を解いた。講師に確認してもらう最中ふと横を見ると熱血クンはウトウトしていた。大丈夫だろうか。
授業内容も演習課題もめちゃくちゃ簡単でProgateの方が難しいレベル。進めていると熱血クンが質問してきたので教えてあげる。講師に質問したら分からないと言われたらしい。自分は講師の存在意義が分からないよ。HTMLタグの閉じ忘れを指摘すると熱血クンは大喜び。ホッコリ。
1週間後、熱血クンは来なくなった。
2ヶ月目。何故か同期生がみんな仲良くなっていたが自分は馴染めず挨拶をする程度に留めておいた。毎週飲み会が開かれたが少しでも多く勉強したかったので断っていると、ある日講師から呼び出しをくらう。
「増田さん、飲み会行かないんですか?プログラマーにはコミュ力も必要ですよ。」
家でアプリ開発したいんですが……。とは言えず飲み会には1度だけ参加した。同期生は概ね人が良く楽しかったが2次会3次会はパスして1時間で帰宅。
翌日は半分くらいの生徒が遅刻してきた。
課題についていけない5人くらいが来なくなった。
3ヶ月目。グループ課題が始まる。グループ毎にCTOを決めるのだが、この時点で達成してるハズの課題が自分以外終わっておらず必然的に自分がCTOになった。目立ちたくないのに。
課題はよくあるポートフォリオサイトを作るというものだった。要件定義や画面設計などを1人で終わらせチームメンバーに役割を割り振るところで問題発生。ある女メンバーが責任を負いたがらない。余程自信があるのか常に生脚を露出していたので生脚と呼ぼう。
生脚「難しそうだから無理!٩(×_×)۶」
一体何ならしてくれるんだ?話を聞いてみると、どうやらチームメンバーのEXILEみたいな男と同じ作業がしたいようだ。こいつはEXILEと呼ぼう。EXILEに生脚は技術的に不安があるから一緒に開発して欲しいと頼んだところ快諾してくれた。ありがとうEXILE。イケメンは中身もイケメンなんだなぁ。
そんなこんなで開発が始まった。自分は全体の半分くらいの機能を開発しつつチームメンバーのサポートを受け持った。講師が変わり技術的な質問ができるようになったので多くを学べるよう必死に開発した。最終日には成果発表のプレゼンがあり技術的な説明をさせてもらった。
生脚はEXILEに告白してフラれたらしい。途中から来なくなった。
開発が終わり、ついに就活フェーズに入った。スクールの用意した就活アドバイザーが色々教えてくれる。面接でよく聞かれる質問とかそういうやつ。どんな企業に斡旋されるのか聞いてみたところ開発時の講師が生徒を評価してスクール側で勝手に割り当てるのだそう。なにそれこわい。
募集が来てる企業一覧から自薦することもできた。200社くらいから募集があり自社開発は4社。受託が8社。残りの188社はSESか社内SEだった。SESは闇深と聞いていたので自社開発と受託をメインで自薦してみたが書類選考で通ったのは3社だけ。正社員経験がないとダメらしい。通った3社とスクールが割り当てた4社の計7社で面接してもらえることになった。この中に自分の未来を預けるのか。
自社開発や受託企業の面接はどれも厳しいものだった。スクールでは教わらないレベルの内容を問われ、アーキテクチャについて考えを問われ、はたまたOSS開発の経験まで問われた。どうやらスクールは自分のことを高く評価してくれたようだが自分には壁が厚すぎた。スクールでのプレゼン経験を糧に伸び代アピールを頑張ったのだが落ちた。全て落ちた。技術不足で申し訳ない。
ところが一方でSESの面接は楽勝だった。面接というよりはほとんど雑談レベルで聞かれることといえば出身地、趣味、大学の専攻、etc.。お見合いかよ、なんて突っ込んでる間に全て受かった。人類なら全員受かるのではないだろうか。
どの企業も似たり寄ったりで、結局、面接で唯一「将来なりたいエンジニア像」について聞いてきた企業に決めた。ここならキャリアを積めるかもしれないと思ったからだ。給与が1番高かったのも理由の1つだけど。
タイトルにもあるが、この企業がそれはもうギリギリのブラック企業だった。
入社初日はよく覚えてる。とんでもなく小さいビルの1室。インターホンを鳴らすと、なんと社長自ら出迎えてくれた!素晴らしいことのように見えるがSESなので自社に誰も社員がいないのだ。ホントに1人も。
社長から会社について説明を受ける。時折、ここは良いところだぞ!社員は家族みたいなもんだ!と挟んでくるがブラック企業の常套句をなぜ連呼するのか。そして早速お前呼びされた。
「俺は今から営業行ってくるから、お前はSlackで指示を仰いで。じゃーね」
ん?社長がいなくなったら社内1人ですよね?電話とか来たらどうします?指示って誰に聞くんですかね?何時に帰ってくるんですか?
聞こうと思った瞬間には電話しながら外行っちゃった。やばい。とりあえずSlackの全体チャンネルに入社挨拶と指示くださいと投げる。返事なし。1時間経過したところで返事が来た。多分上司だ。
「新人担当が決まってなかったので連絡遅れた。とりあえず俺に聞いて。今日は自社開発してるサービスの開発環境構築しといて。PCに前の人が使ってたメモ入ってると思うから。以上」
えぇー。新人担当くらい決めておいて欲しいです。自社開発のサービスって何ですか聞いてません。あとメモに書いてあるライブラリ、バージョンが古くて起動できないです。
などなど聞きたいことは山ほどあったが上司も常駐先で忙しいようで返事が最速で30分かかるし、聞く度にバカかアホかと嫌味を言われる。こりゃ自分でなんとかするしかない。
環境構築をしてると電話が鳴る。しょっちゅう鳴る。人材紹介の営業がほとんどだったのでかけ直すと言ってメモだけしておく。1件だけ社長はいますかと聞かれたので名前を頂戴したところ銀座の高級クラブだった。私用電話をするな。
定時になったが鍵を持っていないので帰れない。Slackでヘルプを求めるが誰も反応してくれない。結局その日は22時頃に社長が帰ってきた。営業という名目の飲み会だったようでベロンベロンに酔っていた。「鍵渡すの忘れてたわ〜」だって。早めの退職を心に決める。
どうやらSESとして派遣されるのは1ヶ月程後のようで、それまでは自社開発をするらしい。実務で経験を積めるならラッキーと思ったが、この自社開発サービスがクセ者で大変苦しむ。
開発環境は大変にレガシー。当時すでに下火だったPHPとjQery。バージョン管理は驚きのSVN。2年前のチケットが放置されたRedmineには辞めていった社員の名前がズラリ。
開発スケジュールは社長が思いついた機能を誰かが開発する流れなので常にグダグダ。SESで現場に出ている社員は常駐先の仕事が終わってから自宅で開発をしているらしい。もちろん残業代なんてものは存在しない。よって誰も開発したがらない。社長はこのサービスを市場に流通させると息巻いていたが、とても使い物にはならないクオリティ。ゴミだ。ゴミを開発する仕事だ。
とはいえ仕事が他にないので頑張って開発した。ここで頑張ったのが後に牙を剥く。
1ヶ月後、常駐先が決まった。有名企業の子会社で技術レベルも相当高かったと思う。今から考えるとここに出向されたことが唯一の救いだった。
他SES企業から常駐している人たちのチームに加わる。チームリーダーはとても優しい人で分からないことは何でも教えてくれた。顔すら知らないのに罵倒してくる自社の上司よりこの人の部下になりたいと思った。
常駐先の社員は有能だが淡々とした人が多く仕様確認以外で話しかけると嫌がられた。自分の専門外でどうしても分からない技術があったので1度だけ質問したことがあったが、何で分かんないかなぁとタメ息をつかれた。こわすぎる。
とはいえ優しいチームリーダーの元でなんとか仕事ができるようになった。知らない技術を学べるのは楽しくヤル気も上がった。
自社の業務は最悪だった。1週間に2度くらいの頻度で社長に呼び出されるので帰社する。
ある日、雑用をこなしていると初めて見る社員が現れた。社長と話しているがスゴい罵倒されている。かわいそう。
早く辞めたい。この一心だった。
でも今辞めたら転職できる気がしない。
その後、常駐前に自社開発を頑張ったせいで自社開発を押し付けられてしまう。9時~18時は客先常駐。19時から雑用係。明け方まで自社開発という生活になる。
結果、客先で倒れた。チームリーダーに何があったのと問われ、自社の開発が大変で……と答えてしまった。チームリーダーは客先社員に報告。客先社員は客先営業に報告。客先営業は弊社の社長に報告。当日に社長から呼び出しをくらう。
身体の心配なんてされず、ただひたすら罵倒された。客先で倒れるなバカ野郎!お前のせいで謝る羽目になっただろクソが!とか言ってた気がする。意識が曖昧だったので細かく覚えてないけど。
客先に自社開発の話をするな!情報漏洩で訴えるぞ!とも言われた。これは正しい指摘だけど一方で自分は技術的な内容もサービスの内容も話していない。そもそも残業代未払いだろ。
そう思うと無性にイライラしてきて、その場で退職したいと伝えた。
社長は暴れだした。
机を蹴り飛ばし大声で怒鳴っている。お前にいくら使ったと思ってるんだ!お前は障がい者だ!地獄に落ちろ!とか言われた。やばい人だ。
以上がプログラミングスクールからブラックSESに就職した話。ここまで読んでくれてありがとう。
ちなみに転職は成功して、今は自社開発企業で楽しくエンジニアやってるよ。先日リードエンジニアになって年収はSES時代と比べ物にならないくらい増えた。人間関係は良好だしリモートワークもフレックス制もあるからのんびり働ける。
あと数年頑張ればもっと有名な企業に転職できるかもしれないしフリーランスで自由気ままに海外生活も夢じゃないレベルになった。
エンジニアに夢はあるんじゃないかな。でもそれはスクールを出てすぐに掴めるものじゃないと思う。スクールの同期生は半分くらいがエンジニアを辞めたらしい。現実に絶望したのかな。
もしあなたがプログラミングスクールに通いたいなら止めないけど、まずはネットでプログラミングに挑戦してみて欲しい。1日8時間。連日の開発が嫌じゃなければスクールに通ってみてもいいかもね。年末年始も開発しろと自分は思わないけど、週5で開発できないと仕事にならないし。
最後に、この記事を書くきっかけになった、鉄道会社を辞めたエンジニアさんが幸せになりますように。
終わり!
ニュースサイト見てたら自分の記事出てきてめちゃくちゃ笑った。以下気になるブコメに返信。
退職を伝えた後、休職以外認めないと言われたので休職した。心療内科で会社がブラックだから辞めるために診断書くださいと伝えたらすぐに診断書を貰えたので退職願と一緒に社長に提出。
社長はずっと恨み言をつぶやいてた。
「お前はエンジニア向いてないよ」
ハンコ押してさよなら。その日は人生で1番清々しい気持ちでマックを食べた。
転職活動を始めたかったが入社半年で辞めたので実績が終わっていた。ポートフォリオでも作るかと思い、AndroidとiOSでアプリを作ってリリース。Web系も手広く勉強した。GolangとかTypeScriptとか。あとAWSもちょっとだけ。
3ヶ月くらいで貯金が底を尽きたので転職活動スタート。自社開発10社くらいに応募。面接できたのが3社。
2次面接で「恋人いるの?」と聞かれ、最終面接で「このアプリ使いにくいね」とボロクソに言われた会社に内定をもらった。サービス内容も人も面白かったしオフィスがキレイだったので入社。今に至る。
そういえば、転職先で前職の源泉徴収票が必要になったとき総務の人が前職に電話してくれたんだけど、めちゃくちゃに悪口を言われたらしい。
嘘松だったら良かったのにね。有名企業に行ってみたいとかエンジニアとしての夢はあるけど、今の会社は気に入ってるしストックオプション欲しいから辞めずに開発頑張るよ。
そうだね。スクールで教わったことは正直オンラインで学べるレベルだったけど、フリーターがいきなり正社員になれたんだから斡旋制度には助けられたよ。自分がスクールに求めるのはもう少し実践的な内容にして欲しいことかな。せめてHTTP通信くらいはカリキュラムに入れるとか。
難しいと思う。社長が「スクール通っていた期間も入社していたことにしよう!」と悪魔的な発想を持ち出して経験者の体で出向してた。
もちろん業務内容にはついていけずチームリーダーに頼りっぱなし。最終的にテストコード担当になってた気がする。
仰る通りです。すみません。
ただ、ホントに個人的な意見を書かせてもらうとWeb業界のデファクトスタンダードからこれらの技術はすでに外れてると思う。
こういう意見が出るから技術にはあまり触れずに書いたんだよな〜。
そうかもね。
諦めろとは書いてないけど指標のひとつにして欲しかった。スクール通ってたとき「あ、この人プログラミング嫌いなんだな〜」って人結構いたから。向き不向きはわかると思う。
卒業した時点では同期生は全員エンジニアとして就職してた。スクールが何をしてでもねじ込む。その後もエンジニアを続けてたのが半分くらい。卒業した1年ほど後に同期生にバッタリ会ったことあるけど人材派遣側に回ってて笑った。
終わり!
プライベートなメソッドや関数をテストする必要は無いと考えています。プライベートなメソッドは、実装の詳細であるからです。
ほとんどの場合、プライベート メソッドをテストする必要はありません。 プライベート メソッドは実装の詳細です。
「プライベートメソッドはテストするな」と強く主張されるのは、ケント・ベックの影響もあるかもしれない。
例えばtwitterで、パブリックメソッドにだけテストを書き、テストが必要なほどプライベートメソッドが複雑ならそれを別のオブジェクトに切り出す必要があると発言している(twitter/kentbeck)ように、プライベートメソッドのテストに強く反対している。
またベックの書いたSUnit(xUnitの源流にあたる)には「ひとつのテストをひとつのオブジェクトで表し、それによってテストの独立性を高める」というアイディアが使われている(そのアイディアを実現するためにとても複雑な設計をしている Simple Smalltalk Testing: With Patterns)。テスト自身がひとつのオブジェクトとして独立しているなら、テスト対象となるオブジェクトのプライベートメソッドがテストできないのは当然のことになる。
が問題になる。
テストファーストで開発するなら手を動かしながら軽い気持ちで書きたい。
privateなルーチンの自動テストは面倒だ。実際にコーディングするときは最初publicにしておいてテストしてうまく動いていそうならprivateにするのだけど、この「いそう」がくせ者。いっそのことすべてpublicにしたくなる。
私は元々メソッドはprivateにしない主義なのでメソッドの場合は問題ないのだけれど、ファイル内の「関数」が問題になる。和了点計算だと和了形判定とか符計算とか和了役判定とか単体でテストしたい内部関数が山ほどある。(twitter/koba0367)
private メソッドをテストすべきか問題、原則論だけだと袋小路に入りがちだから、private メソッドをテストしたくなる具体的な場面について議論したほうがいいと思う。
自分がレビューでよく見る例としては、複数の public メソッドの重複部分を private メソッドに抽出した結果、濃い private メソッドと薄い public メソッドが一対多関係になる場合が挙げられる。設計としては間違っていないし、わざわざ public メソッド経由でテストする意義があるかというと微妙。(twitter/ts7i)
きれいなインターフェースを作ろうとすればするほどpublicメソッドじゃない部分に複雑性を追いやることになり、壊れた時に手戻りが大きすぎると思ったら、プライベートにバックドア開けてでもテスト書くようにしてます (twitter/mizchi)
しかしプライベートメソッドに対するテストを書こうとすると大概リフレクションなどで可視性の制限をすり抜けるとかメソッドの可視性を変更するといった回りくどさやコストの導入が必要になるので、じゃあプライベートに対するテストはそうしたコストに見合うのかが問題になる。
伊藤さんの答えは「原則書かないほうがいいという大前提のうえで、どうしてもというときは、"これはテストのためにpublic"にしているというコメントの上でpublicにする」だった。
自分は「テスタビリティのためにメソッドをpublicにする」っていう"実プログラムの挙動を変えること"の方が、「privateなメソッドをテストコードのみsendで叩く」よりも怖いって思ってることに気がついた。(twitter/highwide)
単体テストがホワイトボックステストだとするなら、publicかprivateかでテストの有無が変わるのは明らかにおかしいだろ。ややこしいロジックはprivateに隠蔽すべきだが、そこがテストできないなんて。 (twitter/kmaebashi)
private メソッドをテストするかどうか? まず最初に言っておきたいのは public/private は抽象の設計の問題であって、テストすべきかどうかとは当然無関係だろうということ。(twitter/qeigoi)
特定の言語の貧弱な機能に思考が制限を受けて誤った結論を出している典型的な例。
https://b.hatena.ne.jp/entry/4684049296462116226/comment/megumin1
テストの粒度とメソッドのアクセス権は独立したものなので、「プライベートメソッドをテストすべきか否か」という切り方自体がナンセンスではあるのだが、現実問題としてはアクセス権がテストに影響するので難しい。(twitter/AoiMoe)
private メソッドのテストはすべきかどうかというより、「できるべき」であって、それができないというのも、ある種、言語機能とテストのインピーダンスミスマッチと言えるのではないだろうか、と思っている。(twitter/aetos382)
RustやGoではプライベートメソッドに対するテストが簡単にできる。
そのためかプライベートメソッドをテストすることに対して拒否反応があまりないようだ。
Rustのテストはファイル内とtests/以下の2箇所に書ける。
テストには開発用のホワイトボックステストと仕様確認用のブラックボックステストがあり、前者をファイル内に、後者をtests/に書けば良い。
例えば度々議論になるプライベート関数のテストについてはもちろんホワイトボックステスト。(twitter/blackenedgold)
Rustではプライベートに対して何の手間もなくテストが書ける。
Rustでprivateなメソッドのテストを書きたいなら、そのメソッドのすぐ隣に書けば内部アクセスになるから普通に書けるよ、ってのは目からウロコだった。できるだけ近いところにテストを書こうっていう文化と相まって最高。(twitter/kuy)
Rust のようにユニットテストをプロダクションに混ぜる方式はおれもいいと思ってて、テストとプロダクションを分離することで private 関数のテストができない問題があるけど(テストしたければクラスを分けよ/メソッドを公開せよ/テスト必要なし、に分かれるよね)、そもそもこの議論が不要になるよね (twitter/nunulk)
昨日「private method の単体テストは書くか否か」という話題がちょいとあったのだが、わしは当然書く感じの昨今を送ってきたもんで何で書かんのやくらいに思ってたんだけど、Go だと private なやつのテストが書きやすいってのがデカそう。(twitter/pankona)
golangのテスト書いてたけど、テストプログラムの名前空間(パッケージ)が、対象のプログラムと一緒で、そのためプライベートメソッドでもテストできるの良い感じ (twitter/74th)
Goのテストコード、テスト対象と同じパッケージにすればエクスポートしてない関数でもなんでもテストコードから参照できるんだけど、これってプライベートメソッドはテストすべきか議論するよりテスト書けと言われているようで好き。(twitter/plan9user)
「プライベートメソッドをテストするか?」とは別に「ドキュメントをソースコードと同じファイルに書いていい(文芸的プログラミング)なら、単体テストをテスト対象と同じファイルに書いてもいいのでは?」というのも論点になるかもしれない。