とりのとりかご

とり自身の活動や考えたことを書き残しています。

DMM.comさんの就業型インターンに参加させていただきました

はじめに

お久しぶりです、とりです。前回の記事の更新から1ヶ月が経ちました。奇跡的に速いスピードでの更新となります。 本記事は 9/1 - 9/30 の期間に参加させていただいた、DMMさんのインターンについての報告になります。

DMMについて

dmm-corp.com

合同会社DMM.com さんは「誰もが見たくなる未来。」というコーポーレートメッセージを掲げたなんでもやっているで有名な企業さんです。その事業数は60以上に渡り展開しており文字通りなんでもやっている企業さんです。インターンに参加させてもらった際に技術はもちろん、ビジネススキル(プロダクト思考)を強く持つエンジニアさんが多く在籍している印象を受けました。

インターン参加までの流れ

DMMさんのインターンには参加対象のものが2つあります。一つ目に自身が参加させていただいた就業型インターンです。こちらのインターンへの参加フローとして基本的には以下の流れになると思われます。

  1. DMM人事の方や社員のかたとお話しさせていただく
  2. スキルチェックシートを書く
  3. 配属先希望を出して、現場エンジニアの方とお話しする

自分は1on1イベントで人事の方と掛け合っていただき、希望先の部署の方と繋いでいただきました。またインターンにはもう一種類あり、DMM GULIDというものがあります。こちらに関しては自分は参加していないのですが、出題された課題(クエスト)のなかで、自分が挑戦したいものを選んで行う形式みたいです。

dmm-corp.com

両者の大きな違いとして、部署に配属された中で課題をこなす or さまざまな部署を跨いだ課題の中で選択するかだと思います。個人的にお話を聞いた感じではDMMさんに興味はあるけど部署までは決めていないという方はGULID、もうすでに興味のある分野があり、実際の社員さんのようなフローで開発したい方は就業型インターンの方に参加することをお勧めします。

就業型インターンについて

自身はDMMさんの就業型インターンにて1ヶ月の間お世話になりました。インターン先の部署はオンラインサロン事業部さんにお世話になり、「DMMオンラインサロン」「SalonLive」のiOS開発を行わせていただきました。1ヶ月の間に行わせていただいた具体的な業務内容を大きく述べると Xcode14&iOS16 への対応になります。

Xcode14&iOS16 への対応

私がメインで1ヶ月間行っていたこのタスクは、想像以上に時間を費やしたものでした。具体的な構成は述べられませんが、大きく時間を費やしてしまった要因の一つとして自身が環境構築面での知識が少なかったことにあります。

今回学んだのはiOSのパッケージ管理ライブラリである「CocoaPods」「Carthage」「SwiftPM」それぞれのメリット、デメリットについてです。それぞれについて一言で説明させていただくと

  • CocoaPods:古くからあるためさまざまなパッケージが対応している。依存関係を細かく指定可能なためカスタマイズ性が高い。

  • Carthage:導入したいパッケージを記載するだけで自動で依存関係を構築してくれるためシンプル。プロジェクトファイルやXcodeプロジェクトのビルド設定を変更しなくて良い。

  • SwiftPM:公式が提供する安心感。SPM形式でのみ提供されているswift-algorithms、swift-atomicsなどのライブラリが使えるのもメリット。

となります。今回この責務わけに大きく時間を取られることになりました。というのはXcode13からXcode14betaにアップデートした際に既存に組まれていた環境で構築すると、エラーまみれになってしまった経緯があります。細かいエラーはさまざまありましたが、結論として Xcode14からBitcodeオプションは非推奨になったことCarthageの更新が去年の6月で止まっていること(ver 0.38.0) なのかなと思います。

CarthageはCartfileにてverを指定してライブラリをインストールすることができます。しかし、いくら最新のライブラリを指定してもエラーが解決されることはありませんでした。細かい修正点については別の記事で書きたいと考えていますが、Carthageが依存関係を構築するたびに「Xcode14からBitcodeオプションは非推奨になりました」というメッセージにてbuildが止まっていたのでそこに何らかの原因があったのだと思います。結果として原因がわからなかったのですが、ビルドログからエラーを吐いているライブラリをCocoaPodsに移行することですんなり解決することができました。

Xcode14からのbitcodeについては非常にわかりやすかったので、以下の記事をお借りさせてください。

qiita.com

