複雑かつリッチな体験を提供するスマートフォンアプリを開発するためのチームワーク、その中でのエンジニアの役割について
複雑かつリッチな体験を提供するスマートフォンアプリを開発するためのチームワーク、その中でのエンジニアの役割について
海外事業向けのiOSアプリケーション開発を担当している西山(@yuseinishiyama)です。クックパッドは現在、海外複数カ国に向けてサービスを展開しています。 主にObjective-Cで記述されたアプリケーションを全面的にSwiftに書き換える機会があったので、その際に得た知見や書き換えるに至った動機を共有します。 書き換えに至るまでの経緯 この項では、書き換えに至るまでの経緯について説明します。 Objective-C期 アプリケーションの開発は2014年7月頃にスタートしました。Swiftの発表直後でしたが、時期尚早ということもあり、Objective-Cで実装することになりました。 Objective-C、Swift混在期 2014年10月頃から、Swiftへの段階的な移行のために、新規のコードをSwiftで書くようになりました。Swiftの記述力や、ヘッダと実装を行き来しな
Githubでの開発 - Issue, Commit, Pull Request, Mention, Code Reviewに関する基本的なルール ゴール 「 チーム で 長期にわたって 生産性を上げる 」 前提 みんながサービス・プロダクトについて自主的に考える組織 エンジニア全員がそれぞれオーナーシップを持ってよりプロダクトを良くすることを考える いわゆるPM職の不在 = コードは書かずに、マネージだけする人がいない これは組織による。(e.g. 外注やディレクター職の存在) けれど、Wantedlyは、多少変化しつつも、より良いサービスを生み出すために、役割の程度の差はあれ全員がプロダクトについて考え責任を持ったほうが良いと考えている。 理想型 図:「青と黄色」のチーム構成が従来の縦割り+統括チーム、「緑(金)色」のところが目指すべきマイクロサービスチーム マイクロサービスチームは、
「アプリは儲からない。2年で収益12,962円(時給4円)」異端開発者「クリーニングス」がそれでもクソゲーをつくり続ける理由。 今回は「アプリがぜんぜん売れない」で有名な、アプリ業界の異端児「クリーニングス」さんにお話を伺いました。なぜ彼らは「クソゲー」をつくり続けるのでしょうか。 ※クリーニングス 会社員βさん(左)、会社員Aさん(右) 「クリーニングス」について教えていただけますか? 会社員A: 同じ会社に勤めている会社員二人で、アプリをつくっている匿名のユニットです。 うちの会社は副業禁止で、バレたらクビになってしまいますので、いつも社員食堂で、こそこそとアプリの企画会議をしています。 どうしてアプリをつくろうと考えたんでしょうか? 会社員A: そうですね・・・ストレス発散の一種でしょうか。本来は「ふざけた人間」なのに「マジメな会社員」として働いているのがイヤで仕方ないんです。 それ
(編注:2020/08/18、いただいたフィードバックをもとに記事を修正いたしました。) これはある仕事熱心な若手開発者のほぼ実話です。2004年の後半、この若手開発者は小さな会社で働き始めました。条件は全て彼の望みどおりでした。給料はいいし、扱うのは彼の得意とするプログラミング言語、アプローチの複雑性、モデリングのアーキテキチャでした。 彼にとって今回の会社が初めての職場ではありませんでした。しかし、ここでの最初のプロジェクトは結果的に 問題だらけ に終わりました。当時、この若手開発者は、機能は絶対に変わらないものだと思っていました。しかし、それは間違いでした。機能が変更されるたびに完全なリファクタリングを行わなければなりませんし、バグを引き起こして膨大な時間を無駄にしてしまいます。彼は、テストを書くといった実直な方法も試してみましたが、書いたテストはメンテナンスが必要な上、書くのに時間
自分は普段ソーシャルゲームの開発に関わっていますが、群雄割拠のグリモバ全盛期にその開発を効率化するために社内ではいろいろな取り組みがなされました。そのひとつにアプリ別ではなく機能別のチームを作るということがありました。結果としてそれは失敗だったと言えるのでそのことについて書いていきます。 背景 当時のソーシャルゲームの主流はカードゲームで、クエスト・レイドをこなしつつガチャで引いたカードを合成して強化していくスタイルが一般的でした。そしてその多くがシステムはほとんど同じで見た目だけを変えた「柄替え」アプリでした。 その中で行われたのが二つの共通化です。 コードの共通化 今までのアプリでは元のアプリのソースからフォークするなどして別のプロジェクトとして独立させそれに対して各チームが開発を行うと言う感じでしたが、今回の共通化ではゲームのコアとなるロジック部分をサブモジュールとして分離し、各アプ
Salsita Softwareは、複雑かつ最新のウェブアプリケーションとモバイルアプリの開発に特化する専門のソフトウェア・コンサルティング企業です。Salstiaの幅広い専門分野にまたがるチームは、ワールドクラスのソフトウェア・エンジニアはもちろん、グラフィックデザイナー、UXスペシャリスト、プロジェクトマネジャーそしてQAエンジニアから構成されています。 Salsitaのエンジニアは2つのグループに分かれており、フルスタック・エンジニアはサーバサイドの実装(Node.jsとPython)、クライアントサイドのJavaScript(AngularJS、React、 BackboneとEmber)、そしてモバイルアプリの開発(iOS、Android、PhoneGap)を担当します。フロントエンド・エンジニアは、モジュール性が高くメンテナンスが容易、かつレスポンシブなユーザインターフェースを
githubで★を集めてるandroid best practiceが勉強になるなぁと感心しておりまして、 思い切って翻訳していいかどうか問い合わせてみると快諾いただけたので翻訳してみました。 (Eclipse + ADTの話もでてますがそのまま訳してます。) 原文 : https://github.com/futurice/android-best-practices (Qiitaに投稿するついでに本家のリポジトリにもプルリクしてくれって言われてるので少し待てばそちらでも見れると思います。) この場を借りて、@askaさん、添削ありがとうございましたm_ _m 大変助かりました。 Summary Gradleで推奨されるプロジェクト構成で開発しよう パスワードや注意を要するデータはgradle.propertiesに書こう 自分でHTTP Clientは作らず、VolleyやOkHttp
Perlを入れたはいいものの ご存じのように、Perlには、簡単なコマンドであれば、いちいちスクリプトファイルを用意しなくてもコマンドライン上で実行できる-eというスイッチが用意されています。 > perl -e 'print "Hello, world!"' また、一行では収まらないような長さのスクリプトでも、使い捨てでよければ、perlコマンドをスクリプトファイルや-eスイッチなしで実行することで、コンソールからスクリプトを入力できるようになります。 > perl print "Hello, world!"; ^D とはいえ、まともにPerlを使おうと思ったら、何らかのテキストエディタが必要になります。Unix系の環境ではviとEmacsの系統がそれぞれ一大勢力を成していますが、Windows環境では、標準添付のメモ帳(notepad)があまりに貧弱なため、たいていの人は自分の好みのエ
はじめに 「プログラミングに関する雑多な事柄」がテーマの本連載、第4回は「コードレビュー」について取り上げたいと思います。 コードレビューの方法 コードレビューは、文章のレビューと似ています。文章と同様にコードの場合も、人に見てもらうことで、わかりづらい部分や冗長な部分など、さまざまな問題点が見つかります。 自分の書いた文章を人にレビューしてもらうには、たとえば、文章をメールで送ります。この場合、レビューのフィードバックはメールの返信という形で受け取れます。 コードレビューの場合も同様の方法で行えます。コードレビュー用の市販ツールなどもありますが、人に見てもらってフィードバックを得るということが一番大切ですから、特に方法にこだわる必要はないと思います。 コードレビューのメリット それでは、コードレビューに具体的にどんなメリットがあるのか見ていきましょう。 コメントの充実 コードを書いた本人
こんにちは。PR TIMESエンジニアの落合です。 前回の記事(Chefを使ってサーバー構築運用! PR TIMES導入編! - BREAK TIMES)で、 Chefの簡単な概要と、導入方法を簡単に解説させていただきました。 今回は、具体的なChefの活用法と構築方法をご紹介させていただければと思います。 PR TIMESにおけるChefの活用について 現在PR TIMESでは、開発環境、ステージング環境、プレビュー環境、本番環境が存在しています。 それぞれ、開発環境・ステージング環境には、WEBとDBが入っており、プレビューと本番環境では、 WEBとDBで別のサーバーを使用しています。 これらを上記の図のように、Windows上の作業マシンからknife-soloを実行して、 本番への適応を行えるような仕組みの構築を進めています。 それでは、実際にどのように、構築を進めているかをご紹介
Android Studio最速入門~効率的にコーディングするための使い方 第1回Android Studio、そしてベースとなる「IntelliJ IDEA」とは何か? はじめに 5月15日にサンフランシスコで開催された米Google Inc.のイベント「Google I/O 2013」にて、Android向けの統合開発環境(以下、IDE)「Android Studio」が発表されました。Android Studioは、今までEclipseのプラグインとして提供されてきたADT Plugin(Android Development Tools)とは異なり、新たに「IntelliJ IDEA」をベースに作り直した全く新しいIDEです。 Android Studioのニュースは瞬く間に国内外に知れ渡り、そのニュースと共にIntelliJ IDEAという言葉も多く目にしたと思います。 Int
本書はインターフェイスを用いたソフトウェア設計の仕組みを解説する本です。ソリューションをインターフェイスのレベルにまで分解し、相互作用するインターフェイスを適切に実装して、しっかりとした構造を持つプログラムを作成する手法を学びます。インターフェイスの凝集度とは、継承の利点、リモートインターフェイスとの通信など、基礎となる知識から、開発プロセスについて、Web自動集約ツール、サービスレジストリなど、発展的な内容まで、「インターフェイスから考える設計」についてを包括的に学びます。 最初に完璧をめざすのではなく「まず動くものをつくる」というアジャイル開発手法でインターフェイス設計を学ぶ本書は、より信頼度の高いソフトウェアを開発したい技術者必携の一冊です。 監訳者まえがき はじめに I部 インターフェイスのすべて 1章 インターフェイスとは何か 1.1 ピザを注文するインターフェイス 1.1.1
Webサービスが沢山の人に受け入れられると、そのソースコードは長く運用ができる。外れると、気軽に廃棄することができる。 既にPHPやPerlで書かれたWebサービスが10年以上ビジネスに貢献している事例は沢山ある。Webシステムは気軽に作れて気軽に廃棄できます、というフェーズを超えている。そのコードが長期にわたって沢山の人に貢献し、かつ、それを維持することで沢山の人がお給料をもらっている事実が存在する。 もしそのサービスが、最初から10年動くことがわかっているなら、どういう技術を選ぶべきだろうか? Web業界の問題は「最新のネタが欲しい、新しい話題を作りたい」と思っている人たちの影響で、その構成要素である開発言語がレガシーな技術になってしまい、人材採用の足かせにになるという構造的問題が起きること。「10年持つ技術」とは?を考えると、「10年人気を維持できる技術」という論点にすり替わってしま
デキるプログラマだけが知っているコードレビュー7つの秘訣 7つの秘訣の1〜5は本当にそのとおりだと思います。 「怒り」って言葉を使っているところはなかなか画期的だと感じた。というのも僕は前から「人格攻撃に思われて」しまうような、コードで人を殴るようなことをしてしまう人が出てきてしまうのは何故かということを考えた時に、そこには「コードに対する怒り」があるからだろうなと思っていたからである。怒りがあるからこそ強く指摘しすぎてしまうことが起こりうる。 「怒り」というのはつまり「感情」である。であれば、「その『怒り』はコードに向けられたものであり、書いた人に対してのものではないので、その人に対しての攻撃ではない」というのは、理屈ではかろうじて通るかもしれないが、書いた人の「感情」的には通らないこともあることは理解したほうが良いと思う。 じゃあ怒らなければ良い、という話にはしたくなくて、どうしても怒
フロントエンドのパラダイムを参考にバックエンド開発を再考する / TypeScript による GraphQL バックエンド開発
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く