taisablog

taisa's engineer blog

61H3sFk1AhL._SX353_BO1,204,203,200_

投稿日:

-

執筆者:

関連記事

no image

2016年の振り返り

2017年になってもう3ヶ月が過ぎようとしているけど、今年初投稿なので今更ながら2016年の振り返りをする。 2016年前半 2016年前半はWeb業界に来て初めてWebサービスの受託開発をした。5年前にSIerからWeb業界に来て以来初めての受託開発だった。プロジェクト前半は若手エンジニア2人いたが、色々な都合により後半は自分1人になりそこからは1人最後までやることになった。 SIerにいた頃、小さめのプロジェクトであれば自分一人でやることはあったが、今回のような大きめのプロジェクトで0→1のサービス開発をマネージメントしながら開発するというのは初めてだった。ローンチ後は何事もなく稼働しているのでよくやったと思えたもののWebサービスの受託開発の難しさを思い知った。 Laravelについて 開発はPHP+Laravelを使った。初めて使ったフレームワークだったが、日本語ドキュメントがしっかりしているのでほぼそれだけで開発を進めることができた。 https://readouble.com/laravel/5.1/ja/installation.html 主なプラグインは以下を使った。 laravel-debugbar laravel-ide-helper Intellij Laravel-Plugin 2016年後半 サービス開発に戻り、戻ってからは主に以下のことをやった。 決済システム導入 CI環境の再整備 ステージング環境の整備と追加 PHPUnit+Phakeによるユニットテストの本格導入 サーバのオートスケール 決済システム導入 これは、受託開発が都合により伸びた為、設計までして他のメンバーに引き継ぐすることになってしまったが、その後、また引き継ぎ開発を進めていった。「決済」といったシステムを扱ったことで良い経験ができたように思う。 CI環境の再整備 サービスの拡大、人の入れ替わり、増加により以前自分で立てたJenkinsのCI環境が整備されずひどい状況になりつつあったので整備した。Jenkins2へのバージョンアップもこのタイミングで行った。 ステージング環境の整備と追加 人員に対してステージング環境があきらかに枯渇していたので再整備と追加をした。具体的にはシステムだけでなく運用者もリリース前テストで利用する為、ステージング環境利用待ちのようなものが発生している状況だった。また、いくつかのサービスがつながっていることもあり環境がブラックボックス化していたのを再構築しドキュメント化しつつ環境を増やした。テスト環境大事。 PHPUnit+Phakeによるユニットテストの本格導入 UnitTestも以前は書くよう推奨していたが形骸化している状況だった。また、新卒メンバーが入ってそもそもテストが書けないメンバーもいる状況だった。これに対して、ハンズオンを開催しある程度書けるところまで持っていき、それ以降はプロダクト開発時にフォローするという形で最終的にはメンバー全員が必ずUnitTestを書くというところまで持っていくことができた。また、テストが増える従って、修正時の確認コストが減り品質が上がってきている実感が得られた。 サーバのオートスケール アクセスが増え、ときに突発的に高負荷が来るという事象が増えてきて、その度にサーバをたて、デプロイスクリプトに新しいサーバを追加しデプロイするということをやっていた。それもいい加減面倒だし事前アナウンスがなければ対応ができないので、常にS3に最新ソースを配置しておき、あとは負荷検知により自動的にサーバを増やすという仕組みを導入した。 社外活動とアウトプット 2015年末に子供が生まれたことと2016年の前半の受託開発に忙殺されたことで全くできなかった。2017年は落ち着いて来たこともあり活動を増やす予定。 まとめ 2016年後半の取り組みに関しては、2017年から始めるスクラムの取り組みの為の下準備という意味合いもあり、テストや環境系の整備をメインに行った。これにより2017年からの取り組みをスムーズに始められたと思う。

プログラミング言語の歴史を見える化してみた