その他の取り組み

業務内の時間にただタスクをこなすだけではなく、新鮮なものが多くありました。例を挙げると、ほぼ毎日参加させていただいた活動の一つであるHuman Interface Guidelinesをチームで朗読し理解する時間があります。この取り組みの元として業務時間の5%を自己研鑽に充てようという考えからみたいです。

エンジニア個人で理解するには難しいグリフデザインの話や、逆にデザイナー個人で理解するには難しいダークモード周りの話などをお互いの理解を話し合うことで共通認識を持てる時間でした。他にも互いを尊重し合うことを中心に行われていたスクラムミーティングや、さまざまな事業部のかたが集まって取り組みや情報を共有する「開発組織総会」に参加させていただいたり価値観が広がる1ヶ月間になりました。

過去の開発組織総会についての記事 inside.dmm.com

終わりに

今回DMMさんの長期インターンに参加させていただいた記事を書かせていただきました。

まとめになりますが、インターンの中で最も感じたことはエンジニアの裁量の広さです。主体的に動ける仕組みとそれを許してくれる環境が揃っているので、とても働きやすさを感じました。

自分みたいに、「ただコードを書くだけでなくプロダクトをどんどん良くしていきたい!」という方にはとてもおススメできると思います。大企業なのにベンチャー並みのスピード感があるDMMさんに興味のある方はぜひ選考やインターン参加を検討してみてください。

サイボウズさんのインターンに参加しました

はじめに

お久しぶりです、とり(れるたろ)です。前回の記事の更新から約半年が経ちました。投稿数やホットな話題性がviewの数に直結しやすいブログというプラットフォームで、四季の巡りより遅い更新でゆっくりやっていきたいと思います。

本記事は自身の価値観を拡げる良いインターンだったのでおすすめしたいという気持ちで執筆しています。ただ、過去にインターンに参加したことはあっても、こうして文章としてブログに残すのは初めてなため暖かい目で見ていただけると幸いです。

サイボウズさんのiOSインターンに参加してきました

今回の更新は、題の通り「サイボウズさんのiOSインターンに参加してきました」です。自身は24卒の身で、今まさに就活の最中であります。そんな中で、サイボウズさんのインターンに参加させていただいたため、自分の振り返り用途と共におすすめしたい部分を書いていきたいと思います。

参加したのは以下のiOSインターンになります。 cybozu.co.jp

結論から言うと、「チームワークという手法の考えかたを学べるインターンというのが一番正しい言葉だと思います。

やったこと

先ほども述べた通り、自身はiOSの1weekインターンに参加させていただきました。

以下、インターン公式ホームページに記載されているものを紹介させていただきますと

概要 サイボウズで開発しているモバイルアプリの機能改善をしてもらいます。インターン用に用意した課題ではなく、実際の製品のソースコードに触れて機能開発していただきます。期間中はチーム開発形式で行う予定です。スクラム開発やモブプログラミングなど、普段サイボウズの開発チームが行っている進め方に則って進めていくので、サイボウズのチーム開発の雰囲気を体験することができます。

と、記載されています。最も驚いたのは、言葉通り1週間という短い期間で本当にこの内容を全て体験させていただけたことです。

学んだこと

長くて短い1週間でも学ばせていただいたことはたくさんあります。実務でもなかなか触れないほぼ(全て?)SwiftUIで書かれたプロダクトとそれを実現するアーキテクチャや技術選定、「チームワークあふれる社会を創る」beliefを持った会社さんのスクラム開発、社員さんが把握してないこともある社内制度など知見を広げてくれるイベントが濃く詰められていました。

そんなたくさんの学びの中、サイボウズさんのインターンならでは、かつ個人的に一番大きく価値観が変わったのは モブプログラミングへの認識 かと思います。

モブプログラミング(モブプロ)は、一つの画面を複数人で共有しながらドライバー(タイピングして手を動かす人)とナビゲーター(コードの書き方の指示を出す人)という役割に分かれて開発する手法です。インターン中にも実際、この手法を用いてサービスの新規機能開発を行いました。

私自身モブプロを今まで行ったことがないため「コミュニケーションコスト高いし、別々にやった方が効率良さそう」とか考えていました。しかし、いざ行ってみると理にかなった開発手法でした。

