立命館大学大学院 / 情報理工学専攻
Trigger
プログラミング教室
400万人が利用する会社訪問アプリ
note株式会社 / iOS エンジニア
2021年8月に子供が生まれました。 子供が生まれてから将来についての考え方が変わりました。
今はなにをやってみたいのかわかっていないのですが生活と近いサービスにかかわりたいなとおもっています。 何年か先の世界において、私の携わったサービスによって息子のかかわる世界がちょっとでもいい世界になってるねと思えるようなサービスや会社にかかわっていきたいです。
FlutterやPHP、Rails、TSをつかったアプリ、サービス開発
未踏アドバンストに採択されたプロジェクトのメンバーとして開発を行いました。 プロジェクトには大きく分類して、4つの開発を行いました。 - Python を使った機械学習 - Rails を使ったウェブサービス - 過去の実績で使った React Native アプリ - 実証実験用の複数の Flutter アプリ これらをつかって、個人個人にあわせた習慣化を支援するというプロジェクトになります。 Rails, React Native, Flutter アプリの開発が私の担当範囲となります。 Pythonの機械学習のアルゴリズム自体の選定などにはかかわっていませんが、部分的には開発を行いました。 React Native 版アプリは古いアプリだっため、現在の環境ではうごかない状態でした。 最新にしたかったのですが、一部ライブラリの開発がとまっていてうごかないなどの問題があったため、その部分を取り除いたりし、中途半端にうごく状態にまでもっていき、Flutter でアプリを作り直しました。 Flutter では、手洗いを支援するアプリ、学習を支援するアプリ、コンテンツ閲覧をうながすアプリなどを開発しました。 このうち、開発の中心だったのは学習を支援するアプリで、これが前述のRNで作られていたアプリでした。
WebView を中心としたFlutterアプリ開発を行っています。 Flutter の WebView Plugin には公式のものとコミュニティのものがあり、プロジェクトの当初は公式のものの完成度が非常に低かったため、flutter_webview_pluginというコミュニティのものを使っていました。 1年ほどたったころ、アプリのメンテナンスの一環として、webview_flutter プラグインに変更しました。 - Flutter - Provider - Firestore - Firebase Cloud Messaging - Web側からカメラや Web RTC を使った機能 また、各種データや通知を管理する管理画面( Hosting ) も開発しました。 Flutter は基本的に非ネイティブですが、webview については各プラットフォームのネイティブのものが使われています。 そのため、プラットフォームに依存した不具合が発生したりもしました。 具体的には、 - カメラやWeb RTCを使う際の権限まわり - アラートの表示 これらをプラグインに手を入れてバイパスするようにしたり、不具合を修正したりしました。 GitHub Actions を使いテスト、ビルド、デプロイまで行っています。 またサービスによっては、Rails や TypeScript で管理画面を作ったりもしています。
提供していたサービスの内容上、かなり重要な個人情報を持っている状態でしたが、このプロジェクト以前では、ユーザのデータは本番 DB の中にだけ存在し、統計分析や解析などを実施することはほとんどできませんでした。これらのデータから個人情報に該当するデータなどを削除し、匿名化を進めたユーザデータを BigQuery にも複製するということを行いました。 ただし、データベースの規模的に全てのデータを同期し続けることは困難で、日毎の partitiontime を設定して管理するようにしました。 データの移行には Embulk を使い、データが正しく入っているかどうかの確認のために、GAS を使って Bigquery のレコード数などを Slack に投稿するようにしました。 バッチ処理は Kuroko2 を使い実施しています。 このプロジェクトの保守は現在も継続して行っていて、最近ではいれるデータの文字を正規化したりするなどを増やしています。
以下の文章を書いたときには Jenkins 大好きでしたが、今は、Github Actions と Self hosted runner にくら替えしています。 Self hosted Runner すごくいいです。 ---- あまり優秀な Jenkins おじさんはできていないですが、社内で Jenkins のマネジメントをしています。 また、Jenkins のアイコンなどを使って、ChatOps 的に Reply を投げると指定したブランチのアプリをビルドしたり、Github の issue の進捗度合いなどを Slack に投稿する偽 Jenkins の管理をしています。 社内ではそれらの、Jenkins の皮を被っただけの偽物も含めて Jenkins と呼んで、親しまれています。 それぞれの ChatOps 機能などに、独自のアイコンを使うというのもよかったと思うのですが、Jenkins というペルソナを勝手に作って、テストが落ちているときは怒っている Jenkins、通ったらいつもの Jenkins といった風にしたのは、いい選択だったと思っています。 何故ならば、特定のキャラクターとしての Jenkins がいるおかげで、会話の中で話題にしやすくなる。また、多機能な Jenkins となっているので、じゃあ、あれも Jenkins にやらせてみようか。という風に気軽に機能を追加しやすくなりました。 Jenkins などではなく、アイドルアイコンでやるというのもありとは思うんですが、テストが通らなくて、そのアイドルのことが嫌いになるといったことがおこると非常に良くないので、Jenkins というのはちょうどいい距離感のおじさんだと思います。 Jenkins 愛が強くてポエムになってしまっているのですが、「Jenkins」でやっていることとしては。 - Deploygate への複数ターゲットの Deploy (Jenkins) - Danger の実行 (Jenkins) - Carthage や Bundle のアップデートおよび、テスト、Pull Request の作成 (Jenkins) - Unit Test (Jenkins) - UI Test (Jenkins) - iTunes Connect 用の Build ( Jenkins ) - ChatOps で特定の Branch を Build ( Jenkins, hubot) - 朝会のお知らせ ( AWS Lambda) - Issue の進捗状況(AWS Lambda) - 定期的なタスクのお知らせ (AWS Lambda) - Bigquery へのデータ送信状況 (GAS) - 本番環境、ステージング環境へのデプロイ - etc GAS や AWS Lambda を使っているのはそれぞれのリソースにアクセスする必要があったりするためです。(Jenkins)と書いているのは Jenkins CI で動いている Jenkins です。また、Jenkins でやっていることの多くは、Fastlane を使って実装されています。 社内で Jenkins を快適に動かし続けるために、社内の WIFI についても管理しています。 Jenkins サーバ自体は、止まると絶対に仕事ができなくなるみたいなものではないので、結構オフィスの端っことかの微妙な位置にいます。そのため、そこまでしっかりと Wifi を飛ばすためには少しは、Wifi について考えないといけないという状態になります。 したがって、Jenkins にいいネットワークを用意することは、オフィスにいいネットワークを用意することに繋がります。RTX1210 とバッファローの WifiAP を組み合わせて、社内ネットワークを構築、管理しています。 結局、Jenkins は WifiAP のそばに置くことになったので、それほど Jenkins にはネットワークの状況は関係なくなったのですが、継続して RTX1210 と AP を管理しています。
iOS アプリチームに以下のツールやサービスを導入し、Developer experience を向上させました。 - Bitrise - Danger - SwiftLint - SwiftFormat - Fastlane なお、現在 Bitrise と Jenkins を併用しているのですが、Bitrise 一本にする予定です。 CI では、以下の処理を行っています。 - テスト - ドッグフーディング用のデプロイ - リリース用デプロイ(審査にも出します) - Danger Swiftlint や、SwiftFormat は Xcode で実行するようにしています。 これらを導入したことで、無駄やなんどもやることにかかる時間がへり、快適な開発環境を導入できました。
このプロジェクトは,技術関連の内容よりも事務やオフィスのセキュリティ対策といった内容が中心となります.ただし,このプロジェクトをもとに技術関連の作業が必要となる場合もありましたが,インフラプロジェクトなどに含まれているためここでは,それ以外の部分いついて書きます。 現職はユーザの個人情報や比較的コアな情報を取り扱う業種だったため,ISMS を数年前に取得しました。 セキュリティに関連する資料や規則,文章としては存在していなかった現状の明文化などの補助を行いました。 また,銀行などと契約する際に,社内のセキュリティについて取りまとめたチェックシートを作成する必要があり,その作成などを行なっていました.セキュリティチェックシートは,まるで尋問されてるみたいと言わせるような,過酷なものでした。 電子決済等代行業の取得にさいしても、同様に進めました。
アプリ、PHP開発
アプリ開発
高校の時にステージイベントを企画運営
プログラミング教室
プログラミング教室
喫茶店の厨房
プール監視員
立命館大学大学院 / 情報理工学専攻
プログラミング教室