スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

C#で仕事してましたが退職しました











C#で仕事してましたが退職しました


 諸事情で4月から2ヶ月間の休職をしていましたが、この会社 (以下、N社と記述します) では2ヶ月を超える休職は許されていないため、 先ほど正式に退職をしてきました。

N社は僕が2年制の専門学校を卒業し、新卒で入社し丁度2年間務めた初めての入社先でした。


 諸事情とは抑うつ状態と呼ばれるもので、まず一番語りたいこととは別なので別の記事に書くことにします。 (現在治療中)


 この記事は備考録がてら、僕の職歴やポエムを書いたものです。





  1. N社での主な職務




  1. 休職に向けた引き継ぎ作業

  2. 次の入社に向けた想い




新卒だけど社内インフラ作るマン


 さて僕の初めてのお仕事ですが、社内のインフラ環境をコスト削減のために 自前でホスティングするようにしよう…というものでした。


 例えば、以前はメールサーバを外部のSaasで運用していたそうですが、 今回レンタルサーバ上にPOP3,IMAP,SMTPサーバを乗せる形でリプレースしました。 ( 結果から言うとメールサーバについては失敗しました…すまぬ…すまぬ… )



  • Saasからレンタルサーバ上での運用にリプレース



  1. メールサーバ

  2. N社ホームページ(Apache httpd), SSL対応



  • 新規導入



  1. 社内SNS (Apache httpd -- VirtualHost)

  2. DNSサーバ(セカンダリ)


またプライマリDNSサーバはお名前.comを使用しました。


 今更だけど、新卒に任せていい仕事だったんでしょうか? これ。

いい機会を僕にくれるために、機会を提供してくださったのだと思います。


 その後、僕は受託系案件の唯一のインフラ管理者になるのでした。


結局Nginx触れてない!!


C#バリバリ食べるマン(受託案件,業務アプリ)


 社内インフラのお仕事がある程度落ち着きましたので、受託開発事業がスタートしました。


 見出しの通りですが主にC#を使っていわゆる業務アプリケーションの開発を2件ほど行いました。



  1. WinForms + MySQL (工事会社の材料在庫,赤字黒字の計算,顧客管理用ソフト)

  2. WPF + MS SQL Server 2014 (工事状況,子会社と顧客の管理用ソフト)




 僕はここでC#のよさに完全に目覚めたので、今まではOCJPIIを取るほどJavaに頼っていましたが 最近はJavaを使うならC#というレベルです。




こちらの2件をスパイラル開発しながら、顧客環境に対して更新のその都度納品していました。


 ここで人によく驚かれるのが開発体制ですが、開発チームは以下のような構成でした。



  • プログラマ(僕) -- 1名

  • テスター 兼 デバッガ (新入社員の誰かが時期によって割り当てられ、よく入れ替わる) -- 1名

  • SE (顧客要件のまとめ役) -- 1名


 PMはいません。


 まず'WinForms + MySQL'の構成で作ったものがN社の初受託案件でしたので、開発体制が整っていません。

なので新卒な僕でしたが必死こいてなんとか現状で出来る開発環境の整備を行いました。


開発チームの開発環境の整備(Redmineなどのチームへの導入)


Redmine導入


 開発初期にはテスターさんさえいませんでしたがそれはさておき。

最低限、PGとテスターさんのやり取りは空中で行うよりもプロジェクト管理ツールを使ったほうがいいだろうと思ったので Redmineをクラウドサーバに導入しました。


Redmineは以下の用途で使用しました。



  • 僕がチケットとしてテストして欲しい内容を発行し、(OK|NG)判定をしてもらう

  • テスターさんがデバッグして見つけたバグをチケットとして発行し、僕がそれを見てプログラムをFixする


 このRedmineさんは本当によくて、僕が退職する最後まで僕を支えてくれました。

ありがとう…ありがとう…。


gitbucket導入


 開発案件にはVCSが必須です。

ですのでgitを採用しているgitbucketを導入しました。


 jarを起動するだけでも十分すぎるどころか、 いつも僕が使用しているGitHubと同じレベルで使えるすごいものです。

(Pull Requestも使えます)


 もしgitサーバを採用したいどなたかがいれば、GitLabと比べてこちらの採用も考えてみてはいかがでしょうか。



  • 1つ目の案件では1人でgitgitしてました

  • 2つ目の案件ではUI部分の半分以上をテスターさんが担当してくれたので(!?)、UI部分はGitHubフローで開発しました




 その他Slackなどの導入も考えましたが、要員が全然いないし、やめました。

CIも導入したかったですが、テストを書く暇がなく、またテストの利点を上長に説明しきれず断念。


他の受託案件用の色々を導入するマン


 さて、僕が入社してから1年後くらいでしょうか、本社に新しい方が未経験既卒で入ってきました。

受託案件要員とのこと。 おおっ! と思いましたが、開発案件要員ではなかったようです…。


 その方はデザイナなので、N社HPのリファインやWebサイト作成案件を担当していました。

その方の担当案件用にWordPressを建てて欲しいと頼まれることがとてもよくあったので、 僕は開発の傍らでWordPressめっちゃ建てるマンを担当していました。



  1. (その案件用の)レンタルサーバにhttpdを導入する

  2. httpdにWordPressを導入する



  • MySQLデーモンの導入

  • 初期設定



  1. 導入したWordPressをVirtualHostとして登録したりしなかったり