具体的な使用場面としては、ビジネスロジックが絡む新規機能開発においては最大限の効力を発揮するものだと感じました。githubなどを用いたテキストベースのコミュニケーションと比較して、メンバーのサービス認識を常に確認しながら開発を行うので出戻り実装が少なくコードレビュー待ち時間などもありません。そのため、開発時間短縮どころかストレスも少ない手法に感じました。

ただ、運用・保守案件などに関してはよほど人手が余っていない限りはタスクを分散して行う方が良いとも感じました。今後のチーム開発において、とても良かった!と言って脳死でモブプロを選択することは避けていきたいと思います。

オフィスツアーについて

先ほど、オンラインインターンとも述べましたが現地でのオフィスツアーにも参加させていただきました。

自身は生まれも育ちも北海道一筋22年間で自然エネルギーを蓄えながら生きてきましたが、唯一イベントに参加しにくいという懸念点があります。しかし、ありがたいことにオフィスツアー1日のために往復分の交通費と宿泊場所を手配していただき、参加することができました。

今回見学させていただいたのは東京オフィスになります。 goo.gl

オフィスに到着し、初めに思ったのは「どこかの撮影現場と間違えたかな?」です。

まさかIT企業のオフィスを見るため、木と動物に塗れた地元から飛行機で飛んできた先でまた木と動物を見ると思っていなかったためおどろ木でした(上手い)。話を聞かせていただくと、自然と様々な動物がオフィスにいるのは「個性」を重要視しているためのようでした。このような部分まで遊び心と共に社風がオフィスにまで現れているのは魅力の一つに感じました。

今回のツアーでは一般の方が入れないワークスペースの方まで見せていただきました。中はとても広くどの働く場所を取っても、全ての場所に存在する意味があって作られているみたいです。どうやら、新しくデザインされたワークスペースが多いらしく、リモートワークが基本の働き方になってきているWeb業界ではとても珍しく、魅力的に感じました。

他にも、社員さんのパネルディスカッションや懇親会などとても学びが多い1日になりました。

まとめ

今回はサイボウズさんのiOSインターン、オフィスツアーについての記事を書かせていただきました。サービスの開発手法だけではなく、オフィスデザインにまで「チームワークあふれる社会を創る」という考えかたが現れている会社さんでした。

最後になりますが、サイボウズさんとインターンに関わって下さった社員の皆様に感謝の意を申し上げます。

Lottieを使ってアニメーションを自作してみる ①

はじめに

HCB Advent calendar 2021の12日目を担当する れるたろ です。

今回友人に誘っていただき、Advent Calendarに参加することになりました。 サボり癖のある自分は前回の投稿から200日となっており、季節を3つ跨ぐ前に書く機会をいただきマジで感謝してます。

ガチガチ技術系の記事は他のメンバーに任せて、自分はタイトル通り2回に分けてLottieを使った自作アニメーションの記事を書きたいと思います。

1回目の今回は環境構築から簡単なアニメーションの書き出しまで行いたいと思います。

目次

  1. Lottieについて

  2. アニメーション制作環境について

  3. アニメーションを書き出す

  4. 確認してみる

Lottieについて

Lottieは天下のAirbnbさんが提供しているアニメーション作成ツールになります。普通であればコーディングが必要となるアニメーションを、WebサイトからiOSAndroidなどのネイティブアプリケーションにも簡単にアニメーションを追加できる優れものです。

Airbnbや世界のデザイナーはLottieを用いた豊富なアニメーションを無料で提供していますが、自身で作ることもできます。ちょっと簡単なアニメーションを作りたい時や、イメージに沿ったライブラリなどが見つからない時などにも、デザインの統一性を求めたい場合は自作できるに越したことはないと思います。(大量の時間は奪われますが...)

細かい説明は他のまとめ記事などにもたくさんあるのでここでは省かせていただきます。

アニメーション制作環境

具体的なアニメーション制作のために必要な環境としては以下になります。

Adobe IllustratorAdobe After EffectsAdobeが提供するタイトル、イントロ、トランジションなどを作成するために必要なソフトです。本ソフトを使用するにあたってAdobeに納税しなければならないという最大の壁があります。ここで、大半のノンデザイナーがブラウザバックしてしまうと思いますが現状では必須環境かと思われます。何か別の方法があったら追記したいと思います。

