世界の国564933 views
高校国語788579 views
小学社会310627 views
いろは3013307 views
高校化学2925699 views
数学講師2890312 views
小学算数1200986 views
中学理科1631157 views
高校物理160488 views
Computer368427 views
Help
Tools
NewsSpreadsheetCalendarBookkeepingMarkdown TablesLanguage Model NewsLinux CommandsSlidesTier ListPen ToolIllustrationCrayonWatercolorPixel ArtASCII ArtPerspectiveEndless StairsGraphMind MapER DiagramFamily TreeMemeCurved TextImage EditorMosaicRetro FilterPencil SketchSwirl EffectLine ArtOCR/HighlighterMakeup EditorFaviconVideo TrimmerScrolling VideoVideo TitleColor PickerColor ExtractorBonfireFireworksCherry BlossomWater RippleWater SplashBreaking GlassGlass TextureFabric TextureWood GrainMarble TextureBrick Wall TextureMetal TextureWashi Paper TextureCardboard TextureCSS ButtonIcon MakerBar ChartGrouped Bar ChartStacked Bar ChartPie ChartLine ChartArea ChartStacked Area ChartScatter Plot3D Bar Chart3D Pie ChartBar Chart RaceBubble ChartPopulation PyramidPictogramEarningsCandlestick ChartInvestment RiskMortgage SimulatorCalculatorMatrix CalculatorFunction GraphPolynomial ExpansionVenn DiagramField VisualizerRubik's Cube Group TheoryTraveling SalesmanVoronoi and DelaunayFractalUniversity Entrance Exam MathColumn ArithmeticDraw Math FiguresArithmetic AnimationArithmetic Word ProblemsCounting with Tree DiagramsCube NetsRolling DiceCross SectionsMotion PathMechanicsWavesUniversity Entrance Exam Physics解析力学Quantum MechanicsStatistical MechanicsRelativityCelestial MechanicsAstrophysicsCosmologyElectromagnetic WavesCapacitorsLight and LensesThermodynamicsHow Semiconductors WorkMolecular StructuresAtomic OrbitalsElectrochemical CellsChemical EquilibriumCrystal LatticesBuffer pHOrganic Reaction MapPeriodic TableComplex IonsDNA Double HelixCell DivisionMembrane ChannelsNerve ImpulseMuscle ContractionHormones and HomeostasisRock ClassificationWeatherConstellationsSolar and Lunar Eclipses3D ModelingFloor PlanSeismic StructuresIntersection TurnMaglevCooking AnimationOrigamiLive Viewer CountGeoJSON MapRailway MapPopulation MapCrime MapLand Price MapSchool MapShrine and Castle MapHouse of Representatives MapWord MapSolitaireReversiHakoiri MusumeChessHamburgerRippleSlide Puzzle MakerNeon PinballNovel MakerJapanese Typing PracticePiano Score EditorMusic TheoryShogi StrategyPiano Rhythm Game

English

Swiftでアプリと画面を開発・設計するときに気をつけること

Swiftを使って一ヶ月しか経っていないが、C言語、C++、Java、Python、PHP、JavaScriptなどの主要な言語を扱ってきた人間として、Swiftを使うためにとるべき方針がいくつかわかってきた。それを以下にまとめる。

  • ストーリーボードを可能な限り使わない
  • しばらく更新されていないライブラリは積極的に使わない
  • 更新頻度の高いライブラリは積極的に使う
  • タブバーとナビゲーションバーの意味を理解する
  • 一つの画面に複雑なアイテムを入れるより、画面を遷移させる
  • ナビゲーションプッシュを徹底して使う
  • 調べる時間の95%はStackOverflow
  • 残りの3%はYouTubeの解説動画
  • 2016年以前の情報は調べない
  • クラスや関数の意味を日頃から理解するように努める

コードを徹底して書いてきた人はおそらく、理性を超えた部分で、ストーリーボードを拒否するだろう。実際、多くのページではストーリーボードを使わないやり方で複雑な問題を解説している。反対意見がメールでたくさん届くことを覚悟で言えば、ストーリーボードはプログラムコードの持つ「可読性」「修正の容易さと修正コストの少なさ」「コピー可能性」といったメリットを無視している。

Linux的、コマンド的、エディター的な文字の並びは、技術者にとって絵やペンに近いものである。

またSwiftは短期間で仕様が変わるため、2016年、できれば2017年以前の情報はあまり調べないほうがいい。単純な機能を調べるならともかく。

スケジュール管理

全体を少しずつ作り上げて、完璧主義を徹底して排除する。Swiftでは特に完璧主義が負の影響を持つようだ。Pythonがそもそも完璧主義的な側面を持っていることと対照的で、両者はおそらく真逆の言語的特性を持っている。

スケジュールの少なくとも2割は定期的な見直しに当てられるべきだ。つまりその時間で技術者はコードを破壊し、再構築する。Pythonなどの言語は再構築の半分は自己満足で終わる。しかしSwiftは、短いスパンで細かい仕様が変わっていることに加え、さまざまな言語的ルールが安定していないため、自分がかつて書いたコードが表面的理解のもとに書かれた赤点の駄作であるとすぐに気づく場合が多い。

最後に。Swift開発の生命線は、クラスの本質の理解にある。UICollectionView一つをとっても、使えば使うだけ要素を並べることの難しさを知ることになる。UICollectionViewは、要素を並べるときに生じやすい問題(コンパイル言語として避けて通れない問題)を先回りするように解決している。そこに気づくといくぶん開発時間が減るに違いない。

1. ストーリーボードを可能な限り使わない。2. しばらく更新されていないライブラリは積極的に使わない。3. 更新頻度の高いライブラリは積極的に使う。4. タブバーとナビゲーションバーの意味を理解する。5. 一つの画面に複雑なアイテムを入れるより、画面を遷移させる