休職に向けた引き継ぎ作業


 結局これが僕の最後の仕事になりました。


 実は上に書いた僕の担当してきた全てのプロジェクトは、 要件定義書も受け入れテストも、操作ドキュメントもプロジェクト仕様書的なものもありませんでした。

( DB定義書は僕の脳内では管理しきれないので、個人的に書いてた )


 操作ドキュメントについては「作ろう!」という動きがあったのですが、PMが不在のためいつの間にか潰れていました。

(操作ドキュメントを作ってもバージョンが上がるとあっさり仕様が変えられるため、 操作ドキュメントを更新する要員がいないと追随できない故、潰れた)


 そのまま僕がフェードアウトしていっては全て崩れるので、新規にプロジェクトの仕様書を作成することになりました。



  • 超ツライ

  • 過去の作業を洗い出すような作業ツライ

  • 何かを作る作業がしたい


 その際の使用ツールは以下



  • 画面遷移図はMS OfficeのPowerPoint

  • CRUD図はMS OfficeのExcel

  • それ以外はMarkdownでgitbook


 上記の選択は「速さ優先」で選びました。

図的なものに対してPowerPointは超優秀で、文書的なもの対してはMakdownが超優秀です。 マトリクス的なものを作りたいのならExcel方眼紙が優秀ですね。

そしてMarkdownをドキュメント用にまとめるためにGitBookを使いました。




 かつてGitBookでこんなものを作ったのですが、超いいですよ。

Haskellでわかる群論の代数的構造


そうです、gitbookは本来技術書を書いたりするものですが、ドキュメント作成用にも使えるのです。






最後


 N社に入社し、色々本社環境(受託案件に対する環境)が整備されていなかったり、 よくわからないことを言われて傷ついたりすることは多くありましたが

得たものは大きいです。…C#のレベルが上がったとか、実際に色々できた…とか。


 強いて言うとすれば、僕が復職せずに退職を決めた理由は

「N社には職業エンジニアしかいなかったから」

でした。


このような環境は、趣味もプログラミングな僕にはあまりにも過酷でした。


僕らN社本社の従業員はほぼ毎日定時帰り、休出も1年に1~2日あるくらいでした。 超いい環境だったと思います。


でも、僕にとって最近の技術動向や好きな言語, 熱意の語り合いのできない環境は… 仲間が全くいないと錯覚してしまうには十分なものでした。 (失礼な物言いです、すみません)


 願わくば、次の勤め先では「仲間」が欲しいです。 残業が必要になったりしても、休出が必要になったりしても…仲間と一緒にそれすら楽しめるような… そんな会社に勤めたいです。




 さて、締りのないものになってしまいましたが、この退職記事は以上です。


 一応…ですが、こんな僕に連絡をいただける奇特な社がいた時のために僕のプロフィール兼連絡先を載せておきます。

その時は…ぜひ挨拶させてください。



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。


スポンサーサイト

HaskellでTwitterにTweetする

HaskellでTwitterにTweetする



About




  • 成果物

  • - hs-gorira(GitHub)のcommit 8a2a7bddb33303dd8b4aa5adb4dc7f7711ac47bd
    - あいやゴリラ(Twitter)




    • 参考URL

    • - HaskellでTwitterにpostする-yunomuのブログ
      - HaskellでOAuth-EAGLE雑記
      - Haskellのコード150行で,Twitterに投稿するだけのクライアントを作ったよ-プログラムモグモグ
      - GEToauth/authorize




      • Haskellの超便利なやつ

      • - Stackage
        - Hoogleみたいに型での検索とかできる
        - なぜかHoogleで各hackageの関数が検索できなかったのでこちらを使用した




        Detail



         成果物のコードのベースつまり大部分はyunomu氏のモノです、感謝 :P




        • したこと

        • - コードを少し整理した ( 少し )
          - 動かなくなっていたところを直した
          - Twitter API 1.1用のコードにした ( 少しの書き換え )
          - Readインスタンスの型の値を外部ファイルから読み込んでみた ( ちゅーんさんの教え、Thanks :P )
          - Conduitがどのようなものなのかを少し勉強した ( 少し )
          - 美しい型の海を泳ぐ ( 綺麗 ( モナドトランスファーわかってません ) )
          - Conduitの($$+-)関数を探し回っていた (Source型とResumableSource型の問題)
          - すごい人が「モナドトランスファーはliftIOするとなんかIOが動く」って言ってたの、本当だ…って思った



           面白かった話の一つとして、設定を外部ファイルに持つときに僕はyamlを使おうとしていたのだけど、

          ちゅーんさんが「Haskellで読み込みたい設定値がReadインスタンスの型の値なら、read(とreadFile)だけで読み込める」(要☆約)

          って言ってたから「確かに!!」ってなったというのがありました。
          すごいです。 しゅごいい。



          こんなん。




          readFooSetting :: IO SomeType
          readFooSetting = do
          foo <- read <$> readFile "path/to/config_file"
          return foo


           設定値を1つのファイルにまとめなくていいケースであれば、yamlやjsonすらいらないね!!
          すごい!!




          ほげ



           そういえばyunomu氏のブログ記事にsignOAuth関数の型にMonadUnsafeIOというのがあったけれど、
          今のバージョンだとちゃんとUnsafeじゃなくなってたのでよかった。(大丈夫)



上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。