「まつもとゆきひろ 言語のしくみ」と「Talk Python #100」のGuidoの回をたまたま同時期に見聞きしたら言語の歴史を調べたくなった。言語は少なからず他の言語から影響を受けたり、他の言語に影響を与えたりしている。ということでその影響関係をwikipediaの情報を元に見える化してみた。 まつもとゆきひろ 言語のしくみ ぐちゃ〜。。。これだけ見ると複雑に絡み合ってよくわからない。ただ見たい言語をクリックするとその言語がフォーカスされどの言語がどの言語に影響を与えどの言語に影響を受けたかが見やすくなる。 使い方 ソースはこちら GitHub taisa831/Langury Contribute to Langury development by creating an account on GitHub. 多重継承が可能なC++で(ただクラスをつくってるだけ)doxygenとgraphvizを使って出力している。 インストール DoxygenとGraphvizをインストールする。 brew install doxygen brew install graphviz Languryをクローンする。 git clone git@github.com:taisa831/Langury.git cd Langury 出力 doxygenコマンドを実行してHTMLを出力して開く。 doxygen open html/index.html select Classes -> Class Hierarchy 対象言語 ここで取り上げた言語はwikipediaの以下を対象にした。 ※一部記載なし。 ※実際とは異なっていたり足りてない箇所があるご注意ください。 各言語について 1950年代:FORTRAN、LISP、ALGOL、COBOL 1960年代:CPL、BASIC、PL/I、BCPL、Simula、LOGO、B 1970年代:Forth、Pascal、C、Prolog、Smalltalk、ML、AWK、Ada 1980年代:C++、Objective-C、Common Lisp、Eiffel、Erlang、Perl 1990年代:Python、Tcl/Tk、Haskell、Visual Basic、Ruby、Lua、Delphi、Java、JavaScript、PHP、OCaml、SuperCollider、R 2000年代:C#、Scala、D、F#、Go 2010年代:Ceylon、Rust、Dart、Elixir、Hack、Swift 1950年代 FORTRAN 1954年にIBMのジョン・バッカスによって考案された。コンピュータにおいて広く使われたプログラミング史上最初の高水準言語。 LISP 1958年にジョン・マッカーシーによってはじめて設計された。高水準プログラミング言語の中ではFORTRANに次いで2番目に古い。LISPの名前は「list processor」に由来している。 ALGOL 1950年代中ごろに開発され、多くの言語に影響を及ぼした。ACMや教科書や学術論文などでアルゴリズム記述のデファクトスタンダードとして30年以上使われ、ほぼ同世代の高水準言語であるFORTRAN、LISP、COBOLに比べて最も成功した。設計者はバウアー、 ルティシュハウザー、 サメルソン、 バッカス、 パリス、 ナウア、 ファン・ワインハールデン、 マッカーシー他。FORTRANで明らかとなった問題を防ぐよう設計された。「ALGOL」は「アルゴリズム言語」を意味する英語「algorithmic language」に由来する。 COBOL 1959年に事務処理用に開発されたプログラミング言語。名前は「Common Business Oriented Language」(共通事務処理用言語)に由来する。 1960年代 CPL CPLはケンブリッジ大学の数学研究所とロンドン大学コンピュータ部の共同プロジェクトとして1960年代に開発された。C言語の遠い祖先となった言語でクリストファー・ストレイチーが関与している。Combined Programming Language「統合プログラミング言語」の意。 BASIC 1964年に米国ダートマス大学にて数学者ジョン・ケメニーとトーマス・カーツにより教育用などを目的としてダートマスBASICが開発された。初心者向けのプログラミング言語として、1970年代以降のコンピュータ(特にパソコン)で広く使われた。Windowsアプリケーションの主力な開発言語であるVisual Basicの文法に影を残している。 PL/I 1964年に生まれ。教育機関、商用、工業で使用され現在も使われている。「programming language one」(ピーエルワン)に由来する。 BCPL Basic Combined Programming Language、Basic-CPLは、1966年にケンブリッジ大学のマーチン・リチャーズが設計した。B言語の基礎で、B言語から派生したC言語は文法的にBCPLの亜種。 Simula オルヨハン・ダールとクリステン・ニガードによってALGOL60を拡張する形で1960年代に開発が始められたシミュレーション用途のプログラミング言語(登場時期は1967年)。世界最初のオブジェクト指向言語であると言われる。 …

no image

2018年の抱負