BodymovinはHernan Torrisi氏を筆頭に開発が行われているAfter Effectsプラグインです。こちらを使うことでAfter Effectsで作ったモーショングラフィックスを、JSON形式に変換してくれます。以前の環境ではZXPInstallerを使用したみたいですが、現在はAdobe Exchangeから導入できるようになったみたいです。

アニメーションを書き出す

それでは早速アニメーションの作成に入りたいと思います。今回はよっすー(twitter: @Charlotte34342)さんに作成してもらったこちらのロゴを使ってアニメーションを作成したいと思います。

このロゴは自身が所属しているHCBというグループ(?)の活動の一環として行っている学内ハッカソンのロゴになります。ちょうどそのハッカソンの開会式を終えた後にこの記事を執筆しています。(クソ眠い)

この学内ハッカソンについては他のHCBメンバーが記事にまとめてくれると思うので、興味がある方は HCB Advent calendar から飛んでみてください。

それではこのaiファイルを動かしたいパーツごとにレイヤーを分離させ、After Effectsにドロップしてアニメーションを作成します。この辺の操作に関しましては公式ドキュメントが非常にわかりやすいので一読することをお勧めします。

普段であればアニメーション作成後書き出しを行いますが、今回はLottieを使用するため先ほどAdobe Exchangeから導入したBodymovinで書き出します。以下の画像のように ウィンドウ → エクステンション → Bodymovin を選択してください。

上記のように書き出すファイルを選択して、Renderをクリックするとjsonファイルの書き出しが行われます。

もしRender時に何らかのエラーができる場合は環境設定の変更が完了していないことが原因かもしれません。その時は 環境設定 → スクリプトとエクスプレッションにある「スクリプトによるファイルへの書き込みとネットワークへのアクセスを許可」にチェックボックスが入っていない可能性があります。

これも問題ない場合は、作成したアニメーションに対してBodymovinが対応していない場合があります。ここでの詳細な説明は省きますが、こちらのページが具体例を紹介して下さっているので参考にしてみてください。

確認してみる

それでは書き出したjsonファイルが、動くかどうかLottieで確認してみましょう。 https://lottiefiles.com/previewlottiefiles.com

こちらのページにjsonファイルをドロップすることで確認することができます。(初めて使用する方はアカウント作成が必要になります)

こちらはLottieでjsonから出力したgifですが、きちんと動いているみたいですね。ちなみにLottieで出力するgifは1:1の比率でしか生成できないので無駄な縦幅ができてしまっていますが、実装時には問題ありません。

おわりに

以上で環境構築から簡単なアニメーションの書き出しまで行いました。もともと本記事を綴ろうとした理由として、HCBというグループ(?)のロゴアニメーションを作りたいという欲求から、作る工程を記事にしちゃえば時短できるなと考えて執筆しました。執筆するにあたってこちらのページを大変参考にさせていただきました。

第2回では、実際にロゴを作ってWebサイトでアニメーションを動作させる部分まで記述したいと思います。Adobe XDも最近Lottieに対応したみたいなのでそちらも確認できれば良いなぁと思っています。

明日の HCB Advent Calendar は @BaseKeita さんが描いてくれるので、よければそちらも是非。

ブログ始めました

みなさま初めまして、れるたろと申します。
Vlogが流行る現代で今更感がありますがこの度ブログを始めました。

このブログでは主に以下のものを不定期でまとめていきたいと考えています。

本の要約

一つ目は本の要約です。
今まで様々な本を読んできて、自分用にメモツールにまとめてきたのですが

ネット上にわかりやすく共有する → 人に伝える能力の向上

という、いかにも大学生が思いつきそうな
シンプルな方程式から行動に移したいと考えました。

とはいえ、要約に関しては著作権的にグレーな部分もあるので
読んで得た知識を自身の言葉で綴るスタイルになりますね。

僕がよくお世話になっているサラタメさん(Youtubeで人気の本の要約家)のように
自身の立場を意識して特徴を持った紹介したいと考えています。

少しでも誰かのためになれば幸いです。

プログラミング

二つ目はプログラミングです。
高専生だったり、理系大学なこともあって趣味やアルバイトでよく
コーディングしています。

自身のポートフォリオ的なものを作ってこなかったので、
良い機会なので残していきたいと思います。

最後に

失踪しそうなやつ代表のような1つ目の記事ですが
ここまで目を通してくださった方、ありがとうございます。

投稿は不定期ですがたまに目を通していただければ幸いです。