ハンズラボエンジニアブログAWSの話題を中心に、日々の業務やプログラミングの徒然を綴るエンジニアブログです。日常2020年1月28日asahinaPocketはじめにこの記事は2019年11月に実施されたレガシー感謝の日での登壇内容をベースに記事化したものになります。さわやかのハンバーグから生まれました、ハンズラボのあさひなです。詳しくは弊社の以下記事にて説明しております。第1回ユニケージとは?一言でいうならば、Bashのフレームワークです。・DBを利用せず、テキストファイルでのデータ保持などがあります。弊社では一番歴史が古く、かつ現在一番利用されている技術になります。今回はそんなユニケージと弊社のあゆみについて書こうと思います。弊社でのユニケージの現在そんなユニケージですが現在のハンズラボでは技術的負債としての認識が強いです。上記の説明や弊社の記事でドン引きされた方も少なからずいるのではないでしょうか?弊社では全環境AWSに移行しているのですが、クラウドとの食い合わせの悪さや、長期的な保守システム的な限界をまた、いわゆる属人化→担当者の退職を繰り返し遺跡と化してしまったことも多くあります。これ自体は言語に問わず起こり得ることかと思います。読み解くべきコードは独特の記法で書かれたシェルです。ちなみにフロントもシェルです。BashでHTMLを組み立てます。AJAXもシェルです。シェルを叩くとjsonで返ってきます。なんとなく、辛さがわかっていただけたでしょうか?まだ受けたダメージが少なそうな方は先まで読み進めてください重症の方は無理せず一旦休んでください、この記事はいつでも読めますから。ユニケージ採用の背景さて、そんなユニケージですが当然採用理由があります。元をたどると弊社ハンズラボという会社がどうしてできたのか?というところに帰結するのですがもともとハンズラボという会社は東急ハンズの情シス部が前身となっています。そんな中、東急ハンズ側のシステム内製化の指令が降りてきました。・・・という限りなく無茶なミッションが降りてきていたのです。その無理難題をクリアするために当時の社長より採用されたのがユニケージです。小売の同業他社での実績もあったというのもあります。なにより学習コストの安さが最大の利点でした。画面含めたほぼ全てをBash+テキストデータで管理するため、DBやFWなど0からの学習コストが圧倒的に安くすみます。・小売には便利なコマンドが複数ある。・設計思想や開発組織にまで細かく固まっているため迷いにくい(規約によって開発速度を上げる、と書くとRailsっぽいですよね。)など、当時の担当者から見るとユニケージこそが最適解だったのです。実際そのユニケージでシステム内製化に成功し、今日までハンズラボは続いております。・・・・ユニケージがあったからこそ今のハンズラボがあったのです。ユニケージとは、母なのです。巣立ちが近づいている。負債だ、レガシーだなんだというのはあくまで結果論です。当時いなかった人間がどうこういうべきではありません。一方で、現在は状況も変わってきています。弊社ハンズラボにも中途採用でのエンジニアも増えてきました。当時は販売員だった方々も今は立派なエンジニアになってきています。(とても東急ハンズで鞄売っていたとは思えないくらいゴリゴリPython書ける方もいます。)クラウドへの移行も完了し、新規案件などユニケージを用いずに作成することができています。いうならば、親離れの時期なのです。感謝を胸に次のステージへユニケージからの脱却、通称脱ケージ活動は現在社を上げた取り組みの一つです。負債の解消に向けて、様々な取り組みを実施しています。弊社CRMチームを例にあげます。ハンズネットなどのECサイトやハンズクラブポイントのシステムはもともとユニケージメインで書かれていたのですが、メンバーの尽力の甲斐あってかなりの部分のシステムがユニケージから置き代えられています。FrameworkのCI/CDパイプラインを構築するまた、弊社の自社サービスであるPostforこちらはサーバーレスでの実装です詳しくはコチラさらに受託の方でも新規案件や既存の改修の際にユニケージ以外の実装を行うことが徐々に増えて来ました。既存の負債を解消する、という活動だけでなく負債を産まない体制作りのためにモデリング勉強会やリファクタ活動も積極的に行われています。今日まで弊社を支えているすごい技術でもあります。今日まで得られた知見は必ず明るい未来に投資できるはずです。今後も弊社のそんな活動模様は定期的にブログに公開されてゆきますので、いずれ乗り越えた報告ができると・・・・いいなあ。)以上、あさひなでした。