今年も去年と同様に2018年の抱負を書く。 2018年の抱負 去年と同様にいろんなことはできないので大目標3つ+サブ目標。これ以外にも細かいものはいくつかあるけど別途まとめる。 CTOとして 機械学習 英会話 サブ目標 引き続きフロントエンド CTOとして 今年1月から不動産テックのスタートアップカンパニーであるCocolive.Inc(ココリブ)にCTOとしてジョインした。エンジニアとして長年やってきたけどCTOははじめて。そしてスタートアップながら良いエンジニアが5人集まったという好状況なのでこれまでのチームビルディングの経験を活かしつつ会社を成長させていきたい。自分個人の目標は昔から「日本のエンジニアの地位をあげる・世界に通用する」であるのでこれはぶれないようにする。また合わせて決めていることは「選択と集中」をすること。限りあるリソースの中でできることできないこと、やるべきことやらないことを見定めて1年やる。あとは楽しむこと。 機械学習 今年技術的には一番力を入れる予定。個人的な興味と現在のサービスの性質上なんらかの形で機械学習が導入できると大きなメリットが見込めることから本格的にスタートすることにした。 機械学習の勉強会を開催する 機械学習の話をいろんな人とする プロダクトに導入する 英会話 これまでほそぼそとやっていたけど実践では全然だめという状況なのでこれをなんとか打開したい。今年は1年間継続して実践メインで徐々に英語慣れしていく。去年はPyCon APAC in マレーシアに参加したけど今年は5月末にシンガポールで開催されるということでここを一つのターゲットとしてやる。 コミュニケーションがとれること サブ目標 いくつもやりたいことをこなすなんてことは自分にはできない。けどサブとしてでもやりたいもの。 フロントエンド 去年はサブでなくもはやメインとして活動できてなおかつ執筆もできたので結果的にすごいよかった。JSはやればやるほど面白いので引き続きやる。 VueJSの深掘り Reactの深掘り CSSやる コードリーディング 今年の抱負のまとめ なにはともあれ健康で楽しく仕事ができていることがなによりなので毎日「今日も生き抜こう©」とつぶやきながらマイペースにやっていく

Rust をはじめてみよう!

Rust をはじめてみよう!ということで Rust をはじめてみました。 Rust ってなに? Rust言語は速度、並行性、安全性を言語仕様として保証するC言語、C++に代わるシステムプログラミング(英語版)に適したプログラミング言語を目指している[4]。2006年の開発初期はグレイドン・ホアレの個人プロジェクトだったが、2009年にMozillaが開発に関わり始めてMozilla Researchの公式プロジェクトとなった 参考 : Rust (プログラミング言語) – Wikipedia また、公式ドキュメントが充実しているのでそちらをみれば大体分かるようになっています。 特徴 ゼロコスト抽象化 ムーブセマンティクス 保証されたメモリ安全性 データ競合のないスレッド トレイトによるジェネリクス パターンマッチング 型推論 最小限のランタイム 効率的なCバインディング インストール rustup を使ってインストールします。 $ curl https://sh.rustup.rs -sSf | sh 実行すると以下のように言われるので設定を反映させます。 To get started you need Cargo’s bin directory ($HOME/.cargo/bin) in your PATH environment variable. Next time you log in this will be done automatically. To configure your current shell run source $HOME/.cargo/env $ cargo command not found: cargo $ source $HOME/.cargo/env $ cargo –version cargo 1.29.0 (524a578d7 2018-08-05) rustc というのコンパイラもインストールされます。 $ rustc –version rustc 1.29.1 (b801ae664 2018-09-20 rustc を使って Hello, World! まずは rustc を使って Hello, …

no image

2019年 振り返り

2019年の抱負から今年を振り返ってみます。子供らが遊んでいる中で書いているのでかなり雑です。あとできれいにします。 Google Cloud Platformを使う 2018年後半から2019年前半にかけて副業でFirebaseでスマホアプリのサーバサイドをやりました。感じたことはGCPめっちゃいいということ。メインで利用したのはCloudFirestoreとCloud Functionsでしたが他にも色々できるのですごい進化を感じました。 数学をやる 2019年前半に中学レベルの数学までを復習しました。やってみて思ったことは業務で必要にならない限りは継続が難しいことでした。 宅建をとる 以下で書いたので割愛 http://3.115.145.106.xip.io/archives/1629 体力をつける 会社でランニング部があり今年は多少ですが走ることができました。また、久しぶりに筋トレも再開することができました。2020年はこれらの活動を増やして継続していきたいです。 やらなくてよかったこと 何年かやってみてやらなくてよいことが見えてきました。というより実務で必要にならない限り習得が難しいです。重要だしやりたいけどサブでやるには継続が難しく思ったような成長曲線が描けません。逆に英語のリーディングは日常で使うのでそっちに極振りしています。 機会学習数学英語のスピーキング アウトプット ブログ:22記事QIITA:2記事 合計24記事ということで月2記事のペースは維持できました。特別気にしていませんが月間PVも約1万と少しずつ伸びてきていていい感じ。 まとめ ここ数年はテックリード、スクラムマスター、マネージメント業務が多く業務で開発をする機会が減っていましたが、今年の後半は最高の会社・メンバー・プロダクト・技術スタックでいろんなことがとても充実した1年になりました。 VueJSTypeScriptGolangAWSMicro Servicesコーチング