タレントがより多くのおすすめ求人を閲覧し、自分にあった求人に出会うための施策。
今まではおすすめ求人を20表示できなかったが、この実装により最大100件まで表示できるようになった。
FlatListを利用して下部に達した際に、次の20件を取得するように実装。
ListHeaderやPlaceHolderViewなど、コンポーネントを整理した上で実装。
(ロジックの整理をしだすときりがないので一旦コンポーネントの整理にとどめた。)
マッチングする上で希望金額・希望時間を知らなければミスマッチが生じてしまう可能性がある。
こうした課題に対する解決策としてエントリー時に希望金額や時間を入力できるよう実装。
リファクタリングをしたこともあり、実装自体にさほど実装の工数はかからなかったが、デザインはもちろん、仕様を合わせる必要がありタレントwebとのコミュニケーションが必要な実装であった。
希望金額の初期値ロジック
・特に連携を取る必要があり、QAを入念に行った。
・ヒラマサの実装したロジックを読み込み、github上でコメントをした。
(それを踏まえて自身でロジックを作成しコメントした。https://github.com/anotherworks/FC_Cloud/pull/1118)
・デザイナー(kimさん)と積極的にコミュニケーションを取るようにした。
・エントリー取り消し機能
・前提条件入力フォーム
・遷移時に先に持っている情報を表示する(予定)
以上のように、初期実装の頃と比較して機能が増えてきており、複雑になったため、今回の「前提条件」を含め今後の機能追加のためにリファクタリングしておく必要があると考え前提条件実装の前に着手。
MemberProjectDetailScreen
├── AboutEntryModal
├── ActiveProjectFooter
├── ArchivedProjectFooter
├── FormProjectFooter(前提条件実装時に追加)
├── NotFoundProjectContent
├── ProjectDetailConteint
├── ProjectFooter
├── SuspendedProjectScreen
├── hooks.ts
├── index.tsx
├── presenter.tsx
└── types.tsx
以下の理由から、Footer部分が複雑になると考え、ProjectFooterとして切り出し、更にProjectFooter内で以下の3つに分けた。
・エントリー取り消し、前提条件入力フォームはどちらもFooterでロジックを管理している。
・Footerにアニメーションを実装していく予定なのでアニメーションのロジックもFooter内に閉じ込めたい。
各ファイル説明
ActiveProjectFooter:通常の「エントリー」と「♡」ボタンのあるFooter
ArchivedProjectFooter:「募集終了しました」ボタンのあるFooter(statusがarchiveのときに表示される)
FormProjectFootre:前提条件を入力するためのFooter
また以下の理由から、エントリーやエントリー取り消し、前提条件フォームのState管理は親であるProjectFooterで管理している。
・エントリー取り消しのSnackbirdはの表示はActiveProjectFooter、エントリーの関数はFormProjectFooterで叩く必要がある。
・stateとstate変更が別のコンポーネントになるので親で管理する必要がある
詳細内容はProjectDetailContentで表示している。 →ProjectDetailScreenでは大きく分けて、ProjectDetailContentとProjectFooterを呼び出している。
自分の相場感がわからないと、エントリーしづらい。といった要件のもと実装。
wabviewにて実装を行ったが、androidでpdfをwebveiwで表示することができない問題に直面(OSの問題らしい) solutionとしては指定したURLの文書ファイルを変換し、ウェブブラザ上から閲覧可能にするサービスであるgoogleドキュメントビューアを利用して対応。
アプリの場合メッセージがコピーできず、困る時がある。といった意見ががタレントインタビューなどで上がっていた。 ex)企業から送られてきたURLをカレンダーに貼りたい。面談時にzooomのpasswordをコピーしたい等。
solutionとしてはメッセージを長押しした際にActionSheetを表示し、コピーを選択できるように実装。
メッセージコピーを実装するにあたって、スムーズに行えるよう着手。 今後ActionSheetでの機能が増えてもすぐに実装できる。 androidでメッセーじページの動作が遅いと言われたこともあり、メッセージのページネーションを検討しているため、今回リファクタリングを行った。
構成
MemberMessageDetailScreen
├── MessageDetailHeader
├── MessageDetailTextInput
├── MessageItem
├── MessageLitemLIst
├── MessageItemListHeader
├── SpeechBubbleMine
├── SpeechBubbleOtherPerson
├── hooks.ts
├── index.tsx
├── presenter.tsx
└── types.tsx
・機能していないロジックを削除してパフォーマンスを向上した。(無駄にmapされていた)
・それぞれのコンポーネントで責務を持たせるような実装を意識。
ex)SpeechBubble内にメッセージ削除やコピーのロジックを記述するように実装。
→親にロジックを集中させると複雑になるのでなるべく責務を分担したかったから。
外部からのる流入に対する広告計測のためAppsFlyerというミドルウェアを導入。
前スプリントで調査と見積もりを完了していたためスプリント4では実装から入った。
調査結果からAppsFlyerの導入はトラッキングに該当するのでオプトインダイアログを表示して許可を得るように実装。(ios)
ダイアログの表示にはreact-native-permissionsを使用。
タレントインタビューでも上がっているAndroidのパフォーマンスの問題に対するsolutionの一つ。
javascriptのエンジンをjavascriptCoreからhermesに変更。
前々から存在は知っていたが、ejectもしくはeasbuildを利用する必要があったが、先月末にejectが完了したため、実装可能となり着手に至った。
実際に以下の恩恵が得られた。
・初期起動時間が6秒程度から→3秒程度に(端末によって異なる場合あり)
→起動からhome画面に遷移するまでの時間を計測
・ファイルサイズが53MB→45MB
・全体的にパフォーマンスが向上
・業務委託とはいえ正社員として入る予定であるため、プロジェクトに慣れることが大切だと思い、全体的に
・「DropdownAtomの廃止」タスクでは最初ということもあり一つだけ実装してpullRequestを渡すなど工夫を行った。
→https://github.com/anotherworks/FC_Cloud/pull/1055
・自分の作成したReadmeを見ながらミヤゾンさんに実際に環境構築してもらい、Readmeの内容をより良いものにして迎え入れた。
・1on1の実施
自分はコードレビューをしてもらっていないので個人的にQAの時間を大幅に設け、androidでの確認も必ずするようにしている。 →nativeの変更があったときなどはbuildし直す必要があったり、初回起動が遅かったり意外と面倒です。 検証に上げたものは実際に差し戻しは一つもなく、QAも比較的少ない。
→特に月曜日はお休みしているので自分がいなくてもQAできるよう前日書くことを心がけた。
今月からバージョン履歴のテキストも担当し、ほぼすべてのリリースフローを任せていただだいた。 一部の人は見ており、履歴がしっかり書いてあると好印象を与えることができると思っている。
みんな楽しんでくれたと思っています、、、笑
https://github.com/anotherworks/FC_Cloud/pull/900
Colorの定義をlandScapeで定義されているものに合わせる。
粒度が低いものから進めていくのが良いと判断し、早めに着手。
→androidにおいて特集求人ページのヘッダースタイルが崩れていたのを修正
マッチングブーストのときに苦肉の策でBottomTabにRouteModlをおいていたが、MemberRouteStackにおいたほうがわかりやすいと判断し配置を変えた。
https://github.com/anotherworks/FC_Cloud/pull/973
https://github.com/anotherworks/FC_Cloud/pull/1056
→前提条件実装の際にChrckBoxが存在したため、さほど時間はかからないと判断し実装。
画像がうまく取得できなかったときに再現する可能性が高い。
resultがundefindeの場合、lorderを非表示にし、処理を停止するよう修正。
https://github.com/anotherworks/FC_Cloud/pull/1226
cognitoを利用しているUserがアカウント削除した際、firebaseのdeleteメソッドを叩こうとしており、エラーが発生していた。
cognito認証の場合はfilebaseのメソッドを叩かないようにして対応